GET /v1/audio/transcriptions/stream
Streaming transcription over WebSocket (VASR; unit-billed, audio-seconds)
No models currently served on this endpoint.
Task #19 specialty route (route_type: transcriptions, the streaming INPUT transport): a WebSocket upgrade. SUCCESS is the 101 protocol switch — there is deliberately no 200 row; the documented HTTP statuses are exactly the pre-hijack set {401, 402, 403, 500} (auth and the balance guard run on the UPGRADE request as plain HTTP). After the upgrade: the first client frame is a JSON text config frame — model (required) and format (required; pcm_s16le only — 400-class refusals ride error FRAMES after the hijack, not HTTP), sample_rate (optional, 16000) and channels (optional, 1); the model is validated before the format. Then binary PCM frames (16 kHz mono s16le) flow gateway→card; the card's transcription.partial / transcription.final events (with speaker labels and per-final durations) flow back as JSON text frames verbatim. End-of-audio is the client's CLOSE FRAME (read side open) — forwarded to the card as a TEXT flush marker {"action":"flush"} (never a close control frame, so the card's remaining events drain FULLY before the card initiates the close); mid-stream failures are ONE §6-shape error frame ({"error":{"code":...,"retryable":...}}) then close — never a bare drop. Metering: unit_type='audio_seconds' = ceil of the summed final-event durations when any final carried one, else the stream wall-clock. The POST fallback legs (session-create + SSE out) are designed but UNBUILT — documented == built == test-exercised.
Request
No request body.
Responses
401 401
| Field | Type | Required | Description |
|---|---|---|---|
| error | object | yes | — |
402 402
| Field | Type | Required | Description |
|---|---|---|---|
| error | object | yes | — |
403 403
| Field | Type | Required | Description |
|---|---|---|---|
| error | object | yes | — |
500 500
| Field | Type | Required | Description |
|---|---|---|---|
| error | object | yes | — |
Example
curl https://api.ironstratum.com/v1/audio/transcriptions/stream \
-H "Authorization: Bearer $IRONSTRATUM_API_KEY"