---
title: "Stream Session"
method: GET
path: "/sessions/{session_id}/stream"
tags: ["sessions"]
---

# Stream Session

`GET /sessions/{session_id}/stream`

SSE tail of the session's event stream, by ``seq`` cursor.

Live view and replay are the same endpoint: pass ``?cursor=`` (or the SSE
``Last-Event-ID`` header on reconnect) to resume. Emits:
- ``event: message`` frames (``id:`` = the row's seq; data = run message)
- ``event: turn`` frames whenever a turn's status changes (the composer's
  end-of-turn signal)
- ``: ping`` comments to keep intermediaries from buffering.

Deliberately DB-tail polling (~400ms) decoupled from the intake POST:
refresh-safe, and how a scheduled turn is watched live. The overlap
re-read is time-based and generous; the client dedupes by seq.

## Path parameters

- `session_id` string, uuid, required

## Query parameters

- `cursor` integer, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/nanocorp/apis/nanocorp-api.md) · [All operations](https://skmtc.dev/nanocorp/apis/nanocorp-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nanocorp/nanocorp-api/revisions/04b208d3215b/schema)
