[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"article-doc:docs\u002Fstart\u002F5.choose-an-api":3},"---\ntitle: Choose an API\ndescription: \"Realtime, Segment, and Batch — when to use which.\"\n---\nLansonAI provides three live transcription APIs today, plus Voice Agent which is coming soon.\n\n## Decision table\n\n| Scenario | API | Endpoint | Who does VAD |\n|---|---|---|---|\n| Live captions \u002F dialogue | Realtime WS | `WS \u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream` | **Server** |\n| Pre-segmented speech clips (e.g. voice UI) | Segment HTTP | `POST \u002Fv1\u002Faudio\u002Ftranscriptions` | **Client** |\n| Meeting \u002F podcast file from URL | Batch jobs | `POST \u002Fv1\u002Faudio\u002Ftranscriptions\u002Fjobs` | **Server** (time slice) |\n| Voice agent | Voice Agent | Coming soon | — |\n\n::callout{icon=\"i-lucide-info\" color=\"primary\"}\nSegment vs Batch\n**Segment** = you already cut speech with client VAD; send multipart `file`, get **200** immediately. **Batch** = you have a long `audio_url`; get **202** + poll. Do not send silence to Segment — we transcribe whatever you POST.\n::\n\n## Realtime Voice Context\n\n**When to use**: text while the person is still speaking.\n\n- Live captions, real-time display\n- Continuous PCM stream; server-side VAD and utterance boundaries\n\n**Characteristics**:\n- WebSocket full-duplex\n- PCM16LE \u002F 16kHz \u002F mono\n- Millisecond-level latency\n\n→ [Realtime Overview](\u002Fdocs\u002Frealtime)\n\n## Segment transcription (client VAD)\n\n**When to use**: your app already detected speech boundaries (VAD) and has a short clip per utterance.\n\n- Voice clients that upload one WAV per utterance\n- OpenAI Whisper-compatible `multipart\u002Fform-data`\n- Synchronous **200** response\n\n**Characteristics**:\n- **No server-side silence filtering** — silent clips are transcribed and billed\n- ~800ms × up to 2 worker attempts per request; **no HTTP auto-retry**\n- On failure (**502**), client decides whether to resend\n\n→ [Segment API](\u002Fdocs\u002Fapi-reference\u002Fsegment-transcription) · [Client-VAD guide](\u002Fdocs\u002Fguides\u002Fclient-vad-segments)\n\n## Batch jobs (recorded files)\n\n**When to use**: complete audio file at a public URL; processing can take minutes.\n\n- Post-meeting \u002F podcast processing\n- Server slices by time, concurrent chunk transcription, aggregation\n- Optional LLM review and webhook\n\n**Characteristics**:\n- HTTP async (**202** + poll)\n- `workflow_id` is `cf_` + 64 hex (not UUID)\n\n→ [Recorded Overview](\u002Fdocs\u002Frecorded) · [Batch Jobs API](\u002Fdocs\u002Fapi-reference\u002Fbatch-jobs)\n\n## Voice Agent\n\n**Status**: Coming soon\n\n## Comparison\n\n| Dimension | Realtime WS | Segment HTTP | Batch jobs |\n|---|---|---|---|\n| Transport | WebSocket | HTTP POST | HTTP POST + GET poll |\n| Latency | Milliseconds | ~≤1.6s sync | Minutes (async) |\n| Input | PCM16LE stream | Multipart `file` | JSON `audio_url` |\n| Output | Event stream | Transcript JSON | Full job JSON |\n| VAD | Server | **Client** | Server (slice) |\n| Success code | WS events | **200** | **202** |\n\n## Next steps\n\n- [Realtime Quickstart](\u002Fdocs\u002Frealtime\u002Fquickstart)\n- [Client-VAD segments](\u002Fdocs\u002Fguides\u002Fclient-vad-segments)\n- [Transcribe Audio](\u002Fdocs\u002Frecorded\u002Ftranscribe-audio)\n- [Authentication](\u002Fdocs\u002Fstart\u002Fauthentication)\n",1790059118963]