Get a job's steps
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).
/api/jobs/{id}Authorization
bearerAuth Session token from sling login.
In: header
Path Parameters
GitHub job 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/jobs/85933007091?org=acme"{ "run_id": "28961231706", "run_url": "https://github.com/acme/api/actions/runs/28961231706", "job_name": "typecheck", "attempts": [ { "attempt_id": "att_85933007091.1", "attempt": 1, "status": "completed", "conclusion": "failure", "runner_id": "611593", "label": "starsling-ubuntu-24.04-8", "duration_ms": 89000, "steps": [ { "name": "Set up job", "number": 1, "status": "completed", "conclusion": "success", "duration_ms": 2000 }, { "name": "Run bun run typecheck", "number": 4, "status": "completed", "conclusion": "failure", "duration_ms": 61000 } ] } ]}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.
Read job log lines GET
Ingested job-log lines for a completed attempt (sling logs), filtered SERVER-SIDE so an agent reads only what matters: grep (RE2), since (the log tail), job (narrow a run to one job). A run id reads all its jobs; a job/attempt id reads one attempt. Keyset-paginated via an opaque cursor. Authenticated; a run/job in another org 404s (opaque).