---
title: "Get run status events"
method: GET
path: "/runs/{run_id}/events"
---

# Get run status events

`GET /runs/{run_id}/events`

## Request

- Base URL: `https://api.bamf.ai/v1`
- URL: `https://api.bamf.ai/v1/runs/{run_id}/events`
- Auth: HTTP bearer

Returns the live, named status of an agent run or API job: the run, its sub-agents, tool and model calls, each with status, partial result, cost, and timing. Requires agent_sessions:read. Pass after_sequence to fetch only events after a given sequence, or set Accept to text/event-stream for a resumable live stream instead of a single snapshot.

## Path parameters

- `run_id` string, required

## Query parameters

- `after_sequence` integer

## Headers

- `Last-Event-ID` string

## Response `200`

Run status snapshot and events, or (when Accept is text/event-stream) a live SSE stream of run.node events whose id is the sequence, ending with a run.end event carrying the final snapshot. The SSE stream closes after roughly 55 seconds so clients reconnect with Last-Event-ID.

- object
  - `data` object
    - `run` RunStatusSnapshot: The current folded tree for a run, produced from its run.node events.
      - `run_id` string
      - `status` 'queued' | 'running' | 'waiting_approval' | 'succeeded' | 'failed' | 'cancelled' | 'skipped' | 'null', nullable
      - `last_sequence` integer
      - `nodes` RunNodeState[]
        - `run_id` string
        - `node_id` string
        - `parent_node_id` string, nullable
        - `node_kind` 'run' | 'subagent' | 'tool' | 'model' | 'responder' | 'router'
        - `name` string
        - `role` string, nullable
        - `task` string, nullable
        - `status` 'queued' | 'running' | 'waiting_approval' | 'succeeded' | 'failed' | 'cancelled' | 'skipped'
        - `partial` string, nullable
        - `cost` object, nullable
          - `input_tokens` integer
          - `output_tokens` integer
          - `usd` number, nullable
        - `timing` object
          - `started_at` string, date-time, nullable
          - `ended_at` string, date-time, nullable
          - `ttft_ms` number, nullable
        - `route_decision_id` string, nullable
        - `last_sequence` integer
        - `children` RunNodeState[]
    - `events` RunNodeEvent[]
      - `schema_version` 'bamf.agent-stream/v1'
      - `type` 'run.node'
      - `turn_id` string
      - `sequence` integer
      - `run_id` string
      - `node_id` string
      - `parent_node_id` string, nullable
      - `node_kind` 'run' | 'subagent' | 'tool' | 'model' | 'responder' | 'router'
      - `name` string: User-facing name, e.g. "Researcher", "Analytics".
      - `role` string, nullable
      - `task` string, nullable
      - `status` 'queued' | 'running' | 'waiting_approval' | 'succeeded' | 'failed' | 'cancelled' | 'skipped'
      - `partial` string, nullable
      - `cost` object, nullable
        - `input_tokens` integer
        - `output_tokens` integer
        - `usd` number, nullable
      - `timing` object
        - `started_at` string, date-time, nullable
        - `ended_at` string, date-time, nullable
        - `ttft_ms` number, nullable
      - `route_decision_id` string, nullable

## Other responses

- `400`: run_id is not a valid run identifier.
- `401`: Missing or invalid bearer token.
- `403`: agent_sessions:read scope required.
- `404`: Run not found.

---

[API](https://skmtc.dev/bamf/apis/bamf-developer-platform-api.md) · [All operations](https://skmtc.dev/bamf/apis/bamf-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bamf/apis/bamf-developer-platform-api/revisions/a390dd3294bd?raw)
