> ## 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.

# Ambient vs Dictation Streaming Comparison

> Compare Ambient /ws/stream and Dictation /ws/transcribe: purpose, auth, messages, and when to use each

After you create an ambient session and seed the session context, you can stream audio on **`GET /ws/stream`**. For Dictation, create a transcription session, then stream on **`GET /ws/transcribe`**.

Both endpoints use WebSocket and send audio as JSON text frames. They solve different jobs and use different message contracts.

<Info>
  **This guide applies to:** Direct HTTP and WebSocket integrations with Suki for Partner Ambient, Form filling, and Dictation APIs.
</Info>

| Endpoint                 | Purpose                                                                                                 | API reference                                                                                         |
| :----------------------- | :------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------- |
| `GET` **/ws/stream**     | Stream **PCM** audio into an ambient or Form filling session for note generation and related processing | [Audio streaming for Ambient and Form filling sessions](/api-reference/ambient-sessions/audio-stream) |
| `GET` **/ws/transcribe** | Stream **PCM\_S16LE** audio into a **Dictation (transcription) session** for real-time text             | [Stream audio to Dictation session](/api-reference/audio-transcription/stream-transcription)          |

Use the **same base host** for REST and WebSocket in a given environment (for example staging **`https://sdp.suki-stage.com`** and **`wss://sdp.suki-stage.com`**). Your partnership team confirms which host and credentials apply.

<CardGroup cols={2}>
  <Card title="Ambient Streaming" icon="waveform" href="/documentation/how-to/audio-streaming/ambient-audio-streaming" arrow={true}>
    Stream **PCM** audio into an ambient session for note generation and related processing. Use this when you already have an ambient session and want to push live audio for that session.
  </Card>

  <Card title="Dictation Streaming" icon="waveform" href="/documentation/how-to/audio-streaming/dictation-streaming" arrow={true}>
    Stream **PCM\_S16LE** audio into a Dictation session for real-time text. Use this when you have a Dictation session and want to push audio for that session.
  </Card>
</CardGroup>

<Tip>
  **Do not** send raw audio as **binary** WebSocket frames on **`/ws/stream`**. On **`/ws/transcribe`**, outbound audio is also sent as **JSON text** frames with Base64 payloads, not raw binary PCM frames.
</Tip>

## What each product is for

|                | Ambient (and Form filling on the same socket)                           | Dictation                                                                     |
| :------------- | :---------------------------------------------------------------------- | :---------------------------------------------------------------------------- |
| **Goal**       | Stream visit audio for note generation and related processing           | Stream speech for **real-time transcript text** in your app                   |
| **Endpoint**   | `GET /ws/stream`                                                        | `GET /ws/transcribe`                                                          |
| **Session ID** | `ambient_session_id`                                                    | `transcription_session_id`                                                    |
| **Results**    | Final note and transcript mainly via **REST** after you end the session | **Partial and final** transcript frames on the WebSocket, then REST as needed |

## Side-by-side comparison

| Topic                                | Ambient Streaming                                                   | Dictation Streaming                                           |
| :----------------------------------- | :------------------------------------------------------------------ | :------------------------------------------------------------ |
| Endpoint                             | `GET /ws/stream`                                                    | `GET /ws/transcribe`                                          |
| Browser **`Sec-WebSocket-Protocol`** | `SukiAmbientAuth,<sdp_suki_token>,<ambient_session_id>`             | `SukiAmbientAuth,<sdp_suki_token>,<transcription_session_id>` |
| Non-browser headers                  | `sdp_suki_token`, `ambient_session_id`                              | `sdp_suki_token`, `transcription_session_id`                  |
| Audio field name                     | **`data`** (Base64 PCM)                                             | **`audioData`** (Base64 **PCM\_S16LE**)                       |
| Start-of-stream                      | **`START_TIME`** required first                                     | No **`START_TIME`** in the Dictation contract documented here |
| End-of-stream                        | **`AUDIO`** with **`data`**: **`RU9G`** (Base64 of bytes **`EOF`**) | **`EVENT`** with **`event`**: **`AUDIO_END`**                 |
| Control messages                     | **`type`**: **`EVENT`**, **`event`**: enum (see FAQ)                | **`EVENT`** / **`AUDIO_END`** for end of audio                |

## Next steps

<Icon icon="file-lines" iconType="solid" /> Follow [Stream ambient audio](/documentation/how-to/audio-streaming/ambient-audio-streaming) when you already have an ambient session and need to push live audio on **`/ws/stream`**.

<Icon icon="file-lines" iconType="solid" /> Follow [Stream Dictation audio](/documentation/how-to/audio-streaming/dictation-streaming) when you have a Dictation session and need real-time transcript frames on **`/ws/transcribe`**.

<Icon icon="file-lines" iconType="solid" /> Read [Streaming architecture](/documentation/how-to/audio-streaming/streaming-architecture) for diagrams of how REST and WebSocket fit together for each product.
