List workflow jobs
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.
/api/jobsAuthorization
bearerAuth Session token from sling login.
In: header
Query Parameters
GitHub organization login. Required — a job listing is always org-scoped.
1 <= lengthEvery job in one run. Alternative to scoping by repo and/or window.
Bare repository name, without the org prefix.
Terminal outcome. Repeatable: ?conclusion=failure&conclusion=timed_out.
Relative lookback, e.g. 30d. Mutually exclusive with from/to and month.
Start of the range, inclusive. Required with to.
End of the range, exclusive. Required with from.
A whole calendar month, YYYY-MM.
Rows per page. Page with cursor.
1 <= value <= 100Opaque keyset cursor from a prior page's next_cursor.
1 <= lengthResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/jobs?org=acme"{ "jobs": [ { "job_id": "85933007091", "run_id": "28961231706", "name": "typecheck", "status": "completed", "conclusion": "failure", "label": "starsling-ubuntu-24.04-8", "runner_id": "611593", "attempt": 1, "duration_ms": 89000, "created_at": "2026-07-22T09:14:11.000Z" } ], "has_more": false}Get a run's jobs GET
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).
Get a job's steps GET
One workflow job's attempts, each with its step list (sling jobs show). A job id is one attempt; this resolves it to the logical job (run_id, job_name) and returns every attempt with its steps. Authenticated; a job in another org 404s (opaque).