Read job log lines
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).
/api/logs/{id}Authorization
bearerAuth Session token from sling login.
In: header
Path Parameters
Prefixed log target: run_, job_, or att_.. A malformed shape is a 400.
1 <= lengthQuery Parameters
GitHub organization login. Scopes the request to your membership.
1 <= lengthNarrow a run to one job, by job name.
RE2 regular expression. Only matching lines are returned.
Only the last N of the log, e.g. 5m or 2h.
Include a per-line timestamp. Off by default.
Opaque keyset cursor from a prior page's next_cursor.
1 <= lengthLines per page. Page with cursor.
1 <= value <= 5000Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/logs/run_1234567890?org=acme"{ "lines": [ { "job_id": "85933007091", "job_name": "typecheck", "line_number": 812, "timestamp": "2026-07-22T09:15:40.118Z", "log_data": "src/index.ts(42,7): error TS2322: Type 'string' is not assignable to type 'number'." }, { "job_id": "85933007091", "job_name": "typecheck", "line_number": 813, "timestamp": "2026-07-22T09:15:40.119Z", "log_data": "##[error]Process completed with exit code 2." } ], "has_more": true, "next_cursor": "eyJqb2JfaWQiOiI4NTkzMzAwNzA5MSIsImxpbmUiOjgxM30"}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).
Diagnose a failed job or run GET
Classifies why a CI job failed (sling why) — step_failure / timeout / cancelled / terminated / oom / infra / network_egress / hang / unknown — with evidence, suggested actions, and a downstream-agent prompt, read deterministically from the CI facts store. No LLM in the request path.