Event types
Events flow in two directions.
- User events and system events are what you send to the agent:
user.*events start a session and steer it as it progresses;system.messageappends system-level context that applies to the accompanying turn and all subsequent turns. - Session events, span events, and agent events are sent to you for observability into your session state and agent progress. Stream connections that opt in also receive event deltas.
Session, span, agent, user, and system event type strings follow a \{domain\}.\{action\} naming convention. The stream-only delta preview events (event_start, event_delta) are the exception. See Event types in the reference for the full catalog. Webhook event types are separate, and some of their names differ from the stream's (for example, session.status_idled rather than session.status_idle).
Every persisted event includes a processed_at timestamp set when the event finishes processing. On events you send, processed_at is null while the event is still queued behind earlier events. The exceptions are user.define_outcome, user.custom_tool_result, and user.tool_result, which are processed on receipt and echoed back with processed_at already populated.