Skip to content

Event Reference

This page documents all event types in the Everruns event protocol.

Emitted when a user message is submitted to the session.

FieldTypeDescription
messageMessageThe user message object
{
"type": "input.message",
"data": {
"message": {
"id": "message_...",
"role": "user",
"content": [{"type": "text", "text": "Hello!"}],
"created_at": "2024-01-15T10:30:00.000Z"
}
}
}

Emitted when the LLM starts generating a response. UI can show a “thinking” indicator.

FieldTypeDescription
turn_idstringTurn ID this output belongs to
modelstring?Optional model name being used
{
"type": "output.message.started",
"data": {
"turn_id": "turn_...",
"model": "gpt-4o"
}
}

Incremental text update during LLM generation. Events are batched (~100ms).

FieldTypeDescription
turn_idstringTurn ID this delta belongs to
deltastringNew text since last delta
accumulatedstringTotal text so far
{
"type": "output.message.delta",
"data": {
"turn_id": "turn_...",
"delta": "Hello",
"accumulated": "Hello"
}
}

Emitted when the agent response is complete.

FieldTypeDescription
messageMessageThe complete agent message
metadataModelMetadata?Model information
usageTokenUsage?Token usage statistics
{
"type": "output.message.completed",
"data": {
"message": {
"id": "message_...",
"role": "assistant",
"content": [{"type": "text", "text": "Hello! How can I help?"}]
},
"usage": {
"input_tokens": 50,
"output_tokens": 25
}
}
}

Emitted when a turn begins execution.

FieldTypeDescription
turn_idstringTurn identifier
input_message_idstringMessage that triggered this turn
input_contentstring?Optional input content preview
{
"type": "turn.started",
"data": {
"turn_id": "turn_...",
"input_message_id": "message_...",
"input_content": "Hello!"
}
}

Emitted when a turn completes successfully.

FieldTypeDescription
turn_idstringTurn identifier
iterationsintegerNumber of reason-act iterations
duration_msinteger?Duration in milliseconds
usageTokenUsage?Aggregated token usage
input_contentstring?Optional input content
{
"type": "turn.completed",
"data": {
"turn_id": "turn_...",
"iterations": 3,
"duration_ms": 1500,
"usage": {
"input_tokens": 500,
"output_tokens": 200
}
}
}

Emitted when a turn fails with an error.

FieldTypeDescription
turn_idstringTurn identifier
errorstringError message
error_codestring?Optional error code
{
"type": "turn.failed",
"data": {
"turn_id": "turn_...",
"error": "Rate limit exceeded",
"error_code": "RATE_LIMIT"
}
}

Emitted when a turn is cancelled by the user.

FieldTypeDescription
turn_idstringTurn identifier
reasonstring?Cancellation reason
usageTokenUsage?Usage before cancellation
{
"type": "turn.cancelled",
"data": {
"turn_id": "turn_...",
"reason": "User requested",
"usage": {
"input_tokens": 100,
"output_tokens": 50
}
}
}

These events are emitted by models that support extended thinking (e.g., Claude with thinking enabled).

Emitted when extended thinking begins.

FieldTypeDescription
turn_idstringTurn ID
modelstring?Model name
{
"type": "reason.thinking.started",
"data": {
"turn_id": "turn_...",
"model": "claude-4-opus"
}
}

Streams incremental thinking content.

FieldTypeDescription
turn_idstringTurn ID
deltastringNew thinking text
accumulatedstringTotal thinking so far
{
"type": "reason.thinking.delta",
"data": {
"turn_id": "turn_...",
"delta": "Let me think about this...",
"accumulated": "Let me think about this..."
}
}

Emitted when extended thinking completes.

FieldTypeDescription
turn_idstringTurn ID
thinkingstringComplete thinking content
{
"type": "reason.thinking.completed",
"data": {
"turn_id": "turn_...",
"thinking": "I need to consider the user's request carefully..."
}
}

These events provide visibility into the internal execution phases.

Emitted when LLM inference begins.

FieldTypeDescription
agent_idstringAgent ID
metadataModelMetadata?Model information
{
"type": "reason.started",
"data": {
"agent_id": "agent_...",
"metadata": {
"model": "gpt-4o"
}
}
}

Emitted when LLM inference completes.

FieldTypeDescription
successbooleanWhether the call succeeded
text_previewstring?First 200 chars of response
has_tool_callsbooleanWhether tools were requested
tool_call_countintegerNumber of tool calls
errorstring?Error if failed
duration_msinteger?Duration
usageTokenUsage?Token usage
{
"type": "reason.completed",
"data": {
"success": true,
"text_preview": "Hello! I can help you with...",
"has_tool_calls": false,
"tool_call_count": 0,
"duration_ms": 1200,
"usage": {
"input_tokens": 100,
"output_tokens": 50
}
}
}

Emitted when tool execution batch begins.

FieldTypeDescription
tool_callsToolCallSummary[]Tools to be executed
{
"type": "act.started",
"data": {
"tool_calls": [
{"id": "tc_1", "name": "get_weather"},
{"id": "tc_2", "name": "search_web"}
]
}
}

Emitted when tool execution batch completes.

FieldTypeDescription
completedbooleanAll tools completed
success_countintegerSuccessful tool calls
error_countintegerFailed tool calls
duration_msinteger?Total duration
{
"type": "act.completed",
"data": {
"completed": true,
"success_count": 2,
"error_count": 0,
"duration_ms": 500
}
}

Emitted when individual tool execution begins.

FieldTypeDescription
tool_callToolCallFull tool call with arguments
{
"type": "tool.started",
"data": {
"tool_call": {
"id": "tc_1",
"name": "get_weather",
"arguments": {"city": "London"}
}
}
}

Emitted when individual tool execution completes.

FieldTypeDescription
tool_call_idstringTool call ID
tool_namestringTool name
successbooleanWhether it succeeded
statusstring”success”, “error”, “timeout”, “cancelled”
resultContentPart[]?Result content
errorstring?Error message
duration_msinteger?Duration
{
"type": "tool.completed",
"data": {
"tool_call_id": "tc_1",
"tool_name": "get_weather",
"success": true,
"status": "success",
"result": [{"type": "text", "text": "Sunny, 22°C"}],
"duration_ms": 250
}
}

Full visibility into LLM API calls. Emitted after each call.

FieldTypeDescription
messagesMessage[]Messages sent to LLM
toolsToolDefinitionSummary[]Available tools
outputLlmGenerationOutputLLM response
metadataLlmGenerationMetadataCall metadata
{
"type": "llm.generation",
"data": {
"messages": [...],
"tools": [{"name": "get_weather", "description": "..."}],
"output": {
"text": "Hello!",
"tool_calls": []
},
"metadata": {
"model": "gpt-4o",
"provider": "openai",
"usage": {"input_tokens": 100, "output_tokens": 50},
"duration_ms": 1200,
"time_to_first_token_ms": 150,
"success": true,
"finish_reasons": ["stop"]
}
}
}

Emitted when a session begins.

FieldTypeDescription
agent_idstringAgent ID
model_idstring?Model ID if specified
{
"type": "session.started",
"data": {
"agent_id": "agent_..."
}
}

Emitted when a session becomes active (turn started).

FieldTypeDescription
turn_idstringTurn that activated session
input_message_idstringTriggering message
{
"type": "session.activated",
"data": {
"turn_id": "turn_...",
"input_message_id": "message_..."
}
}

Emitted when a session becomes idle (turn completed).

FieldTypeDescription
turn_idstringCompleted turn
iterationsinteger?Iterations in turn
usageTokenUsage?Cumulative session usage
{
"type": "session.idled",
"data": {
"turn_id": "turn_...",
"iterations": 3,
"usage": {
"input_tokens": 1500,
"output_tokens": 800
}
}
}

Token consumption statistics.

FieldTypeDescription
input_tokensintegerInput/prompt tokens
output_tokensintegerOutput/completion tokens
cache_read_tokensinteger?Tokens read from cache
cache_creation_tokensinteger?Tokens written to cache (Anthropic)

Information about the model used.

FieldTypeDescription
modelstringModel name (e.g., “gpt-4o”)
model_idstring?Internal model ID
provider_idstring?Internal provider ID

Compact tool call representation.

FieldTypeDescription
idstringTool call ID
namestringTool name

Full tool call with arguments.

FieldTypeDescription
idstringTool call ID
namestringTool name
argumentsobjectTool arguments (JSON)