---
title: "Stream an ask over server-sent events"
method: GET
path: "/v1/ask/{id}/stream"
tags: ["Agent"]
---

# Stream an ask over server-sent events

`GET /v1/ask/{id}/stream`

## Request

- Base URL: `https://api.talonic.com`
- URL: `https://api.talonic.com/v1/ask/{id}/stream`
- Auth: HTTP bearer

Stream a turn's events as they happen instead of polling. The response is
`text/event-stream`: every frame is a `data: {json}` line followed by a blank
line, and a `: keep-alive` comment line goes out every 25 seconds so proxies
keep an idle turn's socket open.

The stream first replays every event the turn has already persisted, then
follows with live events, and closes when the turn's `status` reaches
`completed`, `failed`, or `awaiting_confirmation`. A reconnect therefore loses
nothing: reopen the stream and the replay delivers the whole turn again.

Each frame is a JSON object discriminated by `kind`: `status`, `stage`, `text`,
`text.delta`, `tool.call`, `tool.progress`, `tool.result`,
`confirmation.required`, `card`, `artifact`, and `done`. The model's raw
reasoning (`thinking.delta`) is deliberately withheld from the public stream.

Streaming is additive: the turn is started (and charged) by `POST /v1/ask`, so
opening, dropping, and reopening a stream never bills, and the poll contract is
unchanged. A missing or cross-tenant turn is a real `404` issued before any SSE
header goes out, never a `200` stream carrying an error frame. Connects are
metered in the `ask_stream` rate-limit namespace, and a workspace can hold at
most 20 concurrent streams; the 21st connect is refused with `429`.

## Path parameters

- `id` string, uuid, required

## Response `200`

Server-sent event stream of the turn's frames, closed on terminal status.

## Other responses

- `401`: Missing or invalid API key.
- `404`: The requested resource was not found.
- `429`: Daily rate limit exceeded.

---

[API](https://skmtc.dev/talonic/apis/talonic-api.md) · [All operations](https://skmtc.dev/talonic/apis/talonic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/talonic/apis/talonic-api/revisions/678fe5f8c9c3?raw)
