[{"data":1,"prerenderedAt":1087},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fserver-side-streaming":220,"\u002Fguides\u002Fserver-side-streaming-surround":1082},[4,28,64,92,124,152,192],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Start","\u002Fstart","1.start\u002F1.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Overview",{"title":12,"path":13,"stem":14},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F2.quickstart",{"title":16,"path":17,"stem":18},"Authentication","\u002Fstart\u002Fauthentication","1.start\u002F3.authentication",{"title":20,"path":21,"stem":22},"SDKs","\u002Fstart\u002Fsdks","1.start\u002F4.sdks",{"title":24,"path":25,"stem":26},"Choose an API","\u002Fstart\u002Fchoose-an-api","1.start\u002F5.choose-an-api","i-lucide-rocket",{"title":29,"path":30,"stem":31,"children":32,"icon":63},"Realtime","\u002Frealtime","2.realtime\u002F1.index",[33,35,39,43,47,51,55,59],{"title":34,"path":30,"stem":31},"Realtime Overview",{"title":36,"path":37,"stem":38},"Realtime Quickstart","\u002Frealtime\u002Fquickstart","2.realtime\u002F2.quickstart",{"title":40,"path":41,"stem":42},"Connection Lifecycle","\u002Frealtime\u002Fconnection-lifecycle","2.realtime\u002F3.connection-lifecycle",{"title":44,"path":45,"stem":46},"Audio Input","\u002Frealtime\u002Faudio-input","2.realtime\u002F4.audio-input",{"title":48,"path":49,"stem":50},"Transcript Lifecycle","\u002Frealtime\u002Ftranscript-lifecycle","2.realtime\u002F5.transcript-lifecycle",{"title":52,"path":53,"stem":54},"Realtime Translation","\u002Frealtime\u002Frealtime-translation","2.realtime\u002F6.realtime-translation",{"title":56,"path":57,"stem":58},"Session Configuration","\u002Frealtime\u002Fsession-configuration","2.realtime\u002F7.session-configuration",{"title":60,"path":61,"stem":62},"Handling Interruptions & Silence","\u002Frealtime\u002Finterruptions-silence","2.realtime\u002F8.interruptions-silence","i-lucide-radio",{"title":65,"path":66,"stem":67,"children":68,"icon":91},"Recorded","\u002Frecorded","3.recorded\u002F1.index",[69,71,75,79,83,87],{"title":70,"path":66,"stem":67},"Recorded Overview",{"title":72,"path":73,"stem":74},"Transcribe Audio","\u002Frecorded\u002Ftranscribe-audio","3.recorded\u002F2.transcribe-audio",{"title":76,"path":77,"stem":78},"Timestamps & Speakers","\u002Frecorded\u002Ftimestamps-speakers","3.recorded\u002F3.timestamps-speakers",{"title":80,"path":81,"stem":82},"Subtitles","\u002Frecorded\u002Fsubtitles","3.recorded\u002F4.subtitles",{"title":84,"path":85,"stem":86},"Recorded Translation","\u002Frecorded\u002Ftranslation","3.recorded\u002F5.translation",{"title":88,"path":89,"stem":90},"Structured Results","\u002Frecorded\u002Fstructured-results","3.recorded\u002F6.structured-results","i-lucide-file-audio",{"title":93,"path":94,"stem":95,"children":96,"icon":123},"Concepts","\u002Fconcepts","4.concepts\u002F1.index",[97,99,103,107,111,115,119],{"title":98,"path":94,"stem":95},"Voice Context Layer",{"title":100,"path":101,"stem":102},"Stable vs. Partial Text","\u002Fconcepts\u002Fstable-vs-partial-text","4.concepts\u002F2.stable-vs-partial-text",{"title":104,"path":105,"stem":106},"StableStream","\u002Fconcepts\u002Fstablestream","4.concepts\u002F3.stablestream",{"title":108,"path":109,"stem":110},"Context-Aware Processing","\u002Fconcepts\u002Fcontext-aware-processing","4.concepts\u002F4.context-aware-processing",{"title":112,"path":113,"stem":114},"Understanding Latency","\u002Fconcepts\u002Flatency","4.concepts\u002F5.latency",{"title":116,"path":117,"stem":118},"Live Translation","\u002Fconcepts\u002Flive-translation","4.concepts\u002F6.live-translation",{"title":120,"path":121,"stem":122},"Trinity Engine","\u002Fconcepts\u002Ftrinity-engine","4.concepts\u002F7.trinity-engine","i-lucide-brain",{"title":125,"path":126,"stem":127,"children":128,"icon":151},"Guides","\u002Fguides","5.guides\u002F1.index",[129,131,135,139,143,147],{"title":130,"path":126,"stem":127},"Browser Live Captions",{"title":132,"path":133,"stem":134},"Server-side Streaming","\u002Fguides\u002Fserver-side-streaming","5.guides\u002F2.server-side-streaming",{"title":136,"path":137,"stem":138},"Build a Stable Caption UI","\u002Fguides\u002Fstable-caption-ui","5.guides\u002F3.stable-caption-ui",{"title":140,"path":141,"stem":142},"Build Live Translation","\u002Fguides\u002Flive-translation","5.guides\u002F4.live-translation",{"title":144,"path":145,"stem":146},"Save a Transcript","\u002Fguides\u002Fsave-transcript","5.guides\u002F5.save-transcript",{"title":148,"path":149,"stem":150},"Reconnect a Live Session","\u002Fguides\u002Freconnection","5.guides\u002F6.reconnection","i-lucide-book-open",{"title":153,"path":154,"stem":155,"children":156,"icon":191},"Reference","\u002Fapi-reference","6.api-reference\u002F1.index",[157,159,163,167,171,175,179,183,187],{"title":158,"path":154,"stem":155},"API Reference Overview",{"title":160,"path":161,"stem":162},"Realtime API","\u002Fapi-reference\u002Frealtime-api","6.api-reference\u002F2.realtime-api",{"title":164,"path":165,"stem":166},"Client Messages","\u002Fapi-reference\u002Fclient-messages","6.api-reference\u002F3.client-messages",{"title":168,"path":169,"stem":170},"Server Events","\u002Fapi-reference\u002Fserver-events","6.api-reference\u002F4.server-events",{"title":172,"path":173,"stem":174},"Transcription API","\u002Fapi-reference\u002Ftranscription","6.api-reference\u002F5.transcription",{"title":176,"path":177,"stem":178},"Languages & Models","\u002Fapi-reference\u002Flanguages","6.api-reference\u002F6.languages",{"title":180,"path":181,"stem":182},"Errors","\u002Fapi-reference\u002Ferrors","6.api-reference\u002F7.errors",{"title":184,"path":185,"stem":186},"Rate Limits","\u002Fapi-reference\u002Frate-limits","6.api-reference\u002F8.rate-limits",{"title":188,"path":189,"stem":190},"Admin API","\u002Fapi-reference\u002Fadmin","6.api-reference\u002F9.admin","i-lucide-code",{"title":193,"path":194,"stem":195,"children":196,"icon":219},"Production","\u002Fproduction","7.production\u002F1.index",[197,199,203,207,211,215],{"title":198,"path":194,"stem":195},"Production Checklist",{"title":200,"path":201,"stem":202},"Reconnection & Retries","\u002Fproduction\u002Freconnection-retries","7.production\u002F2.reconnection-retries",{"title":204,"path":205,"stem":206},"Latency Best Practices","\u002Fproduction\u002Flatency-best-practices","7.production\u002F3.latency-best-practices",{"title":208,"path":209,"stem":210},"Security & Privacy","\u002Fproduction\u002Fsecurity-privacy","7.production\u002F4.security-privacy",{"title":212,"path":213,"stem":214},"Data Retention","\u002Fproduction\u002Fdata-retention","7.production\u002F5.data-retention",{"title":216,"path":217,"stem":218},"Changelog","\u002Fproduction\u002Fchangelog","7.production\u002F6.changelog","i-lucide-server",{"id":221,"title":132,"body":222,"description":1076,"extension":1077,"links":1078,"meta":1079,"navigation":405,"path":133,"seo":1080,"status":1078,"stem":134,"__hash__":1081},"docs\u002F5.guides\u002F2.server-side-streaming.md",{"type":223,"value":224,"toc":1067},"minimark",[225,229,234,245,248,251,345,348,352,966,970,1010,1014,1030,1034,1041,1045,1063],[226,227,228],"p",{},"Connect your backend to LansonAI to stream audio from server-side sources (files, pipelines, telephony).",[230,231,233],"h2",{"id":232},"architecture","Architecture",[235,236,241],"pre",{"className":237,"code":239,"language":240},[238],"language-text","Your backend                     LansonAI                    Upstream STT\n  │                                │                            │\n  ├── WS connect (Bearer sk-...) ─→ session.created              │\n  │                                │                            │\n  ├── read audio file ───────────│                            │\n  ├── convert to PCM16LE\u002F16k ─────│                            │\n  ├── send binary frames ─────────→ gateway relay ────────────→ VAD + STT\n  │←── conversation.item.input_audio_transcription.completed ─│←──────────│\n  │                                │                            │\n  ├── close ──────────────────────→ meter flush                 │\n","text",[242,243,239],"code",{"__ignoreMap":244},"",[230,246,16],{"id":247},"authentication",[226,249,250],{},"Server-side connections use the API key directly:",[235,252,256],{"className":253,"code":254,"language":255,"meta":244,"style":244},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const ws = new WebSocket(\n  \"wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream\",\n  { headers: { Authorization: \"Bearer sk-...\" } }\n);\n","typescript",[242,257,258,285,301,336],{"__ignoreMap":244},[259,260,263,267,271,275,278,282],"span",{"class":261,"line":262},"line",1,[259,264,266],{"class":265},"spNyl","const",[259,268,270],{"class":269},"sTEyZ"," ws ",[259,272,274],{"class":273},"sMK4o","=",[259,276,277],{"class":273}," new",[259,279,281],{"class":280},"s2Zo4"," WebSocket",[259,283,284],{"class":269},"(\n",[259,286,288,291,295,298],{"class":261,"line":287},2,[259,289,290],{"class":273},"  \"",[259,292,294],{"class":293},"sfazB","wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream",[259,296,297],{"class":273},"\"",[259,299,300],{"class":273},",\n",[259,302,304,307,311,314,317,320,322,325,328,330,333],{"class":261,"line":303},3,[259,305,306],{"class":273},"  {",[259,308,310],{"class":309},"swJcz"," headers",[259,312,313],{"class":273},":",[259,315,316],{"class":273}," {",[259,318,319],{"class":309}," Authorization",[259,321,313],{"class":273},[259,323,324],{"class":273}," \"",[259,326,327],{"class":293},"Bearer sk-...",[259,329,297],{"class":273},[259,331,332],{"class":273}," }",[259,334,335],{"class":273}," }\n",[259,337,339,342],{"class":261,"line":338},4,[259,340,341],{"class":269},")",[259,343,344],{"class":273},";\n",[226,346,347],{},"No session token needed — the key never leaves your server.",[230,349,351],{"id":350},"streaming-a-file","Streaming a file",[235,353,355],{"className":253,"code":354,"language":255,"meta":244,"style":244},"import { readFileSync } from \"fs\";\nimport WebSocket from \"ws\";\n\nconst ws = new WebSocket(\n  \"wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream\",\n  { headers: { Authorization: \"Bearer sk-...\" } }\n);\n\n  ws.on(\"open\", () => {\n    \u002F\u002F Read pre-converted PCM16LE 16kHz mono audio\n    const audio = readFileSync(\"audio.pcm\");\n    const FRAME_BYTES = 3200; \u002F\u002F 100ms at 16kHz 16-bit mono\n    let offset = 0;\n\n    const sendFrame = () => {\n      if (offset >= audio.length) {\n        ws.send(JSON.stringify({ type: \"input_audio_buffer.flush\" }));\n        return;\n      }\n      const frame = audio.slice(offset, offset + FRAME_BYTES);\n      ws.send(frame); \u002F\u002F binary frame\n      offset += FRAME_BYTES;\n      setTimeout(sendFrame, 100); \u002F\u002F simulate real-time\n    };\n    sendFrame();\n  });\n\nws.on(\"message\", (data) => {\n  const event = JSON.parse(data.toString());\n  if (event.type === \"conversation.item.input_audio_transcription.completed\") {\n    console.log(`[${event.utterance_index}] ${event.text}`);\n  }\n});\n",[242,356,357,382,401,407,421,432,457,464,469,503,510,537,557,573,578,594,622,667,675,681,716,738,751,774,780,791,801,806,838,871,901,951,957],{"__ignoreMap":244},[259,358,359,363,365,368,370,373,375,378,380],{"class":261,"line":262},[259,360,362],{"class":361},"s7zQu","import",[259,364,316],{"class":273},[259,366,367],{"class":269}," readFileSync",[259,369,332],{"class":273},[259,371,372],{"class":361}," from",[259,374,324],{"class":273},[259,376,377],{"class":293},"fs",[259,379,297],{"class":273},[259,381,344],{"class":273},[259,383,384,386,389,392,394,397,399],{"class":261,"line":287},[259,385,362],{"class":361},[259,387,388],{"class":269}," WebSocket ",[259,390,391],{"class":361},"from",[259,393,324],{"class":273},[259,395,396],{"class":293},"ws",[259,398,297],{"class":273},[259,400,344],{"class":273},[259,402,403],{"class":261,"line":303},[259,404,406],{"emptyLinePlaceholder":405},true,"\n",[259,408,409,411,413,415,417,419],{"class":261,"line":338},[259,410,266],{"class":265},[259,412,270],{"class":269},[259,414,274],{"class":273},[259,416,277],{"class":273},[259,418,281],{"class":280},[259,420,284],{"class":269},[259,422,424,426,428,430],{"class":261,"line":423},5,[259,425,290],{"class":273},[259,427,294],{"class":293},[259,429,297],{"class":273},[259,431,300],{"class":273},[259,433,435,437,439,441,443,445,447,449,451,453,455],{"class":261,"line":434},6,[259,436,306],{"class":273},[259,438,310],{"class":309},[259,440,313],{"class":273},[259,442,316],{"class":273},[259,444,319],{"class":309},[259,446,313],{"class":273},[259,448,324],{"class":273},[259,450,327],{"class":293},[259,452,297],{"class":273},[259,454,332],{"class":273},[259,456,335],{"class":273},[259,458,460,462],{"class":261,"line":459},7,[259,461,341],{"class":269},[259,463,344],{"class":273},[259,465,467],{"class":261,"line":466},8,[259,468,406],{"emptyLinePlaceholder":405},[259,470,472,475,478,481,484,486,489,491,494,497,500],{"class":261,"line":471},9,[259,473,474],{"class":269},"  ws",[259,476,477],{"class":273},".",[259,479,480],{"class":280},"on",[259,482,483],{"class":269},"(",[259,485,297],{"class":273},[259,487,488],{"class":293},"open",[259,490,297],{"class":273},[259,492,493],{"class":273},",",[259,495,496],{"class":273}," ()",[259,498,499],{"class":265}," =>",[259,501,502],{"class":273}," {\n",[259,504,506],{"class":261,"line":505},10,[259,507,509],{"class":508},"sHwdD","    \u002F\u002F Read pre-converted PCM16LE 16kHz mono audio\n",[259,511,513,516,519,522,524,526,528,531,533,535],{"class":261,"line":512},11,[259,514,515],{"class":265},"    const",[259,517,518],{"class":269}," audio",[259,520,521],{"class":273}," =",[259,523,367],{"class":280},[259,525,483],{"class":309},[259,527,297],{"class":273},[259,529,530],{"class":293},"audio.pcm",[259,532,297],{"class":273},[259,534,341],{"class":309},[259,536,344],{"class":273},[259,538,540,542,545,547,551,554],{"class":261,"line":539},12,[259,541,515],{"class":265},[259,543,544],{"class":269}," FRAME_BYTES",[259,546,521],{"class":273},[259,548,550],{"class":549},"sbssI"," 3200",[259,552,553],{"class":273},";",[259,555,556],{"class":508}," \u002F\u002F 100ms at 16kHz 16-bit mono\n",[259,558,560,563,566,568,571],{"class":261,"line":559},13,[259,561,562],{"class":265},"    let",[259,564,565],{"class":269}," offset",[259,567,521],{"class":273},[259,569,570],{"class":549}," 0",[259,572,344],{"class":273},[259,574,576],{"class":261,"line":575},14,[259,577,406],{"emptyLinePlaceholder":405},[259,579,581,583,586,588,590,592],{"class":261,"line":580},15,[259,582,515],{"class":265},[259,584,585],{"class":269}," sendFrame",[259,587,521],{"class":273},[259,589,496],{"class":273},[259,591,499],{"class":265},[259,593,502],{"class":273},[259,595,597,600,603,606,609,611,613,616,619],{"class":261,"line":596},16,[259,598,599],{"class":361},"      if",[259,601,602],{"class":309}," (",[259,604,605],{"class":269},"offset",[259,607,608],{"class":273}," >=",[259,610,518],{"class":269},[259,612,477],{"class":273},[259,614,615],{"class":269},"length",[259,617,618],{"class":309},") ",[259,620,621],{"class":273},"{\n",[259,623,625,628,630,633,635,638,640,643,645,648,651,653,655,658,660,662,665],{"class":261,"line":624},17,[259,626,627],{"class":269},"        ws",[259,629,477],{"class":273},[259,631,632],{"class":280},"send",[259,634,483],{"class":309},[259,636,637],{"class":269},"JSON",[259,639,477],{"class":273},[259,641,642],{"class":280},"stringify",[259,644,483],{"class":309},[259,646,647],{"class":273},"{",[259,649,650],{"class":309}," type",[259,652,313],{"class":273},[259,654,324],{"class":273},[259,656,657],{"class":293},"input_audio_buffer.flush",[259,659,297],{"class":273},[259,661,332],{"class":273},[259,663,664],{"class":309},"))",[259,666,344],{"class":273},[259,668,670,673],{"class":261,"line":669},18,[259,671,672],{"class":361},"        return",[259,674,344],{"class":273},[259,676,678],{"class":261,"line":677},19,[259,679,680],{"class":273},"      }\n",[259,682,684,687,690,692,694,696,699,701,703,705,707,710,712,714],{"class":261,"line":683},20,[259,685,686],{"class":265},"      const",[259,688,689],{"class":269}," frame",[259,691,521],{"class":273},[259,693,518],{"class":269},[259,695,477],{"class":273},[259,697,698],{"class":280},"slice",[259,700,483],{"class":309},[259,702,605],{"class":269},[259,704,493],{"class":273},[259,706,565],{"class":269},[259,708,709],{"class":273}," +",[259,711,544],{"class":269},[259,713,341],{"class":309},[259,715,344],{"class":273},[259,717,719,722,724,726,728,731,733,735],{"class":261,"line":718},21,[259,720,721],{"class":269},"      ws",[259,723,477],{"class":273},[259,725,632],{"class":280},[259,727,483],{"class":309},[259,729,730],{"class":269},"frame",[259,732,341],{"class":309},[259,734,553],{"class":273},[259,736,737],{"class":508}," \u002F\u002F binary frame\n",[259,739,741,744,747,749],{"class":261,"line":740},22,[259,742,743],{"class":269},"      offset",[259,745,746],{"class":273}," +=",[259,748,544],{"class":269},[259,750,344],{"class":273},[259,752,754,757,759,762,764,767,769,771],{"class":261,"line":753},23,[259,755,756],{"class":280},"      setTimeout",[259,758,483],{"class":309},[259,760,761],{"class":269},"sendFrame",[259,763,493],{"class":273},[259,765,766],{"class":549}," 100",[259,768,341],{"class":309},[259,770,553],{"class":273},[259,772,773],{"class":508}," \u002F\u002F simulate real-time\n",[259,775,777],{"class":261,"line":776},24,[259,778,779],{"class":273},"    };\n",[259,781,783,786,789],{"class":261,"line":782},25,[259,784,785],{"class":280},"    sendFrame",[259,787,788],{"class":309},"()",[259,790,344],{"class":273},[259,792,794,797,799],{"class":261,"line":793},26,[259,795,796],{"class":273},"  }",[259,798,341],{"class":269},[259,800,344],{"class":273},[259,802,804],{"class":261,"line":803},27,[259,805,406],{"emptyLinePlaceholder":405},[259,807,809,811,813,815,817,819,822,824,826,828,832,834,836],{"class":261,"line":808},28,[259,810,396],{"class":269},[259,812,477],{"class":273},[259,814,480],{"class":280},[259,816,483],{"class":269},[259,818,297],{"class":273},[259,820,821],{"class":293},"message",[259,823,297],{"class":273},[259,825,493],{"class":273},[259,827,602],{"class":273},[259,829,831],{"class":830},"sHdIc","data",[259,833,341],{"class":273},[259,835,499],{"class":265},[259,837,502],{"class":273},[259,839,841,844,847,849,852,854,857,859,861,863,866,869],{"class":261,"line":840},29,[259,842,843],{"class":265},"  const",[259,845,846],{"class":269}," event",[259,848,521],{"class":273},[259,850,851],{"class":269}," JSON",[259,853,477],{"class":273},[259,855,856],{"class":280},"parse",[259,858,483],{"class":309},[259,860,831],{"class":269},[259,862,477],{"class":273},[259,864,865],{"class":280},"toString",[259,867,868],{"class":309},"())",[259,870,344],{"class":273},[259,872,874,877,879,882,884,887,890,892,895,897,899],{"class":261,"line":873},30,[259,875,876],{"class":361},"  if",[259,878,602],{"class":309},[259,880,881],{"class":269},"event",[259,883,477],{"class":273},[259,885,886],{"class":269},"type",[259,888,889],{"class":273}," ===",[259,891,324],{"class":273},[259,893,894],{"class":293},"conversation.item.input_audio_transcription.completed",[259,896,297],{"class":273},[259,898,618],{"class":309},[259,900,621],{"class":273},[259,902,904,907,909,912,914,917,920,923,925,927,930,933,936,938,940,942,944,947,949],{"class":261,"line":903},31,[259,905,906],{"class":269},"    console",[259,908,477],{"class":273},[259,910,911],{"class":280},"log",[259,913,483],{"class":309},[259,915,916],{"class":273},"`",[259,918,919],{"class":293},"[",[259,921,922],{"class":273},"${",[259,924,881],{"class":269},[259,926,477],{"class":273},[259,928,929],{"class":269},"utterance_index",[259,931,932],{"class":273},"}",[259,934,935],{"class":293},"] ",[259,937,922],{"class":273},[259,939,881],{"class":269},[259,941,477],{"class":273},[259,943,240],{"class":269},[259,945,946],{"class":273},"}`",[259,948,341],{"class":309},[259,950,344],{"class":273},[259,952,954],{"class":261,"line":953},32,[259,955,956],{"class":273},"  }\n",[259,958,960,962,964],{"class":261,"line":959},33,[259,961,932],{"class":273},[259,963,341],{"class":269},[259,965,344],{"class":273},[230,967,969],{"id":968},"converting-audio-server-side","Converting audio server-side",[235,971,975],{"className":972,"code":973,"language":974,"meta":244,"style":244},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.pcm\n","bash",[242,976,977],{"__ignoreMap":244},[259,978,979,983,986,989,992,995,998,1001,1004,1007],{"class":261,"line":262},[259,980,982],{"class":981},"sBMFI","ffmpeg",[259,984,985],{"class":293}," -i",[259,987,988],{"class":293}," input.mp3",[259,990,991],{"class":293}," -ar",[259,993,994],{"class":549}," 16000",[259,996,997],{"class":293}," -ac",[259,999,1000],{"class":549}," 1",[259,1002,1003],{"class":293}," -c:a",[259,1005,1006],{"class":293}," pcm_s16le",[259,1008,1009],{"class":293}," output.pcm\n",[230,1011,1013],{"id":1012},"connection-management","Connection management",[1015,1016,1017,1021,1024,1027],"ul",{},[1018,1019,1020],"li",{},"Keep the connection alive by sending frames at a steady rate",[1018,1022,1023],{},"If audio source pauses, send silent frames to avoid idle timeout",[1018,1025,1026],{},"Close explicitly when done to flush meter data",[1018,1028,1029],{},"For long-running streams, monitor session duration limits",[230,1031,1033],{"id":1032},"token-management","Token management",[226,1035,1036,1037,1040],{},"Server-side connections do not need session tokens. Use ",[242,1038,1039],{},"Authorization: Bearer sk-..."," in the WebSocket upgrade headers.",[230,1042,1044],{"id":1043},"related","Related",[1015,1046,1047,1053,1058],{},[1018,1048,1049,1052],{},[1050,1051,36],"a",{"href":37}," — basic examples",[1018,1054,1055,1057],{},[1050,1056,44],{"href":45}," — format requirements",[1018,1059,1060,1062],{},[1050,1061,40],{"href":41}," — timeouts",[1064,1065,1066],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":244,"searchDepth":262,"depth":287,"links":1068},[1069,1070,1071,1072,1073,1074,1075],{"id":232,"depth":287,"text":233},{"id":247,"depth":287,"text":16},{"id":350,"depth":287,"text":351},{"id":968,"depth":287,"text":969},{"id":1012,"depth":287,"text":1013},{"id":1032,"depth":287,"text":1033},{"id":1043,"depth":287,"text":1044},"Backend pushes an audio stream to LansonAI.","md",null,{},{"title":132,"description":1076},"JhLTLjYlY4L9zOfFpCXTRCQ8QEDgVW64Voi6rV3wwA4",[1083,1085],{"title":130,"path":126,"stem":127,"description":1084,"children":-1},"Browser microphone → Lanson → caption UI.",{"title":136,"path":137,"stem":138,"description":1086,"children":-1},"Consume StableStream events without manufacturing caption jitter.",1787340798074]