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

# Streaming Wire Format Overview

> Choose the correct WebSocket wire format for Ambient, Form filling (`GET /ws/stream`), or Dictation (`GET /ws/transcribe`) JSON text frames

Learn how to choose the correct streaming wire format for your product and modality. Both Ambient/Form filling and Dictation use **JSON text frames** only (one JSON object per send).

<Warning>
  Do not send raw binary audio frames.
</Warning>

To choose between Ambient and Dictation, refer to [Ambient vs Dictation streaming](/documentation/how-to/audio-streaming/audio-stream) guide.

<CardGroup cols={2}>
  <Card title="Ambient/Form filling Wire Format" icon="waveform" href="/documentation/how-to/audio-streaming/websocket-streaming-wire-format-ambient" arrow={true}>
    Outbound **`GET /ws/stream`** messages: **`START_TIME`**, **`AUDIO`** with **`data`**, **`EVENT`**, and the **`RU9G`** end marker. Form filling uses the same Ambient wire format on this socket.
  </Card>

  <Card title="Dictation Wire Format" icon="waveform" href="/documentation/how-to/audio-streaming/websocket-streaming-wire-format-dictation" arrow={true}>
    Outbound **`GET /ws/transcribe`** messages: **`AUDIO`** with **`audioData`**, then **`EVENT`** with **`AUDIO_END`**. No **`START_TIME`** and no **`RU9G`**.
  </Card>
</CardGroup>

<Info>
  To learn about what's common and different between Ambient/Form filling and Dictation streaming architecture, refer to [Streaming architecture](/documentation/how-to/audio-streaming/streaming-architecture) for more information.
</Info>

## Related topics

<CardGroup cols={2}>
  <Card title="Stream Ambient Audio" icon="waveform" href="/documentation/how-to/audio-streaming/ambient-audio-streaming" arrow={true}>
    How Ambient streaming works, JSON text rules, and when to use `/ws/stream`.
  </Card>

  <Card title="Stream Dictation Audio" icon="waveform" href="/documentation/how-to/audio-streaming/dictation-streaming" arrow={true}>
    How Dictation streaming works, prerequisites, and when to use `/ws/transcribe`.
  </Card>

  <Card title="Audio Capture Best Practices" icon="microphone" href="/documentation/how-to/audio-streaming/audio-capture-best-practices" arrow={true}>
    Capture format, environment, gain, and network readiness before you stream.
  </Card>

  <Card title="Dictation Transcript Frames" icon="message" href="/documentation/how-to/audio-streaming/dictation-streaming-transcripts" arrow={true}>
    Inbound partial and final transcript frames for `/ws/transcribe`.
  </Card>

  <Card title="Complete the Session" icon="circle-check" href="/documentation/how-to/audio-streaming/websocket-streaming-complete-session" arrow={true}>
    Close the socket, end with REST, and troubleshoot common errors.
  </Card>
</CardGroup>

## Next steps

<Icon icon="file-lines" iconType="solid" /> Open [Ambient streaming wire format](/documentation/how-to/audio-streaming/websocket-streaming-wire-format-ambient) for **`/ws/stream`** message shapes and chunking.

<Icon icon="file-lines" iconType="solid" /> Open [Dictation streaming wire format](/documentation/how-to/audio-streaming/websocket-streaming-wire-format-dictation) for **`/ws/transcribe`** message shapes and chunking.

<Icon icon="file-lines" iconType="solid" /> Follow [Complete the session after streaming](/documentation/how-to/audio-streaming/websocket-streaming-complete-session) to close the socket, end the session, and troubleshoot errors.
