Five endpoints answer with text/event-stream. Four stay open and watch something; the fifth streams one chat reply and closes. The streamed chat reply is documented with the rest of the chat API in text conversations. The GET streams take no query parameters and return 404 before opening if the resource is not in your workspace.

Wire format

  • The JSON repeats the frame name in its event field. Narrow on that.
  • A line starting : is a keep-alive, sent after 15 seconds of silence.
  • The body is never one JSON document. Read it with an SSE client.

Delivery rules

  • Snapshot first, and on every reconnect. The first frame of each GET stream is the whole current state, taken after the subscription opens so nothing falls in the gap. To resync, reconnect and replace your local state with the snapshot.
  • Best effort. Frames are relayed live, never queued or replayed. A frame sent while you were disconnected is gone; every fact it carried is readable from the REST endpoints. item.created frames carry an SSE id: (the item id) for de-duplication, but Last-Event-ID is ignored.
  • assistant.delta is append-only. Concatenate the chunks. assistant.completed.text is all deltas joined: replace what you accumulated with it.

Conversation frames

GET /v1/conversations/{conversation_id}/events watches one conversation on any channel. Item fields (type, direction, role, visibility, delivery_status, attachments) are described on conversations.

CoPilot frames

All three CoPilot rails send the same frames.

Reading a stream

CoPilot rails are talqing.copilot.agents.stream(...), copilot.tools.stream(...) and copilot.tasks.stream(...). Neither SDK reads a stream: true chat reply as frames; read it with a raw SSE client, or omit stream to get the JSON turn.

What is not streamed

None of these endpoints is an MCP tool. Use GET /v1/conversations/{conversation_id}/items instead of the conversation stream. A live voice or video call is a LiveKit room observed through the browser SDK (web calls); a finished call’s push notification is a webhook.