Syndai Docs

List runs

GET
/api/v1/external/coding/runs

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.

Authorization

CustomerApiKey
headerAuthorizationBearer <API Key>

Customer API key sent as a bearer token

Query Parameters

limit?integer
Default50
after?string|null
customer_id?|null
coding_repository_id?|null
needs?|
Value in"owner"null

Response Body

Request fulfilled, document follows

application/json
  1. response
next_cursor?string|null
runs*array<>
Example Request
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    }  ]}