GET /api/v1/chats/{chatId}/runs/{runId}
Send and completion return before the model finishes. Poll this route. The public snapshot does not include a realtime token.
Status
QUEUED → THINKING → WORKING → WAITING or STOPPING → COMPLETE, FAILED, or CANCELLED.
string
Terminal values are
COMPLETE, FAILED, and CANCELLED.string
What the loop is doing now. Null when idle.
integer
Coarse progress, 0–100.
object[]
Each tool call:
toolCallId, toolName, status (PENDING, RUNNING, SUCCESS, FAILED, CANCELLED), and errorMessage.object
Present while the turn is paused.
type is PLAN, CREDIT, MEDIA, or OPTIONS. An unanswered waitpoint expires on read so a stale overlay does not stick. timeoutAt is when it expires.object
Assistant message so far:
id, status, and contentBlocks (text, thinking, tool use, tool result, assets).string
Set when the turn failed. Pair with
errorMessage.string
Safe message you can show. Partial text and successful tool results stay on the snapshot.
Credit exhaustion stops the turn safely. Completed tool work stays on the snapshot. The run ends
FAILED rather than dropping the chat.409 RUN_ACTIVE.