Stream conversation events
Server-sent events for a conversation. Durable event IDs are Last-Event-ID resume checkpoints; live heartbeat/control frames never advance them. Token expiry leaves a healthy stream open. Session revocation, hard expiry, and exhaustion stop delivery and close the stream within 10 seconds; the server attempts a session-ended control event whose data is a google.rpc.Status with WidgetSessionErrorInfo, without an id. If delivery fails, reconnect returns the same structured terminal reason. Reconnect uses current credentials and rechecks conversation authorization. See the widget session lifecycle contract for in-flight action and replacement-session policy.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Conversation ID.
Response
A stream of Server-Sent Events
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
WidgetEvent is the visitor-facing event vocabulary. It MIRRORS the internal conversation event variants — same granularity, same discriminator names — with slimmed messages holding exactly what a widget UI needs. Internal events map to these through an explicit, exhaustive server-side projection; internal-only types (context compaction, memory reads, sub-agent bookkeeping) have no widget variant and are dropped. Nothing here carries tool configuration, server identities, operator details, or internal error strings. Tool arguments cross this boundary only when an enabled tool set overlay explicitly opts the matching tool in.
userMessage WidgetUserMessageEvent is a message from the visitor.
Unique event id (prefixed ULID). Only durable objevt_ IDs are emitted
as SSE id: fields and accepted as Last-Event-ID reconnect cursors.
Transient heartbeats carry hb_ IDs in this payload only.
The conversation this event belongs to.
"obj_01HXKD2E5NQM3T9AYWCFQAZGFV"