?agent_version=staging to chat with the staging version of the agent.429 Quota limit exceeded if you hit the limit.commands.required_skill_ids to apply specific connected skills to a request.id to every event you can resume from /resume-events. Existing clients can ignore it. Added keep_generating: set it to true and the response keeps generating when your connection drops, so you can resume it later. Use /stop-requests to end it early.param_override inside overrides. Pass {"effort": "high"} to select a reasoning-effort label.created_by and caching_enabled from the request body. The requesting user is logged automatically from the API key; configure caching with the Update an Agent endpoint.step.| event | step | What it means |
|---|---|---|
start | start | Always the first event. Carries run_id (needed to stop or resume the response) and trace_id. |
status | varies, e.g. reasoning, assistant_start, tool steps | A progress update. May carry output (e.g. a title and description, or a todo list). |
token | subagent_stream | Progress narration from a sub-agent while it works. Not part of the answer: show it separately (e.g. as a live status line), don't append it to the answer. |
token | any other step (e.g. model_stream) | A piece of the answer. Append delta to the answer text. |
ping | ping | Keepalive after a quiet gap. Carries no data; ignore it. |
error | error | Something failed. output.error.code is the machine-readable code and output.error.details the message to show. Always followed by end. |
end | end | Always the last event. output.status says how the response ended: completed, stopped, errored, or disconnected (only seen when resuming). On completed, output holds the full answer. |
id: line holding its event id (e.g. id: 1789768688301-4), which marks its place in the response. start, ping, and every event of a response that can't be resumed have no event id. The examples show a response that can be resumed.