List a workflow's runs
Newest first. The run log is the record of what actually executed, so this is a plain read of it; nothing is derived.
Newest first. The run log is the record of what actually executed, so this is a plain read of it; nothing is derived.
Authorization
api_key workflows:readAn atk_-prefixed API key, created under Settings → API keys.
In: header
Scope: workflows:read
Path Parameters
Workflow id
uuidQuery Parameters
How many runs to return, newest first. Defaults to 20; clamped to 1..=200.
int64Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/workflows/497f6eca-6276-4993-bfeb-53cbbbba6f08/runs"[ { "entry": "string", "error": "string", "event": {}, "finished_at": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f", "kind": "string", "logs": "string", "revision_id": "f8f7f022-982b-4bef-ba7d-4bb808fdbe2a", "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82", "started_at": "2019-08-24T14:15:22Z", "status": "string", "workflow_id": "03e70e31-d7a4-4401-a629-6a4b6096cdfe" }]Patch a workflow's input state PATCH
A merge patch against the shared `input` half: keys absent from the body keep their value, keys set to `null` are removed. Only paths the current revision's contract declares are writable (`input.scratch` is always free-form), so an undeclared path is a `400` naming it and leaves state untouched. `version` is the `input` version the caller read from `GET /v1/workflows/{id}/state` — it says which state the patch was composed against. Because `input` is patched per path, a version that has moved on since does not throw the write away: the store re-reads and re-applies the patch against the live value, so a rival's edit to another path survives rather than being overwritten. Only a write that loses every one of those compare-and-swap retries is refused with `409`, which is a signal about contention, not about a stale read.
Read a workflow's state GET
Returns both halves: the shared `input` state and **the caller's own** private `ui` state. `ui` is per user by construction, so this read never returns another account's — a key with write access to the workflow still only ever sees its own. `version` guards `input`; carry it into `PATCH /v1/workflows/{id}/input`.