Skip to content

Runs API

Run APIs execute suites and expose status, metrics, samples, and verdicts.

Trigger a run. See Suites API for request and response details.

Get run detail with targets.

Terminal window
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 comparison verdict and CI exit code.

Terminal window
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:

CheckAppears whenWhat it measures
latency_p95AlwaysAbsolute p95 latency vs threshold
latency_vs_referenceReference endpoint existsCandidate p95 drift vs reference
correctnessReference exists, correctness_enabled is trueResponse match rate
latency_vs_baselineBaseline run existsCandidate p95 drift vs baseline