# Get pass/fail summary for a run **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. ## Servers - Production: https://sampleplatform.ccextractor.org/api/v1 (Production) ## Authentication methods - Bearer auth ## Parameters ### Path parameters - **run_id** (integer) Numeric run ID ## Responses ### 200 Run summary #### Body: application/json (object) - **run_id** (integer) - **total_samples** (integer) Total regression test results in this run. - **pass_count** (integer) - **fail_count** (integer) Computed from TestResult rows. NOT derived from test.failed, which only reflects cancellation state and is unreliable for determining whether regression tests actually passed. - **skipped_count** (integer) - **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). - **error_count** (integer) - **duration_ms** (integer | null) - **triggered_by** (string | null) ### 401 Missing, expired, or invalid bearer token #### Body: application/json (object) - **code** (string) Machine-readable error code (snake_case) - **message** (string) Human-readable error summary - **details** (object) Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available. ### 404 Resource not found #### Body: application/json (object) - **code** (string) Machine-readable error code (snake_case) - **message** (string) Human-readable error summary - **details** (object) Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available. ### 429 Too many requests. Retry after the indicated number of seconds. #### Headers - **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 #### Body: application/json (object) - **code** (string) Machine-readable error code (snake_case) - **message** (string) Human-readable error summary - **details** (object) Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available. ### default Unexpected server error #### Body: application/json (object) - **code** (string) Machine-readable error code (snake_case) - **message** (string) Human-readable error summary - **details** (object) Structured context for the error. Always an object, never null. Empty object {} when no additional detail is available. [Powered by Bump.sh](https://bump.sh)