List runs
GET
List coding runs, keyset-paginated over the full run set for a chunked, resumable bootstrap. Ordering is server-owned: newest created_at, then id descending, never reshuffled between pages, so a re-delivered row lands in exactly one page. limit is the page size (default 50, clamped to 200; always follow next_cursor). Pass the prior response's opaque next_cursor as after to fetch the next page; next_cursor is null at the end. Each run carries its per-viewer attention state. coding_repository_id narrows to one project; needs=owner to the runs waiting on the owner: a question, a held landing, or a finished pull request to review or put live.
CustomerApiKeyheader
AuthorizationBearer <API Key>Customer API key sent as a bearer token
limit?integerDefault
50after?string|nullcustomer_id?|nullcoding_repository_id?|nullneeds?|Value in
"owner"nullRequest fulfilled, document follows
application/json- response
next_cursor?string|nullruns*array<>curl -X GET 'https://api.syndai.ai/api/v1/external/coding/runs'Example Response
{ "next_cursor": null, "runs": [ { "artifact_retention_profile": "standard", "autonomy_mode": "review", "base_branch": "main", "coding_project_id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b", "coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50", "created_at": "2026-10-27T09:00:00Z", "current_phase": "execute", "egress_profile": "managed_default", "external_request_id": "ticket-4812", "id": "3f9c2b7a-6d1e-4c8b-9a2f-1b7e5d4c3a21", "pr_url": null, "title": "Add a dark mode toggle to the header", "updated_at": "2026-10-27T09:04:12Z", "validation_iteration": 0 } ]}