GET /runs

Public read. The underlying table is capped at the 50 most recent runs in the current implementation; this endpoint adds full pagination. Sorted by -created_at by default (newest first).

Query parameters

  • limit integer

    Maximum number of results to return (1–100)

    Minimum value is 1, maximum value is 100. Default value is 50.

  • offset integer

    Number of results to skip for pagination

    Minimum value is 0. Default value is 0.

  • status string

    Normalized run status. Derived from TestProgress rows and TestResult outcomes. The underlying TestStatus model stores only preparation, testing, completed, and canceled (where canceled covers both canceled and error). This enum is the normalized API contract.

    Values are queued, running, pass, fail, canceled, error, or incomplete.

  • branch string

    Maximum length is 100.

  • commit_sha string

    Full 40-character SHA-1 commit hash

    Format should match the following pattern: ^[a-fA-F0-9]{40}$.

  • repository string

    GitHub repository in owner/repo format

    Maximum length is 100. Format should match the following pattern: ^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$.

  • platform string

    Values are linux or windows.

  • created_after string(date-time)

    ISO 8601 datetime. Returns runs created after this time.

  • created_before string(date-time)

    ISO 8601 datetime. Returns runs created before this time.

  • sort string

    Sort field. Prefix with - for descending order.

    Values are created_at, -created_at, started_at, -started_at, run_id, or -run_id. Default value is -created_at.

Responses

  • 200 application/json

    Paginated runs

    Hide headers attributes Show headers attributes
    • X-RateLimit-Limit

      Maximum requests allowed in the current window

    • X-RateLimit-Remaining

      Requests remaining in the current window

    • X-RateLimit-Reset

      Unix timestamp when the rate limit window resets

    Hide response attributes Show response attributes object
    • data array Required
    • pagination object Required
      Hide pagination attributes Show pagination attributes object
      • limit integer Required

        Minimum value is 1.

      • offset integer Required

        Minimum value is 0.

      • total integer Required

        Minimum value is 0.

      • next_offset integer | null

        Minimum value is 0.

  • 400 application/json

    Request body or query parameters failed schema validation

    Hide response attributes Show response attributes object
    • code string Required

      Machine-readable error code (snake_case)

      Maximum length is 100.

    • message string Required

      Human-readable error summary

      Maximum length is 500.

    • details object Required

      Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available.

      Additional properties are allowed.

  • 401 application/json

    Missing, expired, or invalid bearer token

    Hide response attributes Show response attributes object
    • code string Required

      Machine-readable error code (snake_case)

      Maximum length is 100.

    • message string Required

      Human-readable error summary

      Maximum length is 500.

    • details object Required

      Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available.

      Additional properties are allowed.

  • 429 application/json

    Too many requests. Retry after the indicated number of seconds.

    Hide headers attributes Show headers attributes
    • Retry-After integer

      Seconds to wait before retrying

    • X-RateLimit-Limit

      Maximum requests allowed in the current window

    • X-RateLimit-Remaining

      Requests remaining in the current window

    • X-RateLimit-Reset

      Unix timestamp when the rate limit window resets

    Hide response attributes Show response attributes object
    • code string Required

      Machine-readable error code (snake_case)

      Maximum length is 100.

    • message string Required

      Human-readable error summary

      Maximum length is 500.

    • details object Required

      Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available.

      Additional properties are allowed.

  • default application/json

    Unexpected server error

    Hide response attributes Show response attributes object
    • code string Required

      Machine-readable error code (snake_case)

      Maximum length is 100.

    • message string Required

      Human-readable error summary

      Maximum length is 500.

    • details object Required

      Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available.

      Additional properties are allowed.

GET /runs
curl \
 --request GET 'https://sampleplatform.ccextractor.org/api/v1/runs' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
# Headers

# Payload
{
  "data": [],
  "pagination": {
    "limit": 42,
    "offset": 42,
    "total": 42,
    "next_offset": 42
  }
}
Response examples (400)
{
  "code": "validation_error",
  "message": "Request failed schema validation.",
  "details": {
    "fields": {
      "commit_sha": "Must match pattern ^[a-fA-F0-9]{40}$",
      "platform": "Must be one of [linux, windows]"
    }
  }
}
Response examples (401)
{
  "code": "unauthorized",
  "message": "Bearer token is missing, expired, or invalid.",
  "details": {}
}
Response examples (429)
{
  "code": "rate_limited",
  "message": "Rate limit exceeded. Retry after 30 seconds.",
  "details": {
    "retry_after": 30,
    "limit": 120,
    "window": "60s"
  }
}
Response examples (default)
{
  "code": "not_found",
  "message": "Run 9317 not found.",
  "details": {}
}