Skip to content

Streaming Event Object

Represents individual Server-Sent Events (SSE) streamed when stream: true. Each event is a JSON object on a data: line and carries an event field naming its type. Clients filter on the event name to drive UI. The stream always ends with a terminal data: [DONE] line.

Reading the stream

Every event is delivered as one SSE frame:

data: {"event":"response.content_delta","delta":"Hello"}

A response stream proceeds roughly as: response.processingresponse.created → (response.context) → content/tool/reasoning events → response.completed (or response.cancelled / response.error) → data: [DONE].

Event Types

Lifecycle Events

response.processing

The very first event, emitted immediately as the stream opens (before setup completes) so clients can show activity right away.

Show properties

event string - Always response.processing

status string - Always processing

thread_id string - Thread identifier

message string - Human-readable setup message

response.created

Emitted once after setup completes (authentication, organization resolution, turn lock). Marks the real start of generation.

Show properties

event string - Always response.created

status string - Always in_progress

thread_id string - Thread identifier

user_id string - Authenticated user ID

org_id string - Organization ID

user_message_id string - ID of the stored user message

trace_id string - Request trace ID

assistant_id string optional - Assistant ID if the thread has one

response.context

Emitted after response.created with the resolved request context (organization, timezone, location) used for grounding the response.

Show properties

event string - Always response.context

user_id, org_id, org_name string - Identity context

timezone, country, location_source string - Resolved locale context

profile_timezone, detected_timezone, suggested_timezone string optional - Timezone resolution detail

timezone_mismatch boolean optional - Whether the profile and detected timezones differ

response.heartbeat

Periodic keepalive (about every 30 seconds) sent during long pauses (tool execution, reasoning) to keep the connection open. Carries no content.

Show properties

event string - Always response.heartbeat

status string - Always in_progress

response.completed

Emitted when the response finishes successfully. The final, content-bearing event before [DONE].

Show properties

event string - Always response.completed

status string - completed, or awaiting_approval when a tool call needs user approval

thread_id string - Thread identifier

response_id string - Unique response identifier

user_message_id string - ID of the stored user message

response array - Final response content blocks

stop_reason string - Why generation stopped (e.g. end_turn)

is_summarized boolean - Whether conversation history was summarized

response_blocks array optional - Structured blocks (in structured mode or when tools are used)

assistant_id, reasoning_content, usage, cost, context_window, performance, annotations, invoked_skills, loaded_skins, skin_catalog, task_list, tools, available_tools, rules, system_messages optional - Present depending on the request's include parameter and what the turn produced

response.cancelled

Emitted when an in-progress stream is cancelled via Cancel stream. Followed by [DONE]. response.completed is not emitted on a cancelled turn.

Show properties

event string - Always response.cancelled

status string - Always cancelled

thread_id string - Thread identifier

partial_content_length integer - Characters generated before cancellation

response.error

Emitted when an error occurs during generation. Followed by [DONE].

Show properties

event string - Always response.error

error object optional - Standard error envelope (code, message, system_message, type, status, details, trace_id, timestamp). Some error paths emit these fields at the top level instead of nested.

Content Events

response.content_delta

Emitted for each chunk of generated text.

Show properties

event string - Always response.content_delta

delta string - Text chunk

task_list_id string optional - Present when the delta is task-list markup

response.output_text.delta

Provider-passthrough text delta (see Provider passthrough events). Carries an incremental text fragment forwarded verbatim from the upstream model stream.

response.block

Emitted for a structured response block that has no dedicated event (fallback). Rarely seen.

Show properties

event string - Always response.block

block object - The raw block object (e.g. text, tool_call, tool_result). Tool call blocks may include an optional icon_url string with the tool's brand icon.

Reasoning Events

response.reasoning.started

Emitted once when the model enters its reasoning phase.

Show properties

event string - Always response.reasoning.started

status string - Always in_progress

response.reasoning.delta

Emitted for each chunk of reasoning content (models that stream thinking in real time).

Show properties

event string - Always response.reasoning.delta

delta string - Reasoning text chunk

response.reasoning.completed

Emitted when the reasoning phase completes. Includes the full reasoning content.

Show properties

event string - Always response.reasoning.completed

status string - Always completed

reasoning_content string - Complete reasoning text

Tool & Connector Events

response.tool.started

A tool/connector invocation begins.

Show properties

event string - Always response.tool.started

id string - Tool call ID

type string - Always mcp_tool

name string - Tool name

status string - Always in_progress

input object - Tool arguments

response.tool.progress

A long-running tool is still executing (emitted about every 3 seconds, e.g. image generation).

Show properties

event string - Always response.tool.progress

id, name string - Tool identity

type string - Always mcp_tool

status string - Always in_progress

elapsed_ms integer - Elapsed execution time

response.tool.completed

A tool finished executing (raw completion marker).

Show properties

event string - Always response.tool.completed

id, name string - Tool identity

type string - Always mcp_tool

status string - Always completed

input object - Tool arguments

output object - Tool result

response.tool.done

The finalized tool result, including success/failure and timing.

Show properties

event string - Always response.tool.done

id, name string - Tool identity

type string - Always mcp_tool

status string - completed or failed

success boolean - Whether the tool succeeded

execution_time_ms integer - Execution duration

error string optional - Error detail when failed

result, result_metadata, auth_failed, tool_key optional - Additional result context

response.function_call

A function-tool invocation (user/LLM-callable function, distinct from server-side tools).

Show properties

event string - Always response.function_call

tool_call_id string - Call ID

name string - Function name

arguments object - Call arguments

response.connector.auth_required

A connector's authorization is expired or invalid; the user must reconnect. Emitted alongside the failed tool's response.tool.done.

Show properties

event string - Always response.connector.auth_required

tool_key string - Connector identifier

tool_name string - Tool that failed

tool_call_id string - Call ID

message string - Explanation

action_name, icon_url string optional - Display detail

Web Search & Research Events

response.web_search.started

A web search is initiated.

Show properties

event string - Always response.web_search.started

id string - Search ID

type string - Always web_search

name string - Always web_search

status string - Always searching

input object - The query

response.web_search.searching

A per-query update while results are being retrieved. Same payload shape as response.web_search.started (event, id, type, name, status, input).

response.web_search.page_fetch.started

Deep-search only — fetching the full content of one result page.

Show properties

event string - Always response.web_search.page_fetch.started

id string - Search ID

type string - Always web_search

name string - Always web_search

status string - Always fetching

url, title string - Page being fetched

page_index, page_total integer optional - Progress counters

response.web_search.page_fetch.completed

Deep-search only — a page fetch finished.

Show properties

event string - Always response.web_search.page_fetch.completed

id string - Search ID

type string - Always web_search

name string - Always web_search

status string - Always fetched

url, title string - The page

ok boolean - Whether the fetch succeeded

duration_ms integer - Fetch duration

page_index, page_total, bytes, engine, truncated, reason, error optional - Additional fetch detail

response.web_search.completed

All search results retrieved.

Show properties

event string - Always response.web_search.completed

id string - Search ID

type string - Always web_search

name string - Always web_search

status string - Always completed

input object - Original query

output object - Results

result_metadata object optional - Enriched citation metadata

response.deep_research.status

A phase update during a multi-phase deep-research run.

Show properties

event string - Always response.deep_research.status

phase string - Current research phase

Additional phase-specific fields are passed through alongside phase.

Knowledge (RAG) Events

response.rag_search.completed

A knowledge (vector store) search finished.

Show properties

event string - Always response.rag_search.completed

status string - Always completed

store_count integer optional - Knowledge stores queried

source_count integer optional - Documents retrieved

Image Events

response.image_analysis.started

Image analysis (vision) begins.

Show properties

event string - Always response.image_analysis.started

status string - Always analyzing

images array - Images being analyzed

count integer - Number of images

response.image.partial

A progressive preview frame during image generation (zero or more before the final image).

Show properties

event string - Always response.image.partial

id string - Tool call ID

type string - Always mcp_tool

name string - Always generate_image

partial_index, partial_count integer - Preview frame position

b64 string - Base64-encoded preview image

content_type string - Image MIME type (e.g. image/png)

status string - Always in_progress

width, height integer optional - Preview dimensions

Document, Skin, Skill & Task Events

response.artifact_created

A document/artifact was created (e.g. by the create_document tool). Fires alongside response.tool.done.

Show properties

event string - Always response.artifact_created

artifact_type string - Always document

item_id, smoc_entity_id, team_space_id, thread_id, tool_call_id string - Artifact identity

artifact_token string optional - Access token for the artifact

response.skin_activated

A page skin (theme/template) was activated on the thread.

Show properties

event string - Always response.skin_activated

thread_id, kind, activated_by, source, activated_at - Activation context

response.skin_loaded

A page skin became available for rendering.

Show properties

event string - Always response.skin_loaded

thread_id, skin_id, skin_name, scope - Skin identity

entry_type string - Always skin

response.skill_loaded

A skill/behavior was loaded into the response.

Show properties

event string - Always response.skill_loaded

skill_id, skill_name, display_name, scope, thread_id - Skill identity

response.task.created

A live task checklist was created.

Show properties

event string - Always response.task.created

thread_id string - Thread identifier

task_list object - The new task list (id, title, items)

response.task.updated

A single task's status changed.

Show properties

event string - Always response.task.updated

thread_id string - Thread identifier

list_id string - Task list ID

task object - The updated task

response.task.snapshot

A full snapshot of the task list's current state. Also emitted as a terminal snapshot if the stream errors mid-task-list.

Show properties

event string - Always response.task.snapshot

thread_id string - Thread identifier

task_list object - Full task list

terminal boolean optional - Present (true) only on the error path

Summary & Metadata Events

response.summary

Emitted before response.completed only when conversation history was summarized for this turn.

Show properties

event string - Always response.summary

summary string - The summary text

messages_summarized, messages_kept, original_token_count, optimized_token_count integer - Summarization stats

usage object - Token usage for the summarization itself

response.performance

Emitted once when the first content token arrives, carrying the time-to-first-token measurement.

Show properties

event string - Always response.performance

ttft_ms number - Time to first token, in milliseconds

response.annotations

Emitted before response.completed only when generated images were annotated by relevance.

Show properties

event string - Always response.annotations

annotations array - Annotation objects with image metadata

Provider passthrough events

When the request routes to a provider whose native stream is forwarded transparently, a small family of provider-native events is passed through verbatim. They mirror the upstream provider's deltas and do not need separate handling — clients that only consume Aitronos events can ignore them:

  • response.output_item.added, response.output_item.done — provider item lifecycle
  • response.function_call_arguments.delta, response.function_call_arguments.done — provider tool-argument deltas
  • response.reasoning_text.delta, response.reasoning_summary_text.delta — provider reasoning deltas
  • response.web_search_call.in_progress, response.web_search_call.searching, response.web_search_call.completed — provider web-search call lifecycle

Stream termination

The stream always ends with:

data: [DONE]

This terminal line follows response.completed, response.cancelled, or response.error.

{
  "event": "response.processing",
  "status": "processing",
  "thread_id": "thrd_xyz789",
  "message": "Setting up response stream..."
}