Runs API
Run APIs execute suites and expose status, metrics, samples, and verdicts.
Endpoints
Section titled “Endpoints”POST /suites/:suiteId/runs
Section titled “POST /suites/:suiteId/runs”Trigger a run. See Suites API for request and response details.
GET /runs/:runId
Section titled “GET /runs/:runId”Get run detail with targets.
curl "https://api.onchainprobe.com/v1/runs/$RUN_ID" \ -H "Authorization: Bearer $ONCHAINPROBE_API_KEY"{ "id": "c9eb01d4-8daf-4c2e-ea7b-9fbd3b5c7e8f", "test_suite_id": "a7c9ebf2-6b8d-4a0c-ce5f-7d9b1f3a5c6d", "triggered_by": "api", "status": "success", "requested_at": "2026-02-11T19:10:00.000Z", "claimed_at": "2026-02-11T19:10:01.000Z", "started_at": "2026-02-11T19:10:02.000Z", "finished_at": "2026-02-11T19:10:24.000Z", "retry_count": 0, "failure_reason": null, "baseline_run_id": null, "acknowledged_count": 0, "metadata": {}, "config_snapshot": {}, "stats": { "calls": { "total": 120, "successful": 118, "failed": 2 }, "tests": { "successful": 58, "failed": 2 }, "latency": { "successful": { "avg_ms": 142, "p50_ms": 110, "p95_ms": 310, "p99_ms": 620, "sample_count": 118 }, "all": { "avg_ms": 158, "p50_ms": 115, "p95_ms": 340, "p99_ms": 680, "sample_count": 120 } } }, "targets": [ { "id": "f1a2b3c4-0001-4000-8000-000000000001", "endpoint_id": "d4f6b8ca-3e5a-4d7f-9b2c-4a6e8c0d2e3f", "endpoint_name": "rpc-reth-a", "role": "primary", "order_index": 0, "status": "success", "metadata": {} }, { "id": "f1a2b3c4-0001-4000-8000-000000000002", "endpoint_id": "e5a7c9db-4f6b-4e8a-ac3d-5b7f9d1e3a4b", "endpoint_name": "rpc-besu-b", "role": "primary", "order_index": 1, "status": "success", "metadata": {} } ], "retry_history": [], "suite": { "id": "a7c9ebf2-6b8d-4a0c-ce5f-7d9b1f3a5c6d", "name": "prod-smoke-5m", "config": {} }, "chain": { "id": "c3e5a7b9-2d4f-4c6e-8a1b-3f5d7e9b1c2d", "name": "L2 Staging", "slug": "l2-staging", "explorer_url": "https://explorer.staging.example" }}GET /runs/:runId/verdict
Section titled “GET /runs/:runId/verdict”Get comparison verdict and CI exit code.
curl "https://api.onchainprobe.com/v1/runs/$RUN_ID/verdict" \ -H "Authorization: Bearer $ONCHAINPROBE_API_KEY"{ "verdict": "pass", "summary": "All checks passed.", "checks": [ { "name": "latency_p95", "status": "pass", "message": "p95 latency: 142ms (threshold: 700ms)", "details": { "p95": 142, "threshold": 700 } }, { "name": "latency_vs_reference", "status": "pass", "message": "Candidate p95 3% lower than reference (threshold: 50%)", "details": { "candidate_p95_ms": 142, "reference_p95_ms": 146, "vs_reference_pct": -3 } } ], "reference_comparison": { "endpoint_id": "d4f6b8ca-3e5a-4d7f-9b2c-4a6e8c0d2e3f", "endpoint_name": "rpc-reth-a", "status": "pass", "latency": { "candidate_p50_ms": 110, "candidate_p95_ms": 142, "candidate_p99_ms": 190, "reference_p95_ms": 146, "vs_reference_pct": -3, "by_method": [], "status": "pass", "message": "Candidate p95 within reference threshold" } }, "baseline_comparison": null, "thresholds": { "latency_p95_max_ms": 700, "latency_regression_max_pct": 20, "latency_vs_reference_max_pct": 50, "correctness_min_pct": 100, "correctness_enabled": true }, "dashboard_url": "https://dashboard.onchainprobe.com/runs/c9eb01d4-8daf-4c2e-ea7b-9fbd3b5c7e8f", "markdown_summary": "All checks passed.", "exit_code": 0}Verdict checks:
| Check | Appears when | What it measures |
|---|---|---|
latency_p95 | Always | Absolute p95 latency vs threshold |
latency_vs_reference | Reference endpoint exists | Candidate p95 drift vs reference |
correctness | Reference exists, correctness_enabled is true | Response match rate |
latency_vs_baseline | Baseline run exists | Candidate p95 drift vs baseline |