---
title: "Stream AI response"
method: GET
path: "/threads/{thread-id}/messages/{message-id}/response/stream"
tags: ["Threads"]
---

# Stream AI response

`GET /threads/{thread-id}/messages/{message-id}/response/stream`

## Request

- Base URL: `https://api.korey.ai/api/v1`
- URL: `https://api.korey.ai/api/v1/threads/{thread-id}/messages/{message-id}/response/stream`
- Auth: HTTP bearer

SSE stream for the AI response to a user message.

Events are sent in SSE format:

```
event: <type>
data: <json>

```

| Event | Data | Description |
|---|---|---|
| `token` | `{"token": "..."}` | A text chunk of the AI response |
| `error` | `{"message": "..."}` | An error occurred |
| `done` | `{}` | Response is fully complete — thread is back in `ready` state |

`done` is only emitted after the LLM has finished generating and the thread
has returned to `ready`. Once you receive `done` the thread accepts new messages.
Thinking and status events are filtered. The stream closes after `done` or `error`.

## Path parameters

- `thread-id` string, uuid, required
- `message-id` string, uuid, required

## Other responses

- `401`: Unauthorized — Bearer token required or invalid
- `403`: Forbidden — token does not have required scope

---

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