GET /runs/{run_id}/summary

fail_count is computed from TestResult rows, not from test.failed. test.failed only reflects whether the final progress status is canceled — it does not reflect regression test outcomes. Use this endpoint, not test.failed, to triage a run.

Path parameters

  • run_id integer Required

    Numeric run ID

    Minimum value is 1.

Responses

  • 200 application/json

    Run summary

    Hide response attributes Show response attributes object
    • run_id integer Required

      Minimum value is 1.

    • total_samples integer Required

      Total regression test results in this run.

      Minimum value is 0.

    • pass_count integer Required

      Minimum value is 0.

    • fail_count integer Required

      Computed from TestResult rows. NOT derived from test.failed, which only reflects cancellation state and is unreliable for determining whether regression tests actually passed.

      Minimum value is 0.

    • skipped_count integer

      Minimum value is 0.

    • missing_output_count integer

      Samples that produced no output when output was expected. Detected from the dummy TestResultFile(-1,-1,-1,'','error') row, not from got=null (which means output matched).

      Minimum value is 0.

    • error_count integer

      Minimum value is 0.

    • duration_ms integer | null

      Minimum value is 0.

    • triggered_by string | null

      Maximum length is 100.

  • 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}/summary
curl \
 --request GET 'https://sampleplatform.ccextractor.org/api/v1/runs/{run_id}/summary' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "run_id": 42,
  "total_samples": 42,
  "pass_count": 42,
  "fail_count": 42,
  "skipped_count": 42,
  "missing_output_count": 42,
  "error_count": 42,
  "duration_ms": 42,
  "triggered_by": "string"
}
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": {}
}