RaabtaHQ
List a run’s events

List a run’s events

GET/api/v1/runs/{id}/events

scope runs:readPaginated

The run’s timeline, newest first — every tick, message, tool decision, handoff and failure. seq is a gap-free counter within the run: sort and de-duplicate on it rather than on created_at, which can tie. Payloads carry metadata, never message bodies; read the conversation for those.

Path parameters

NameTypeDescription
idrequired
string (uuid)Run id

Query parameters

NameTypeDescription
limitoptional
integerPage size, 1–100Default: 20
cursoroptional
stringThe `next_cursor` from the previous page
event_typeoptional
stringOnly events of this type
Request
curl "https://your-crm.example.com/api/v1/runs/3f9a1c2e-5b7d-4e8f-9a0b-1c2d3e4f5a6b/events" \
  -H "Authorization: Bearer $RAABTA_API_KEY"
Response · 200 OK
{
  "data": [
    {
      "id": "0a1b2c3d-4e5f-4a6b-8c7d-8e9f0a1b2c3d",
      "run_id": "3f9a1c2e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
      "seq": 1,
      "event_type": "run_queued",
      "payload": {
        "trigger_type": "manual"
      },
      "created_at": "2026-09-02T09:00:00.000Z"
    }
  ],
  "meta": {
    "next_cursor": null,
    "has_more": false,
    "limit": 20
  }
}

Response

Wrapped in { data: [...], meta }
NameTypeDescription
idrequired
string (uuid)Event id
run_idrequired
string (uuid)The run this belongs to
seqrequired
integerGap-free position in this run feed. Sort and de-duplicate on this rather than on created_at
event_typerequired
stringrun_queued, tick_started, assistant_step, message_sent, handed_off, error, and more
payloadrequired
map<string, any>Per-type detail. The keys vary by event_type and may gain fields without a version bump
created_atrequired
string (date-time)When the event was recorded

Errors

StatusCodeWhen
400bad_requestThe request could not be parsed: malformed JSON, an invalid cursor, or a query parameter of the wrong shape.
400validation_errorThe body or query failed validation. `details` lists each failing field with a `path` and a `message`.
401unauthorizedNo usable API key: the Authorization header is missing or malformed, or the key is unknown, revoked or expired. The three are deliberately indistinguishable.
403forbiddenThe 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.
403account_suspendedThe account this key belongs to is suspended. Rotating the key will not help; contact support.
404not_foundNo such resource in this account. A resource that exists in another account also returns this.
429rate_limitedThe per-key budget, or the per-IP budget for failed authentication, is exhausted. Honour `Retry-After` before retrying.
500internalSomething failed on our side. Safe to retry with the same Idempotency-Key; quote `request_id` if it persists.