Get a run's jobs
The run → jobs → attempts hierarchy for a single run (sling runs show): the run header plus each logical job (stable by name) with its attempts oldest → newest. Authenticated; the run id is resolved against the CI facts store within the caller's org. A run in another org 404s (opaque).
/api/runs/{id}Authorization
bearerAuth Session token from sling login.
In: header
Path Parameters
GitHub run id. A non-numeric id resolves to 404, not 422.
1 <= lengthQuery Parameters
GitHub organization login. Scopes the request to your membership.
1 <= lengthResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/runs/28961231706?org=acme"{ "run": { "run_id": "28961231706", "run_url": "https://github.com/acme/api/actions/runs/28961231706", "workflow_path": ".github/workflows/ci.yml", "branch": "main", "trigger": "push", "status": "completed", "conclusion": "failure", "created_at": "2026-07-22T09:14:03.000Z", "duration_ms": 412000 }, "jobs": [ { "job_name": "typecheck", "attempts": [ { "attempt_id": "att_88392691097.1", "attempt": 1, "status": "completed", "conclusion": "failure", "runner_id": "611593", "label": "starsling-ubuntu-24.04-8", "duration_ms": 89000 } ] } ]}List workflow runs GET
Filtered workflow-run listing (sling runs list): branch / status / conclusion / trigger / workflow_path / runner-label / time-window filters over the CI facts store, keyset-paginated via an opaque cursor. Authenticated; scoped to the caller's orgs by membership.
List workflow jobs GET
Workflow-job listing (sling jobs list): jobs in one run (run_id), a repo, and/or a time window — at least one of the three is required — filtered by conclusion, keyset-paginated via an opaque cursor. One row per job attempt. Authenticated; scoped to the caller's orgs by membership.