
Get an Origin Check Run via the API
Fetch one check run by its server-assigned id with GET https://api.cursor.com/v1/origin/repos/{ownerSlug}/{repoName}/check-runs/{checkRunId}. Official reference: Origin API → Checks / Get Check Run (OpenAPI OriginService_GetCheckRun).
Origin is in Early Beta and subject to change. Authenticate with an installation access token (oit_…) or a user access token that carries repository:checks:read. Availability: Early Beta per the API overview.
The path takes the run id Origin returned when you upserted or listed the run (cr_…). A 404 does not tell you whether the id is missing or merely invisible to this credential.
Cost: 1 point against the principal budget (ordinary read).
Path parameters
| Param | Required | Meaning |
|---|---|---|
ownerSlug |
yes | Owning entity's unique slug |
repoName |
yes | Repo name, unique to the owner |
checkRunId |
yes | Server-assigned check-run id (cr_…) |
curl --request GET \
--url 'https://api.cursor.com/v1/origin/repos/OWNER_SLUG/REPO_NAME/check-runs/cr_01k2ja2000e0080000000000g7' \
--header 'Authorization: Bearer YOUR_ORIGIN_TOKEN'
Response
The body is a CheckRun: server id, repository reference, containing suite id (crg_…), head SHA, stable key, display name, status, optional conclusion, detailsUrl, external and server timestamps, externalId, actor, and output when set. On a re-requested run you may also see isRerequestable, rerequestedAt, and rerequestedBy.
Example shape from the OpenAPI:
{
"id": "cr_01k2ja2000e0080000000000g7",
"repository": {
"id": "repo_01k2ja2000e0080000000000q4",
"name": "rocket",
"owner": {
"slug": "acme",
"id": "ns_01k2ja2000e0080000000000p3",
"type": "team"
}
},
"checkSuite": {
"id": "crg_01k2ja2000e0080000000000h8"
},
"sha": "9a41f0c3d2b8e7f6a5c4d3e2f1b0a9c8d7e6f5a4",
"key": "ci-8842-unit-tests",
"name": "unit-tests",
"status": "completed",
"conclusion": "success",
"detailsUrl": "https://ci.acme.dev/runs/8842",
"externalUpdatedAt": "2026-08-02T14:44:30Z",
"startedAt": "2026-08-02T14:40:00Z",
"completedAt": "2026-08-02T14:44:30Z",
"createdAt": "2026-08-01T09:30:00Z",
"updatedAt": "2026-08-02T14:45:00Z",
"externalId": "run-8842",
"actor": {
"user": {
"id": "user_01k2ja2000e0080000000000c3",
"email": "jane@acme.dev"
}
},
"output": {
"title": "Unit tests",
"summary": "128 tests passed.",
"text": "All suites green."
}
}
Pair this read with the upsert how-to when you need the cr_… id after posting status, then poll until status is completed.
Base URL: https://api.cursor.com/v1/origin.