[{"data":1,"prerenderedAt":1919},["ShallowReactive",2],{"navigation":3,"\u002Frealtime\u002Fquickstart":220,"\u002Frealtime\u002Fquickstart-surround":1914},[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":36,"body":222,"description":1908,"extension":1909,"links":1910,"meta":1911,"navigation":279,"path":37,"seo":1912,"status":1910,"stem":38,"__hash__":1913},"docs\u002F2.realtime\u002F2.quickstart.md",{"type":223,"value":224,"toc":1901},"minimark",[225,229,234,1017,1021,1024,1418,1422,1828,1832,1839,1867,1873,1877,1897],[226,227,228],"p",{},"Minimal runnable examples for real-time streaming transcription.",[230,231,233],"h2",{"id":232},"nodejs-typescript","Node.js \u002F TypeScript",[235,236,241],"pre",{"className":237,"code":238,"language":239,"meta":240,"style":240},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import WebSocket from \"ws\";\n\nconst BASE = \"wss:\u002F\u002Faudio.lansonai.com\";\nconst SK = \"sk-...\";\n\nconst ws = new WebSocket(`${BASE}\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream`, {\n  headers: { Authorization: `Bearer ${SK}` },\n});\n\nws.on(\"open\", () => {\n  \u002F\u002F Optional: configure session\n  ws.send(JSON.stringify({ type: \"session.update\", language: \"zh\" }));\n\n  \u002F\u002F Send PCM16LE base64 audio frames (100ms recommended)\n  ws.send(JSON.stringify({\n    type: \"input_audio_buffer.append\",\n    audio: \"\u003Cbase64 PCM16LE>\",\n  }));\n\n  \u002F\u002F Flush when a speech segment ends\n  ws.send(JSON.stringify({ type: \"input_audio_buffer.flush\" }));\n});\n\nws.on(\"message\", (data) => {\n  const event = JSON.parse(data.toString());\n  switch (event.type) {\n    case \"session.created\":\n      console.log(\"Session:\", event.session_id, \"Plan:\", event.plan);\n      break;\n    case \"conversation.item.input_audio_transcription.completed\":\n      console.log(`[${event.utterance_index}] ${event.text}`);\n      break;\n    case \"error\":\n      console.error(\"Error:\", event.code, event.message);\n      break;\n  }\n});\n\nws.on(\"close\", (code) => console.log(`Closed: ${code}`));\n","typescript","",[242,243,244,274,281,303,322,327,368,404,414,419,449,456,516,521,527,549,567,584,594,599,605,643,652,657,690,724,745,761,812,820,834,879,886,900,938,945,951,960,965],"code",{"__ignoreMap":240},[245,246,249,253,257,260,264,268,271],"span",{"class":247,"line":248},"line",1,[245,250,252],{"class":251},"s7zQu","import",[245,254,256],{"class":255},"sTEyZ"," WebSocket ",[245,258,259],{"class":251},"from",[245,261,263],{"class":262},"sMK4o"," \"",[245,265,267],{"class":266},"sfazB","ws",[245,269,270],{"class":262},"\"",[245,272,273],{"class":262},";\n",[245,275,277],{"class":247,"line":276},2,[245,278,280],{"emptyLinePlaceholder":279},true,"\n",[245,282,284,288,291,294,296,299,301],{"class":247,"line":283},3,[245,285,287],{"class":286},"spNyl","const",[245,289,290],{"class":255}," BASE ",[245,292,293],{"class":262},"=",[245,295,263],{"class":262},[245,297,298],{"class":266},"wss:\u002F\u002Faudio.lansonai.com",[245,300,270],{"class":262},[245,302,273],{"class":262},[245,304,306,308,311,313,315,318,320],{"class":247,"line":305},4,[245,307,287],{"class":286},[245,309,310],{"class":255}," SK ",[245,312,293],{"class":262},[245,314,263],{"class":262},[245,316,317],{"class":266},"sk-...",[245,319,270],{"class":262},[245,321,273],{"class":262},[245,323,325],{"class":247,"line":324},5,[245,326,280],{"emptyLinePlaceholder":279},[245,328,330,332,335,337,340,344,347,350,353,356,359,362,365],{"class":247,"line":329},6,[245,331,287],{"class":286},[245,333,334],{"class":255}," ws ",[245,336,293],{"class":262},[245,338,339],{"class":262}," new",[245,341,343],{"class":342},"s2Zo4"," WebSocket",[245,345,346],{"class":255},"(",[245,348,349],{"class":262},"`${",[245,351,352],{"class":255},"BASE",[245,354,355],{"class":262},"}",[245,357,358],{"class":266},"\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream",[245,360,361],{"class":262},"`",[245,363,364],{"class":262},",",[245,366,367],{"class":262}," {\n",[245,369,371,375,378,381,384,386,389,392,395,398,401],{"class":247,"line":370},7,[245,372,374],{"class":373},"swJcz","  headers",[245,376,377],{"class":262},":",[245,379,380],{"class":262}," {",[245,382,383],{"class":373}," Authorization",[245,385,377],{"class":262},[245,387,388],{"class":262}," `",[245,390,391],{"class":266},"Bearer ",[245,393,394],{"class":262},"${",[245,396,397],{"class":255},"SK",[245,399,400],{"class":262},"}`",[245,402,403],{"class":262}," },\n",[245,405,407,409,412],{"class":247,"line":406},8,[245,408,355],{"class":262},[245,410,411],{"class":255},")",[245,413,273],{"class":262},[245,415,417],{"class":247,"line":416},9,[245,418,280],{"emptyLinePlaceholder":279},[245,420,422,424,427,430,432,434,437,439,441,444,447],{"class":247,"line":421},10,[245,423,267],{"class":255},[245,425,426],{"class":262},".",[245,428,429],{"class":342},"on",[245,431,346],{"class":255},[245,433,270],{"class":262},[245,435,436],{"class":266},"open",[245,438,270],{"class":262},[245,440,364],{"class":262},[245,442,443],{"class":262}," ()",[245,445,446],{"class":286}," =>",[245,448,367],{"class":262},[245,450,452],{"class":247,"line":451},11,[245,453,455],{"class":454},"sHwdD","  \u002F\u002F Optional: configure session\n",[245,457,459,462,464,467,469,472,474,477,479,482,485,487,489,492,494,496,499,501,503,506,508,511,514],{"class":247,"line":458},12,[245,460,461],{"class":255},"  ws",[245,463,426],{"class":262},[245,465,466],{"class":342},"send",[245,468,346],{"class":373},[245,470,471],{"class":255},"JSON",[245,473,426],{"class":262},[245,475,476],{"class":342},"stringify",[245,478,346],{"class":373},[245,480,481],{"class":262},"{",[245,483,484],{"class":373}," type",[245,486,377],{"class":262},[245,488,263],{"class":262},[245,490,491],{"class":266},"session.update",[245,493,270],{"class":262},[245,495,364],{"class":262},[245,497,498],{"class":373}," language",[245,500,377],{"class":262},[245,502,263],{"class":262},[245,504,505],{"class":266},"zh",[245,507,270],{"class":262},[245,509,510],{"class":262}," }",[245,512,513],{"class":373},"))",[245,515,273],{"class":262},[245,517,519],{"class":247,"line":518},13,[245,520,280],{"emptyLinePlaceholder":279},[245,522,524],{"class":247,"line":523},14,[245,525,526],{"class":454},"  \u002F\u002F Send PCM16LE base64 audio frames (100ms recommended)\n",[245,528,530,532,534,536,538,540,542,544,546],{"class":247,"line":529},15,[245,531,461],{"class":255},[245,533,426],{"class":262},[245,535,466],{"class":342},[245,537,346],{"class":373},[245,539,471],{"class":255},[245,541,426],{"class":262},[245,543,476],{"class":342},[245,545,346],{"class":373},[245,547,548],{"class":262},"{\n",[245,550,552,555,557,559,562,564],{"class":247,"line":551},16,[245,553,554],{"class":373},"    type",[245,556,377],{"class":262},[245,558,263],{"class":262},[245,560,561],{"class":266},"input_audio_buffer.append",[245,563,270],{"class":262},[245,565,566],{"class":262},",\n",[245,568,570,573,575,577,580,582],{"class":247,"line":569},17,[245,571,572],{"class":373},"    audio",[245,574,377],{"class":262},[245,576,263],{"class":262},[245,578,579],{"class":266},"\u003Cbase64 PCM16LE>",[245,581,270],{"class":262},[245,583,566],{"class":262},[245,585,587,590,592],{"class":247,"line":586},18,[245,588,589],{"class":262},"  }",[245,591,513],{"class":373},[245,593,273],{"class":262},[245,595,597],{"class":247,"line":596},19,[245,598,280],{"emptyLinePlaceholder":279},[245,600,602],{"class":247,"line":601},20,[245,603,604],{"class":454},"  \u002F\u002F Flush when a speech segment ends\n",[245,606,608,610,612,614,616,618,620,622,624,626,628,630,632,635,637,639,641],{"class":247,"line":607},21,[245,609,461],{"class":255},[245,611,426],{"class":262},[245,613,466],{"class":342},[245,615,346],{"class":373},[245,617,471],{"class":255},[245,619,426],{"class":262},[245,621,476],{"class":342},[245,623,346],{"class":373},[245,625,481],{"class":262},[245,627,484],{"class":373},[245,629,377],{"class":262},[245,631,263],{"class":262},[245,633,634],{"class":266},"input_audio_buffer.flush",[245,636,270],{"class":262},[245,638,510],{"class":262},[245,640,513],{"class":373},[245,642,273],{"class":262},[245,644,646,648,650],{"class":247,"line":645},22,[245,647,355],{"class":262},[245,649,411],{"class":255},[245,651,273],{"class":262},[245,653,655],{"class":247,"line":654},23,[245,656,280],{"emptyLinePlaceholder":279},[245,658,660,662,664,666,668,670,673,675,677,680,684,686,688],{"class":247,"line":659},24,[245,661,267],{"class":255},[245,663,426],{"class":262},[245,665,429],{"class":342},[245,667,346],{"class":255},[245,669,270],{"class":262},[245,671,672],{"class":266},"message",[245,674,270],{"class":262},[245,676,364],{"class":262},[245,678,679],{"class":262}," (",[245,681,683],{"class":682},"sHdIc","data",[245,685,411],{"class":262},[245,687,446],{"class":286},[245,689,367],{"class":262},[245,691,693,696,699,702,705,707,710,712,714,716,719,722],{"class":247,"line":692},25,[245,694,695],{"class":286},"  const",[245,697,698],{"class":255}," event",[245,700,701],{"class":262}," =",[245,703,704],{"class":255}," JSON",[245,706,426],{"class":262},[245,708,709],{"class":342},"parse",[245,711,346],{"class":373},[245,713,683],{"class":255},[245,715,426],{"class":262},[245,717,718],{"class":342},"toString",[245,720,721],{"class":373},"())",[245,723,273],{"class":262},[245,725,727,730,732,735,737,740,743],{"class":247,"line":726},26,[245,728,729],{"class":251},"  switch",[245,731,679],{"class":373},[245,733,734],{"class":255},"event",[245,736,426],{"class":262},[245,738,739],{"class":255},"type",[245,741,742],{"class":373},") ",[245,744,548],{"class":262},[245,746,748,751,753,756,758],{"class":247,"line":747},27,[245,749,750],{"class":251},"    case",[245,752,263],{"class":262},[245,754,755],{"class":266},"session.created",[245,757,270],{"class":262},[245,759,760],{"class":262},":\n",[245,762,764,767,769,772,774,776,779,781,783,785,787,790,792,794,797,799,801,803,805,808,810],{"class":247,"line":763},28,[245,765,766],{"class":255},"      console",[245,768,426],{"class":262},[245,770,771],{"class":342},"log",[245,773,346],{"class":373},[245,775,270],{"class":262},[245,777,778],{"class":266},"Session:",[245,780,270],{"class":262},[245,782,364],{"class":262},[245,784,698],{"class":255},[245,786,426],{"class":262},[245,788,789],{"class":255},"session_id",[245,791,364],{"class":262},[245,793,263],{"class":262},[245,795,796],{"class":266},"Plan:",[245,798,270],{"class":262},[245,800,364],{"class":262},[245,802,698],{"class":255},[245,804,426],{"class":262},[245,806,807],{"class":255},"plan",[245,809,411],{"class":373},[245,811,273],{"class":262},[245,813,815,818],{"class":247,"line":814},29,[245,816,817],{"class":251},"      break",[245,819,273],{"class":262},[245,821,823,825,827,830,832],{"class":247,"line":822},30,[245,824,750],{"class":251},[245,826,263],{"class":262},[245,828,829],{"class":266},"conversation.item.input_audio_transcription.completed",[245,831,270],{"class":262},[245,833,760],{"class":262},[245,835,837,839,841,843,845,847,850,852,854,856,859,861,864,866,868,870,873,875,877],{"class":247,"line":836},31,[245,838,766],{"class":255},[245,840,426],{"class":262},[245,842,771],{"class":342},[245,844,346],{"class":373},[245,846,361],{"class":262},[245,848,849],{"class":266},"[",[245,851,394],{"class":262},[245,853,734],{"class":255},[245,855,426],{"class":262},[245,857,858],{"class":255},"utterance_index",[245,860,355],{"class":262},[245,862,863],{"class":266},"] ",[245,865,394],{"class":262},[245,867,734],{"class":255},[245,869,426],{"class":262},[245,871,872],{"class":255},"text",[245,874,400],{"class":262},[245,876,411],{"class":373},[245,878,273],{"class":262},[245,880,882,884],{"class":247,"line":881},32,[245,883,817],{"class":251},[245,885,273],{"class":262},[245,887,889,891,893,896,898],{"class":247,"line":888},33,[245,890,750],{"class":251},[245,892,263],{"class":262},[245,894,895],{"class":266},"error",[245,897,270],{"class":262},[245,899,760],{"class":262},[245,901,903,905,907,909,911,913,916,918,920,922,924,926,928,930,932,934,936],{"class":247,"line":902},34,[245,904,766],{"class":255},[245,906,426],{"class":262},[245,908,895],{"class":342},[245,910,346],{"class":373},[245,912,270],{"class":262},[245,914,915],{"class":266},"Error:",[245,917,270],{"class":262},[245,919,364],{"class":262},[245,921,698],{"class":255},[245,923,426],{"class":262},[245,925,242],{"class":255},[245,927,364],{"class":262},[245,929,698],{"class":255},[245,931,426],{"class":262},[245,933,672],{"class":255},[245,935,411],{"class":373},[245,937,273],{"class":262},[245,939,941,943],{"class":247,"line":940},35,[245,942,817],{"class":251},[245,944,273],{"class":262},[245,946,948],{"class":247,"line":947},36,[245,949,950],{"class":262},"  }\n",[245,952,954,956,958],{"class":247,"line":953},37,[245,955,355],{"class":262},[245,957,411],{"class":255},[245,959,273],{"class":262},[245,961,963],{"class":247,"line":962},38,[245,964,280],{"emptyLinePlaceholder":279},[245,966,968,970,972,974,976,978,981,983,985,987,989,991,993,996,998,1000,1002,1004,1007,1009,1011,1013,1015],{"class":247,"line":967},39,[245,969,267],{"class":255},[245,971,426],{"class":262},[245,973,429],{"class":342},[245,975,346],{"class":255},[245,977,270],{"class":262},[245,979,980],{"class":266},"close",[245,982,270],{"class":262},[245,984,364],{"class":262},[245,986,679],{"class":262},[245,988,242],{"class":682},[245,990,411],{"class":262},[245,992,446],{"class":286},[245,994,995],{"class":255}," console",[245,997,426],{"class":262},[245,999,771],{"class":342},[245,1001,346],{"class":255},[245,1003,361],{"class":262},[245,1005,1006],{"class":266},"Closed: ",[245,1008,394],{"class":262},[245,1010,242],{"class":255},[245,1012,400],{"class":262},[245,1014,513],{"class":255},[245,1016,273],{"class":262},[230,1018,1020],{"id":1019},"browser-javascript","Browser JavaScript",[226,1022,1023],{},"Browser connections require a session token obtained from your backend:",[235,1025,1029],{"className":1026,"code":1027,"language":1028,"meta":240,"style":240},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F 1. Get session token from your backend\nconst { token } = await fetch(\"\u002Fyour-backend\u002Fsession-token\", {\n  method: \"POST\",\n}).then(r => r.json());\n\n\u002F\u002F 2. Open WebSocket\nconst ws = new WebSocket(\n  `wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream?access_token=${token}`\n);\n\nws.onopen = () => {\n  \u002F\u002F 3. Capture microphone audio at 16kHz mono\n  const ctx = new AudioContext({ sampleRate: 16000 });\n  navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => {\n    const source = ctx.createMediaStreamSource(stream);\n    \u002F\u002F Use AudioWorklet to convert to PCM16LE and send frames\n  });\n};\n\nws.onmessage = (event) => {\n  const data = JSON.parse(event.data);\n  if (data.type === \"conversation.item.input_audio_transcription.completed\") {\n    console.log(data.text);\n  }\n};\n","javascript",[242,1030,1031,1036,1068,1084,1114,1118,1123,1138,1154,1160,1164,1181,1186,1219,1268,1293,1298,1306,1311,1315,1336,1363,1389,1410,1414],{"__ignoreMap":240},[245,1032,1033],{"class":247,"line":248},[245,1034,1035],{"class":454},"\u002F\u002F 1. Get session token from your backend\n",[245,1037,1038,1040,1042,1045,1047,1049,1052,1055,1057,1059,1062,1064,1066],{"class":247,"line":276},[245,1039,287],{"class":286},[245,1041,380],{"class":262},[245,1043,1044],{"class":255}," token ",[245,1046,355],{"class":262},[245,1048,701],{"class":262},[245,1050,1051],{"class":251}," await",[245,1053,1054],{"class":342}," fetch",[245,1056,346],{"class":255},[245,1058,270],{"class":262},[245,1060,1061],{"class":266},"\u002Fyour-backend\u002Fsession-token",[245,1063,270],{"class":262},[245,1065,364],{"class":262},[245,1067,367],{"class":262},[245,1069,1070,1073,1075,1077,1080,1082],{"class":247,"line":283},[245,1071,1072],{"class":373},"  method",[245,1074,377],{"class":262},[245,1076,263],{"class":262},[245,1078,1079],{"class":266},"POST",[245,1081,270],{"class":262},[245,1083,566],{"class":262},[245,1085,1086,1088,1090,1092,1095,1097,1100,1102,1105,1107,1110,1112],{"class":247,"line":305},[245,1087,355],{"class":262},[245,1089,411],{"class":255},[245,1091,426],{"class":262},[245,1093,1094],{"class":342},"then",[245,1096,346],{"class":255},[245,1098,1099],{"class":682},"r",[245,1101,446],{"class":286},[245,1103,1104],{"class":255}," r",[245,1106,426],{"class":262},[245,1108,1109],{"class":342},"json",[245,1111,721],{"class":255},[245,1113,273],{"class":262},[245,1115,1116],{"class":247,"line":324},[245,1117,280],{"emptyLinePlaceholder":279},[245,1119,1120],{"class":247,"line":329},[245,1121,1122],{"class":454},"\u002F\u002F 2. Open WebSocket\n",[245,1124,1125,1127,1129,1131,1133,1135],{"class":247,"line":370},[245,1126,287],{"class":286},[245,1128,334],{"class":255},[245,1130,293],{"class":262},[245,1132,339],{"class":262},[245,1134,343],{"class":342},[245,1136,1137],{"class":255},"(\n",[245,1139,1140,1143,1146,1148,1151],{"class":247,"line":406},[245,1141,1142],{"class":262},"  `",[245,1144,1145],{"class":266},"wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream?access_token=",[245,1147,394],{"class":262},[245,1149,1150],{"class":255},"token",[245,1152,1153],{"class":262},"}`\n",[245,1155,1156,1158],{"class":247,"line":416},[245,1157,411],{"class":255},[245,1159,273],{"class":262},[245,1161,1162],{"class":247,"line":421},[245,1163,280],{"emptyLinePlaceholder":279},[245,1165,1166,1168,1170,1173,1175,1177,1179],{"class":247,"line":451},[245,1167,267],{"class":255},[245,1169,426],{"class":262},[245,1171,1172],{"class":342},"onopen",[245,1174,701],{"class":262},[245,1176,443],{"class":262},[245,1178,446],{"class":286},[245,1180,367],{"class":262},[245,1182,1183],{"class":247,"line":458},[245,1184,1185],{"class":454},"  \u002F\u002F 3. Capture microphone audio at 16kHz mono\n",[245,1187,1188,1190,1193,1195,1197,1200,1202,1204,1207,1209,1213,1215,1217],{"class":247,"line":518},[245,1189,695],{"class":286},[245,1191,1192],{"class":255}," ctx",[245,1194,701],{"class":262},[245,1196,339],{"class":262},[245,1198,1199],{"class":342}," AudioContext",[245,1201,346],{"class":373},[245,1203,481],{"class":262},[245,1205,1206],{"class":373}," sampleRate",[245,1208,377],{"class":262},[245,1210,1212],{"class":1211},"sbssI"," 16000",[245,1214,510],{"class":262},[245,1216,411],{"class":373},[245,1218,273],{"class":262},[245,1220,1221,1224,1226,1229,1231,1234,1236,1238,1241,1243,1247,1249,1251,1253,1255,1257,1259,1262,1264,1266],{"class":247,"line":523},[245,1222,1223],{"class":255},"  navigator",[245,1225,426],{"class":262},[245,1227,1228],{"class":255},"mediaDevices",[245,1230,426],{"class":262},[245,1232,1233],{"class":342},"getUserMedia",[245,1235,346],{"class":373},[245,1237,481],{"class":262},[245,1239,1240],{"class":373}," audio",[245,1242,377],{"class":262},[245,1244,1246],{"class":1245},"sfNiH"," true",[245,1248,510],{"class":262},[245,1250,411],{"class":373},[245,1252,426],{"class":262},[245,1254,1094],{"class":342},[245,1256,346],{"class":373},[245,1258,346],{"class":262},[245,1260,1261],{"class":682},"stream",[245,1263,411],{"class":262},[245,1265,446],{"class":286},[245,1267,367],{"class":262},[245,1269,1270,1273,1276,1278,1280,1282,1285,1287,1289,1291],{"class":247,"line":529},[245,1271,1272],{"class":286},"    const",[245,1274,1275],{"class":255}," source",[245,1277,701],{"class":262},[245,1279,1192],{"class":255},[245,1281,426],{"class":262},[245,1283,1284],{"class":342},"createMediaStreamSource",[245,1286,346],{"class":373},[245,1288,1261],{"class":255},[245,1290,411],{"class":373},[245,1292,273],{"class":262},[245,1294,1295],{"class":247,"line":551},[245,1296,1297],{"class":454},"    \u002F\u002F Use AudioWorklet to convert to PCM16LE and send frames\n",[245,1299,1300,1302,1304],{"class":247,"line":569},[245,1301,589],{"class":262},[245,1303,411],{"class":373},[245,1305,273],{"class":262},[245,1307,1308],{"class":247,"line":586},[245,1309,1310],{"class":262},"};\n",[245,1312,1313],{"class":247,"line":596},[245,1314,280],{"emptyLinePlaceholder":279},[245,1316,1317,1319,1321,1324,1326,1328,1330,1332,1334],{"class":247,"line":601},[245,1318,267],{"class":255},[245,1320,426],{"class":262},[245,1322,1323],{"class":342},"onmessage",[245,1325,701],{"class":262},[245,1327,679],{"class":262},[245,1329,734],{"class":682},[245,1331,411],{"class":262},[245,1333,446],{"class":286},[245,1335,367],{"class":262},[245,1337,1338,1340,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361],{"class":247,"line":607},[245,1339,695],{"class":286},[245,1341,1342],{"class":255}," data",[245,1344,701],{"class":262},[245,1346,704],{"class":255},[245,1348,426],{"class":262},[245,1350,709],{"class":342},[245,1352,346],{"class":373},[245,1354,734],{"class":255},[245,1356,426],{"class":262},[245,1358,683],{"class":255},[245,1360,411],{"class":373},[245,1362,273],{"class":262},[245,1364,1365,1368,1370,1372,1374,1376,1379,1381,1383,1385,1387],{"class":247,"line":645},[245,1366,1367],{"class":251},"  if",[245,1369,679],{"class":373},[245,1371,683],{"class":255},[245,1373,426],{"class":262},[245,1375,739],{"class":255},[245,1377,1378],{"class":262}," ===",[245,1380,263],{"class":262},[245,1382,829],{"class":266},[245,1384,270],{"class":262},[245,1386,742],{"class":373},[245,1388,548],{"class":262},[245,1390,1391,1394,1396,1398,1400,1402,1404,1406,1408],{"class":247,"line":654},[245,1392,1393],{"class":255},"    console",[245,1395,426],{"class":262},[245,1397,771],{"class":342},[245,1399,346],{"class":373},[245,1401,683],{"class":255},[245,1403,426],{"class":262},[245,1405,872],{"class":255},[245,1407,411],{"class":373},[245,1409,273],{"class":262},[245,1411,1412],{"class":247,"line":659},[245,1413,950],{"class":262},[245,1415,1416],{"class":247,"line":692},[245,1417,1310],{"class":262},[230,1419,1421],{"id":1420},"python","Python",[235,1423,1426],{"className":1424,"code":1425,"language":1420,"meta":240,"style":240},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import json, websocket\n\nws = websocket.create_connection(\n    \"wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream\",\n    header=[\"Authorization: Bearer sk-...\"]\n)\n\nprint(json.loads(ws.recv()))  # session.created\n\nws.send(json.dumps({\n    \"type\": \"input_audio_buffer.append\",\n    \"audio\": \"\u003Cbase64 PCM16LE>\"\n}))\nws.send(json.dumps({\"type\": \"input_audio_buffer.flush\"}))\n\nwhile True:\n    event = json.loads(ws.recv())\n    if event[\"type\"] == \"conversation.item.input_audio_transcription.completed\":\n        print(f\"[{event['utterance_index']}] {event['text']}\")\n    elif event[\"type\"] == \"error\":\n        print(f\"Error: {event['code']}: {event['message']}\")\n        break\n",[242,1427,1428,1440,1444,1461,1473,1491,1496,1500,1529,1533,1553,1571,1589,1594,1629,1633,1641,1665,1694,1746,1773,1823],{"__ignoreMap":240},[245,1429,1430,1432,1435,1437],{"class":247,"line":248},[245,1431,252],{"class":251},[245,1433,1434],{"class":255}," json",[245,1436,364],{"class":262},[245,1438,1439],{"class":255}," websocket\n",[245,1441,1442],{"class":247,"line":276},[245,1443,280],{"emptyLinePlaceholder":279},[245,1445,1446,1449,1451,1454,1456,1459],{"class":247,"line":283},[245,1447,1448],{"class":255},"ws ",[245,1450,293],{"class":262},[245,1452,1453],{"class":255}," websocket",[245,1455,426],{"class":262},[245,1457,1458],{"class":342},"create_connection",[245,1460,1137],{"class":262},[245,1462,1463,1466,1469,1471],{"class":247,"line":305},[245,1464,1465],{"class":262},"    \"",[245,1467,1468],{"class":266},"wss:\u002F\u002Faudio.lansonai.com\u002Fv1\u002Faudio\u002Ftranscriptions\u002Fstream",[245,1470,270],{"class":262},[245,1472,566],{"class":262},[245,1474,1475,1478,1481,1483,1486,1488],{"class":247,"line":324},[245,1476,1477],{"class":682},"    header",[245,1479,1480],{"class":262},"=[",[245,1482,270],{"class":262},[245,1484,1485],{"class":266},"Authorization: Bearer sk-...",[245,1487,270],{"class":262},[245,1489,1490],{"class":262},"]\n",[245,1492,1493],{"class":247,"line":329},[245,1494,1495],{"class":262},")\n",[245,1497,1498],{"class":247,"line":370},[245,1499,280],{"emptyLinePlaceholder":279},[245,1501,1502,1505,1507,1509,1511,1514,1516,1518,1520,1523,1526],{"class":247,"line":406},[245,1503,1504],{"class":342},"print",[245,1506,346],{"class":262},[245,1508,1109],{"class":342},[245,1510,426],{"class":262},[245,1512,1513],{"class":342},"loads",[245,1515,346],{"class":262},[245,1517,267],{"class":342},[245,1519,426],{"class":262},[245,1521,1522],{"class":342},"recv",[245,1524,1525],{"class":262},"()))",[245,1527,1528],{"class":454},"  # session.created\n",[245,1530,1531],{"class":247,"line":416},[245,1532,280],{"emptyLinePlaceholder":279},[245,1534,1535,1537,1539,1541,1543,1545,1547,1550],{"class":247,"line":421},[245,1536,267],{"class":255},[245,1538,426],{"class":262},[245,1540,466],{"class":342},[245,1542,346],{"class":262},[245,1544,1109],{"class":342},[245,1546,426],{"class":262},[245,1548,1549],{"class":342},"dumps",[245,1551,1552],{"class":262},"({\n",[245,1554,1555,1557,1559,1561,1563,1565,1567,1569],{"class":247,"line":451},[245,1556,1465],{"class":262},[245,1558,739],{"class":266},[245,1560,270],{"class":262},[245,1562,377],{"class":262},[245,1564,263],{"class":262},[245,1566,561],{"class":266},[245,1568,270],{"class":262},[245,1570,566],{"class":262},[245,1572,1573,1575,1578,1580,1582,1584,1586],{"class":247,"line":458},[245,1574,1465],{"class":262},[245,1576,1577],{"class":266},"audio",[245,1579,270],{"class":262},[245,1581,377],{"class":262},[245,1583,263],{"class":262},[245,1585,579],{"class":266},[245,1587,1588],{"class":262},"\"\n",[245,1590,1591],{"class":247,"line":518},[245,1592,1593],{"class":262},"}))\n",[245,1595,1596,1598,1600,1602,1604,1606,1608,1610,1613,1615,1617,1619,1621,1623,1625,1627],{"class":247,"line":523},[245,1597,267],{"class":255},[245,1599,426],{"class":262},[245,1601,466],{"class":342},[245,1603,346],{"class":262},[245,1605,1109],{"class":342},[245,1607,426],{"class":262},[245,1609,1549],{"class":342},[245,1611,1612],{"class":262},"({",[245,1614,270],{"class":262},[245,1616,739],{"class":266},[245,1618,270],{"class":262},[245,1620,377],{"class":262},[245,1622,263],{"class":262},[245,1624,634],{"class":266},[245,1626,270],{"class":262},[245,1628,1593],{"class":262},[245,1630,1631],{"class":247,"line":529},[245,1632,280],{"emptyLinePlaceholder":279},[245,1634,1635,1638],{"class":247,"line":551},[245,1636,1637],{"class":251},"while",[245,1639,1640],{"class":262}," True:\n",[245,1642,1643,1646,1648,1650,1652,1654,1656,1658,1660,1662],{"class":247,"line":569},[245,1644,1645],{"class":255},"    event ",[245,1647,293],{"class":262},[245,1649,1434],{"class":255},[245,1651,426],{"class":262},[245,1653,1513],{"class":342},[245,1655,346],{"class":262},[245,1657,267],{"class":342},[245,1659,426],{"class":262},[245,1661,1522],{"class":342},[245,1663,1664],{"class":262},"())\n",[245,1666,1667,1670,1672,1674,1676,1678,1680,1683,1686,1688,1690,1692],{"class":247,"line":586},[245,1668,1669],{"class":251},"    if",[245,1671,698],{"class":255},[245,1673,849],{"class":262},[245,1675,270],{"class":262},[245,1677,739],{"class":266},[245,1679,270],{"class":262},[245,1681,1682],{"class":262},"]",[245,1684,1685],{"class":262}," ==",[245,1687,263],{"class":262},[245,1689,829],{"class":266},[245,1691,270],{"class":262},[245,1693,760],{"class":262},[245,1695,1696,1699,1701,1704,1707,1709,1711,1713,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744],{"class":247,"line":596},[245,1697,1698],{"class":342},"        print",[245,1700,346],{"class":262},[245,1702,1703],{"class":286},"f",[245,1705,1706],{"class":266},"\"[",[245,1708,481],{"class":1211},[245,1710,734],{"class":342},[245,1712,849],{"class":262},[245,1714,1715],{"class":262},"'",[245,1717,858],{"class":266},[245,1719,1715],{"class":262},[245,1721,1682],{"class":262},[245,1723,355],{"class":1211},[245,1725,863],{"class":266},[245,1727,481],{"class":1211},[245,1729,734],{"class":342},[245,1731,849],{"class":262},[245,1733,1715],{"class":262},[245,1735,872],{"class":266},[245,1737,1715],{"class":262},[245,1739,1682],{"class":262},[245,1741,355],{"class":1211},[245,1743,270],{"class":266},[245,1745,1495],{"class":262},[245,1747,1748,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771],{"class":247,"line":601},[245,1749,1750],{"class":251},"    elif",[245,1752,698],{"class":255},[245,1754,849],{"class":262},[245,1756,270],{"class":262},[245,1758,739],{"class":266},[245,1760,270],{"class":262},[245,1762,1682],{"class":262},[245,1764,1685],{"class":262},[245,1766,263],{"class":262},[245,1768,895],{"class":266},[245,1770,270],{"class":262},[245,1772,760],{"class":262},[245,1774,1775,1777,1779,1781,1784,1786,1788,1790,1792,1794,1796,1798,1800,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821],{"class":247,"line":607},[245,1776,1698],{"class":342},[245,1778,346],{"class":262},[245,1780,1703],{"class":286},[245,1782,1783],{"class":266},"\"Error: ",[245,1785,481],{"class":1211},[245,1787,734],{"class":342},[245,1789,849],{"class":262},[245,1791,1715],{"class":262},[245,1793,242],{"class":266},[245,1795,1715],{"class":262},[245,1797,1682],{"class":262},[245,1799,355],{"class":1211},[245,1801,1802],{"class":266},": ",[245,1804,481],{"class":1211},[245,1806,734],{"class":342},[245,1808,849],{"class":262},[245,1810,1715],{"class":262},[245,1812,672],{"class":266},[245,1814,1715],{"class":262},[245,1816,1682],{"class":262},[245,1818,355],{"class":1211},[245,1820,270],{"class":266},[245,1822,1495],{"class":262},[245,1824,1825],{"class":247,"line":645},[245,1826,1827],{"class":251},"        break\n",[230,1829,1831],{"id":1830},"reference-script","Reference script",[226,1833,1834,1835,1838],{},"The repository's ",[242,1836,1837],{},"scripts\u002Frealtime-inspect.ts"," is a complete end-to-end validation script:",[235,1840,1844],{"className":1841,"code":1842,"language":1843,"meta":240,"style":240},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun run inspect:realtime -- --audio .\u002Fsample.wav\n","bash",[242,1845,1846],{"__ignoreMap":240},[245,1847,1848,1852,1855,1858,1861,1864],{"class":247,"line":248},[245,1849,1851],{"class":1850},"sBMFI","bun",[245,1853,1854],{"class":266}," run",[245,1856,1857],{"class":266}," inspect:realtime",[245,1859,1860],{"class":266}," --",[245,1862,1863],{"class":266}," --audio",[245,1865,1866],{"class":266}," .\u002Fsample.wav\n",[226,1868,1869,1870,426],{},"It handles session-token flow, PCM16LE encoding, 100ms frame simulation, and completed-event verification. Requires ",[242,1871,1872],{},"ffmpeg",[230,1874,1876],{"id":1875},"next-steps","Next steps",[1878,1879,1880,1887,1892],"ul",{},[1881,1882,1883,1886],"li",{},[1884,1885,40],"a",{"href":41}," — timeouts and close codes",[1881,1888,1889,1891],{},[1884,1890,44],{"href":45}," — format and frame size",[1881,1893,1894,1896],{},[1884,1895,164],{"href":165}," — all message types",[1898,1899,1900],"style",{},"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 .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 .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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":240,"searchDepth":248,"depth":276,"links":1902},[1903,1904,1905,1906,1907],{"id":232,"depth":276,"text":233},{"id":1019,"depth":276,"text":1020},{"id":1420,"depth":276,"text":1421},{"id":1830,"depth":276,"text":1831},{"id":1875,"depth":276,"text":1876},"Minimal runnable WebSocket examples.","md",null,{},{"title":36,"description":1908},"Ru5DmsPbvn60jTJJP5I2Pcx6OvfXgxa8GlDEdnNc7nE",[1915,1917],{"title":34,"path":30,"stem":31,"description":1916,"children":-1},"What the Realtime API does, input, output, and architecture.",{"title":40,"path":41,"stem":42,"description":1918,"children":-1},"Connect → configure → stream audio → receive events → close\u002Freconnect.",1787340798074]