Skip to content

Run result snapshots

Each time a case completes in a run (case-level mark or per-step mark that leaves the case no longer untested), the API appends a test_results row and companion test_result_step_snapshots rows. Frozen step attachments point at that result via snapshot_id.

Use this endpoint to render the read-only attempt panel in clients and integrations.

GET/api/v1/runs/{runUlid}/results/{resultUlid}

Requires viewer+ on the run’s project. Returns 404 when the run or result is outside the caller’s organization.

FieldDescription
resultThe append-only log row (status, executedAt, executedByUlid, hasSnapshot, …)
caseSnapshotted case header (titleSnapshot, caseNumber, pre/post conditions, …)
stepsFrozen per-step rows with status, actualResult, and attachments[]
legacytrue when no snapshot rows exist (pre-feature marks)

When legacy is true, steps is always [] and clients SHOULD show a fallback notice.

Terminal window
curl -sS \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/runs/$RUN/results/$RESULT"
{
"result": {
"ulid": "01J...",
"runUlid": "01J...",
"caseUlid": "01J...",
"status": "failed",
"durationMs": 120000,
"notes": null,
"executedByUlid": "01J...",
"executedAt": 1700000000000,
"hasSnapshot": true
},
"case": {
"runCaseUlid": "01J...",
"caseNumber": 12,
"titleSnapshot": "Checkout",
"description": null,
"precondition": null,
"postcondition": null,
"priority": "high"
},
"steps": [
{
"ulid": "01J...",
"runCaseStepUlid": "01J...",
"position": 1,
"action": "Pay",
"data": null,
"expected": "Receipt",
"status": "failed",
"actualResult": "HTTP 500",
"attachments": []
}
],
"legacy": false
}

GET /api/v1/runs/{runUlid}/results is unchanged except each item now includes hasSnapshot: boolean. History UIs typically filter to hasSnapshot: true for run-wide lists while per-case disclosures may show every row.