GET /runs/{run_id}

Returns normalized run status derived from TestProgress rows. status=canceled covers both explicit cancellation and infrastructure errors (the underlying model does not distinguish them).

Path parameters

  • run_id integer Required

    Numeric run ID

    Minimum value is 1.

Responses

  • 200 application/json

    Run details

    Hide response attributes Show response attributes object
    • run_id integer Required

      Minimum value is 1.

    • status string Required

      Normalized status. Derived from TestProgress rows and TestResult outcomes. status=canceled covers both explicit cancellation and infrastructure error (the underlying model conflates them).

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

    • repository string Required

      Maximum length is 100.

    • branch string | null

      Maximum length is 100.

    • commit_sha string Required

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

    • commit_short string

      Maximum length is 10.

    • pull_request integer | null

      Minimum value is 1.

    • platform string Required

      Values are linux or windows.

    • run_errors string

      Values are true, false, or unknown.

    • triggered_by string | null

      Maximum length is 100.

    • created_at string(date-time) Required
    • queued_at string(date-time) | null
    • started_at string(date-time) | null
    • completed_at string(date-time) | null
    • duration_ms integer | null

      Minimum value is 0.

  • 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.

  • 404 application/json

    Resource not found

    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/{run_id}
curl \
 --request GET 'https://sampleplatform.ccextractor.org/api/v1/runs/{run_id}' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "run_id": 42,
  "status": "queued",
  "repository": "string",
  "branch": "string",
  "commit_sha": "string",
  "commit_short": "string",
  "pull_request": 42,
  "platform": "linux",
  "run_errors": true,
  "triggered_by": "string",
  "created_at": "2026-05-04T09:42:00Z",
  "queued_at": "2026-05-04T09:42:00Z",
  "started_at": "2026-05-04T09:42:00Z",
  "completed_at": "2026-05-04T09:42:00Z",
  "duration_ms": 42,
  "links": {
    "additionalProperty1": "https://example.com",
    "additionalProperty2": "https://example.com"
  }
}
Response examples (401)
{
  "code": "unauthorized",
  "message": "Bearer token is missing, expired, or invalid.",
  "details": {}
}
Response examples (404)
{
  "code": "not_found",
  "message": "Run 9317 not found.",
  "details": {
    "resource": "run",
    "id": 9317
  }
}
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": {}
}