Get a run
GET/api/v1/runs/{id}
scope
runs:readOne run and its current state. status is what to poll: completed, failed and cancelled are terminal, and result is filled once it reaches one of them.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string (uuid) | Run id |
Request
curl "https://your-crm.example.com/api/v1/runs/3f9a1c2e-5b7d-4e8f-9a0b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $RAABTA_API_KEY"Response · 200 OK
{
"data": {
"id": "3f9a1c2e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
"assistant_id": "8f2c1d3e-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"assistant": {
"id": "8f2c1d3e-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"name": "Front desk",
"color": "#0ea5e9"
},
"status": "completed",
"goal": "Follow up with Ayesha about her missed appointment and offer to rebook.",
"trigger": {
"type": "manual",
"trigger_id": null,
"trigger_name": null,
"event_key": null
},
"contact_id": "9d7e4c11-5a2b-4f7c-8e3d-2a1b0c9d8e7f",
"conversation_id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"parent_run_id": null,
"root_run_id": "3f9a1c2e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
"depth": 0,
"result": {
"outcome": "success",
"summary": "Rebooked for Saturday at 11:00."
},
"tick_count": 4,
"cost_usd": 0.0182,
"error_code": null,
"error_message": null,
"started_at": "2026-09-02T09:00:00.000Z",
"ended_at": "2026-09-02T09:03:12.000Z",
"created_at": "2026-09-02T09:00:00.000Z"
}
}Response
Wrapped in { data: … }| Name | Type | Description |
|---|---|---|
idrequired | string (uuid) | Run id |
assistant_idrequired | string (uuid) | The assistant running |
assistantrequired | object | null | The assistant, or null if it has since been deleted |
assistant.idrequired | string (uuid) | Assistant id |
assistant.namerequired | string | Assistant name |
assistant.colorrequired | string | null | Accent colour |
statusrequired | string (enum) | Where the run is in its lifecyclequeuedrunningwaiting_replywaiting_approvalwaiting_childrencompletedfailedcancelled |
goalrequired | string | What this run was asked to do |
triggerrequired | object | Where the run came from |
trigger.typerequired | string | One of manual, inbound_message, schedule, event, webhook or delegation |
trigger.trigger_idrequired | string (uuid) | null | The assistant trigger, when one fired it |
trigger.trigger_namerequired | string | null | That trigger name |
trigger.event_keyrequired | string | null | The event key, for an event trigger |
contact_idrequired | string (uuid) | null | The contact it concerns, if any |
conversation_idrequired | string (uuid) | null | The thread it may answer in, if any |
parent_run_idrequired | string (uuid) | null | Set when this is a sub-agent of another run |
root_run_idrequired | string (uuid) | null | The top of the delegation tree |
depthrequired | integer | 0 for a root run |
resultrequired | object | null | Present once the run has ended |
result.outcomerequired | string | null | How it ended, in one word |
result.summaryrequired | string | null | One line on what happened |
tick_countrequired | integer | Model turns this run has taken |
cost_usdrequired | number | Billed AI spend attributed to this run |
error_coderequired | string | null | Machine code when the run failed |
error_messagerequired | string | null | Operator-facing failure text |
started_atrequired | string (date-time) | When the run was created |
ended_atrequired | string (date-time) | null | When it reached a terminal status |
created_atrequired | string (date-time) | When the row was written |
Errors
| Status | Code | When |
|---|---|---|
| 400 | validation_error | The body or query failed validation. `details` lists each failing field with a `path` and a `message`. |
| 401 | unauthorized | No usable API key: the Authorization header is missing or malformed, or the key is unknown, revoked or expired. The three are deliberately indistinguishable. |
| 403 | forbidden | The key is valid but lacks the scope this endpoint requires, or the request came from an address outside the key’s IP allowlist. The message says which. |
| 403 | account_suspended | The account this key belongs to is suspended. Rotating the key will not help; contact support. |
| 404 | not_found | No such resource in this account. A resource that exists in another account also returns this. |
| 429 | rate_limited | The per-key budget, or the per-IP budget for failed authentication, is exhausted. Honour `Retry-After` before retrying. |
| 500 | internal | Something failed on our side. Safe to retry with the same Idempotency-Key; quote `request_id` if it persists. |