Documentation Index
Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
Use this file to discover all available pages before exploring further.
GET /v1/sessions/{session_id}/events/stream
Receives all events in a session in real time through Server-Sent Events (SSE). After the connection is established, the server pushes the session’s complete event history and continues to stream new events as they occur.
Path parameters
| Parameter | Type | Description |
|---|
session_id | string | Session ID with the sess_ prefix |
| Header | Required | Description |
|---|
Authorization | Yes | Bearer $QODER_PAT |
Accept | Recommended | text/event-stream |
Query parameters
| Parameter | Type | Required | Description |
|---|
after_id | string | No | Only receive events created after this event ID |
Example request
curl -N -X GET "https://openapi.qoder.sh/api/v1/cloud/sessions/sess_019e392c0d1e74e095d21ea4c6b41def/events/stream" \
-H "Authorization: Bearer $QODER_PAT" \
-H "Accept: text/event-stream"
Example response
HTTP 200 OK
Content-Type: text/event-stream
Each event follows the standard SSE format:
id: <event_id>
event: <event_type>
data: <json_payload>
User message:
id: evt_019e392c0d787cfaa21bda98e06cd913
event: user.message
data: {"id": "evt_019e392c0d787cfaa21bda98e06cd913", "type": "user.message", "content": "Hello", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "created_at": "2026-05-18T03:40:48.888851795Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:40:48.888851795Z", "schema_version": "1.0"}
Session scheduled:
id: evt_771c1195bcbd4a07834d4ed4dd6450ca
event: session.status_rescheduled
data: {"id": "evt_771c1195bcbd4a07834d4ed4dd6450ca", "type": "session.status_rescheduled", "turn_id": "turn_019e392c0d787ceea6bb62943f9ac3ec", "created_at": "2026-05-18T03:40:50.321Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:40:50.321Z", "schema_version": "1.0"}
Agent reply:
id: evt_f8599c68e7784f2d8c490af1b3056716
event: agent.message
data: {"id": "evt_f8599c68e7784f2d8c490af1b3056716", "type": "agent.message", "content": [{"text": "Got it! Message received.", "type": "text"}], "turn_id": "turn_019e392d6aad7158b377c039c6ba5db3", "created_at": "2026-05-18T03:42:41.194Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "processed_at": "2026-05-18T03:42:41.194Z", "schema_version": "1.0"}
Session idle (turn complete):
id: evt_a289470296c94e7ba8d7ea562efe5925
event: session.status_idle
data: {"id": "evt_a289470296c94e7ba8d7ea562efe5925", "type": "session.status_idle", "usage": {"input_tokens": 150, "output_tokens": 42, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0}, "status": "idle", "turn_id": "turn_019e392d6aad7158b377c039c6ba5db3", "created_at": "2026-05-18T03:42:41.195Z", "session_id": "sess_019e392c0d1e74e095d21ea4c6b41def", "stop_reason": {"type": "end_turn"}, "processed_at": "2026-05-18T03:42:41.195Z", "schema_version": "1.0"}
Event types
Full event type list:
event (SSE field) | Description |
|---|
user.message | User-sent message |
session.status_rescheduled | Agent scheduled for processing |
span.model_request_start | Model inference request started |
agent.thinking | Agent thinking (internal reasoning) |
agent.message | Agent-generated reply |
session.status_idle | Processing complete, session back to idle |
span.model_request_end | Model inference request ended |
session.error | Error occurred during processing |
terminated | Turn terminated |
Typical event lifecycle
A complete conversation turn typically streams events in this order:
user.message – User message enqueued
session.status_rescheduled – Agent scheduled
span.model_request_start – Model call begins
agent.thinking – Agent internal reasoning
agent.message – Agent generates reply
session.status_idle – Turn complete, back to idle (includes usage stats)
span.model_request_end – Model call ends
Client implementation guidance
- Use the
EventSource API or an HTTP client that supports SSE
- Listen for the
session.status_idle event to detect the end of a conversation turn
- Use the
turn_id field to correlate all events belonging to the same turn
- The connection stays open until the client disconnects; the server continues to push new events
Errors
| HTTP | Type | Trigger |
|---|
| 401 | authentication_error | PAT invalid or expired |
| 404 | not_found_error | Session does not exist |
See Errors for the full error envelope.