[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"article-doc:docs\u002Fstart\u002Fquickstart":3},"---\ntitle: Quickstart\ndescription: \"Get from zero to your first transcription request in five minutes.\"\n---\nThis page gets you from zero to your first transcription request.\n\n## 1. Get an API key\n\nYour API key starts with `sk-` and is provisioned by LansonAI. If you do not have one yet, contact the LansonAI team.\n\n::callout{icon=\"i-lucide-triangle-alert\" color=\"amber\"}\nThe plaintext key is returned only once at provisioning time. The server stores only a SHA-256 hash. Save it immediately.\n::\n\n## 2. Batch transcription from audio URL\n\nSubmit a public URL, get a workflow id (`cf_…`), poll for the result:\n\n```bash\nBASE=\"https:\u002F\u002Faudio.lansonai.com\"\nSK=\"sk-...\"\n\ncurl -X POST \"$BASE\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fjobs\" \\\n  -H \"Authorization: Bearer $SK\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"audio_url\": \"https:\u002F\u002Fcdn.example.com\u002Faudio\u002Fmeeting.wav\" }'\n```\n\nResponse (202 Accepted):\n\n```json\n{\n  \"request_id\": \"...\",\n  \"workflow_id\": \"cf_...\",\n  \"status\": \"queued\",\n  \"poll_endpoint\": \"GET \u002Fv1\u002Faudio\u002Ftranscriptions\u002Fjobs\u002Fcf_...\"\n}\n```\n\nPoll:\n\n```bash\ncurl \"$BASE\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fjobs\u002F\u003Cworkflow_id>\" \\\n  -H \"Authorization: Bearer $SK\"\n```\n\nFor **client-VAD speech clips** (multipart, synchronous 200) see [Segment API](\u002Fdocs\u002Fapi-reference\u002Fsegment-transcription).\n\n## 3. Realtime transcription (WebSocket)\n\nFor live speech, connect over WebSocket:\n\n```bash\n# 1) (browser only) get a 60-second session token\nRT=$(curl -s -X POST \"$BASE\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fsession-token\" \\\n  -H \"Authorization: Bearer $SK\" | jq -r .token)\n\n# 2) Connect\n# wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream?access_token=$RT\n\n# 3) Send PCM16LE \u002F 16kHz \u002F mono audio frames\n#    Text frame: {\"type\":\"input_audio_buffer.append\",\"audio\":\"\u003Cbase64>\"}\n#    Or send raw binary PCM frames\n\n# 4) Flush when a speech segment ends\n#    {\"type\":\"input_audio_buffer.flush\"}\n\n# 5) Receive transcription events\n#    {\"type\":\"conversation.item.input_audio_transcription.completed\",\"text\":\"...\"}\n```\n\n## 4. Expected output\n\n### Offline (complete status)\n\n```json\n{\n  \"workflow_id\": \"...\",\n  \"status\": \"complete\",\n  \"output\": {\n    \"result\": {\n      \"segments\": [\n        { \"id\": 0, \"start_time\": 0.0, \"end_time\": 3.2, \"text\": \"The weather is nice today\", \"confidence\": 0.95 }\n      ],\n      \"summary\": { \"total_duration\": 120.5, \"num_segments\": 45 },\n      \"metadata\": { \"language\": \"zh\", \"model\": \"whisper-large-v3-turbo\", \"chunk_count\": 3 }\n    }\n  }\n}\n```\n\n### Realtime event\n\n```json\n{\n  \"type\": \"conversation.item.input_audio_transcription.completed\",\n  \"utterance_index\": 0,\n  \"text\": \"The weather is nice today\",\n  \"language\": \"zh\",\n  \"audio_duration_ms\": 3200,\n  \"latency_ms\": 480\n}\n```\n\n## Next steps\n\n- [Realtime Quickstart](\u002Fdocs\u002Frealtime\u002Fquickstart) — full WebSocket examples\n- [Transcribe Audio](\u002Fdocs\u002Frecorded\u002Ftranscribe-audio) — offline transcription details\n- [Authentication](\u002Fdocs\u002Fstart\u002Fauthentication) — auth methods and browser security\n",1790059118963]