> ## Documentation Index
> Fetch the complete documentation index at: https://docs.illocution.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Realtime Replay Stream

> POST /analyze/stream - Upload recording and receive SSE updates

## When to Use

Upload a finished recording but receive the same SSE signals you would see in a live call. Ideal for coaching apps that want incremental results without implementing chunked uploads.

<EndpointMethod method="post" path="/analyze/stream" />

## Request

<ParamField body="file" type="binary" required>
  Audio or video file (`mp4`, `mov`, `webm`, `mp3`, `wav`, `m4a`, `aac`). Sent as `multipart/form-data`.
</ParamField>

## Response

An SSE connection (`text/event-stream`). Events are emitted in order:

1. `status` (`phase=start`)
2. `final_transcript` (per utterance once finalized)
3. For each utterance: `emotion`, `cognitive`, optional `transition` / `moment`
4. `summary_update` after the timeline completes
5. `status` (`phase=completed`)
6. `done`

Example CLI invocation:

```bash theme={null}
curl -N https://api.illocution.ai/analyze/stream \
  -H "Accept: text/event-stream" \
  -H "X-API-Key: $ILLOCUTION_KEY" \
  -F "file=@call.mp4"
```

## Example Event

```
event: emotion
data: {
  "utterance_id": "analysis_1234_utt_0007",
  "speaker_id": "Speaker_1",
  "emotion": {"joy":0.64,"fear":0.05,...},
  "scores": {"valence":0.41,"arousal":0.58,"dominance":0.52},
  "confidence":0.78,
  "stability":"final"
}
```

<Info>
  `POST /analyze?stream=true` is a convenience alias for clients that cannot change URLs.
</Info>
