[{"data":1,"prerenderedAt":834},["ShallowReactive",2],{"navigation":3,"\u002Frealtime\u002Fconnection-lifecycle":220,"\u002Frealtime\u002Fconnection-lifecycle-surround":829},[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":40,"body":222,"description":822,"extension":823,"links":824,"meta":825,"navigation":826,"path":41,"seo":827,"status":824,"stem":42,"__hash__":828},"docs\u002F2.realtime\u002F3.connection-lifecycle.md",{"type":223,"value":224,"toc":807},"minimark",[225,229,234,245,249,252,270,273,298,302,305,466,470,477,523,530,534,537,555,559,565,568,572,577,584,588,731,735,738,746,750,775,782,786,803],[226,227,228],"p",{},"The full lifecycle of a realtime WebSocket connection.",[230,231,233],"h2",{"id":232},"stages","Stages",[235,236,241],"pre",{"className":237,"code":239,"language":240},[238],"language-text","1. Connect → 2. session.created → 3. Configure (optional) → 4. Stream audio\n                                                           ↓\n6. Close\u002FReconnect ← 5. Receive events ←\n","text",[242,243,239],"code",{"__ignoreMap":244},"",[230,246,248],{"id":247},"_1-connect","1. Connect",[226,250,251],{},"WebSocket handshake:",[253,254,255,263],"ul",{},[256,257,258,259,262],"li",{},"Server-side: ",[242,260,261],{},"Authorization: Bearer sk-..."," header",[256,264,265,266,269],{},"Browser: ",[242,267,268],{},"?access_token=rt_..."," query parameter",[226,271,272],{},"Conditions checked on connect:",[253,274,275,278,285,295],{},[256,276,277],{},"WebSocket upgrade required (else 426)",[256,279,280,281,284],{},"Gateway enabled (else 503 ",[242,282,283],{},"gateway_disabled",")",[256,286,287,288,291,292,284],{},"Circuit breaker closed (else 503 ",[242,289,290],{},"upstream_unavailable"," + ",[242,293,294],{},"Retry-After",[256,296,297],{},"Connection quota passes (concurrent + rate)",[230,299,301],{"id":300},"_2-sessioncreated","2. session.created",[226,303,304],{},"Received immediately on connect:",[235,306,310],{"className":307,"code":308,"language":309,"meta":244,"style":244},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"session.created\",\n  \"session_id\": \"sess_...\",\n  \"limits\": {\n    \"max_concurrent_utterances\": 2,\n    \"max_session_seconds\": 900,\n    \"idle_timeout_seconds\": 60,\n    \"remaining_audio_seconds\": 3600\n  }\n}\n","json",[242,311,312,321,349,370,385,405,422,439,454,460],{"__ignoreMap":244},[313,314,317],"span",{"class":315,"line":316},"line",1,[313,318,320],{"class":319},"sMK4o","{\n",[313,322,324,327,331,334,337,340,344,346],{"class":315,"line":323},2,[313,325,326],{"class":319},"  \"",[313,328,330],{"class":329},"spNyl","type",[313,332,333],{"class":319},"\"",[313,335,336],{"class":319},":",[313,338,339],{"class":319}," \"",[313,341,343],{"class":342},"sfazB","session.created",[313,345,333],{"class":319},[313,347,348],{"class":319},",\n",[313,350,352,354,357,359,361,363,366,368],{"class":315,"line":351},3,[313,353,326],{"class":319},[313,355,356],{"class":329},"session_id",[313,358,333],{"class":319},[313,360,336],{"class":319},[313,362,339],{"class":319},[313,364,365],{"class":342},"sess_...",[313,367,333],{"class":319},[313,369,348],{"class":319},[313,371,373,375,378,380,382],{"class":315,"line":372},4,[313,374,326],{"class":319},[313,376,377],{"class":329},"limits",[313,379,333],{"class":319},[313,381,336],{"class":319},[313,383,384],{"class":319}," {\n",[313,386,388,391,395,397,399,403],{"class":315,"line":387},5,[313,389,390],{"class":319},"    \"",[313,392,394],{"class":393},"sBMFI","max_concurrent_utterances",[313,396,333],{"class":319},[313,398,336],{"class":319},[313,400,402],{"class":401},"sbssI"," 2",[313,404,348],{"class":319},[313,406,408,410,413,415,417,420],{"class":315,"line":407},6,[313,409,390],{"class":319},[313,411,412],{"class":393},"max_session_seconds",[313,414,333],{"class":319},[313,416,336],{"class":319},[313,418,419],{"class":401}," 900",[313,421,348],{"class":319},[313,423,425,427,430,432,434,437],{"class":315,"line":424},7,[313,426,390],{"class":319},[313,428,429],{"class":393},"idle_timeout_seconds",[313,431,333],{"class":319},[313,433,336],{"class":319},[313,435,436],{"class":401}," 60",[313,438,348],{"class":319},[313,440,442,444,447,449,451],{"class":315,"line":441},8,[313,443,390],{"class":319},[313,445,446],{"class":393},"remaining_audio_seconds",[313,448,333],{"class":319},[313,450,336],{"class":319},[313,452,453],{"class":401}," 3600\n",[313,455,457],{"class":315,"line":456},9,[313,458,459],{"class":319},"  }\n",[313,461,463],{"class":315,"line":462},10,[313,464,465],{"class":319},"}\n",[230,467,469],{"id":468},"_3-configure-optional","3. Configure (optional)",[226,471,472,473,476],{},"Send ",[242,474,475],{},"session.update"," to set parameters:",[235,478,480],{"className":307,"code":479,"language":309,"meta":244,"style":244},"{ \"type\": \"session.update\", \"language\": \"zh\" }\n",[242,481,482],{"__ignoreMap":244},[313,483,484,487,489,491,493,495,497,499,501,504,506,509,511,513,515,518,520],{"class":315,"line":316},[313,485,486],{"class":319},"{",[313,488,339],{"class":319},[313,490,330],{"class":329},[313,492,333],{"class":319},[313,494,336],{"class":319},[313,496,339],{"class":319},[313,498,475],{"class":342},[313,500,333],{"class":319},[313,502,503],{"class":319},",",[313,505,339],{"class":319},[313,507,508],{"class":329},"language",[313,510,333],{"class":319},[313,512,336],{"class":319},[313,514,339],{"class":319},[313,516,517],{"class":342},"zh",[313,519,333],{"class":319},[313,521,522],{"class":319}," }\n",[226,524,525,526,529],{},"Receive ",[242,527,528],{},"session.updated"," confirmation.",[230,531,533],{"id":532},"_4-stream-audio","4. Stream audio",[226,535,536],{},"Continuously send PCM16LE audio frames:",[253,538,539,546,549],{},[256,540,541,542,545],{},"Text frames: ",[242,543,544],{},"input_audio_buffer.append"," (base64)",[256,547,548],{},"Binary frames: raw PCM data",[256,550,551,552],{},"End of speech segment: ",[242,553,554],{},"input_audio_buffer.flush",[230,556,558],{"id":557},"_5-receive-events","5. Receive events",[235,560,563],{"className":561,"code":562,"language":240},[238],"input_audio_buffer.speech_started\n  → input_audio_buffer.speech_stopped\n  → conversation.item.input_audio_transcription.completed\n",[242,564,562],{"__ignoreMap":244},[226,566,567],{},"This cycle repeats for each speech segment.",[230,569,571],{"id":570},"_6-close-reconnect","6. Close \u002F Reconnect",[573,574,576],"h3",{"id":575},"normal-close","Normal close",[226,578,579,580,583],{},"Client calls ",[242,581,582],{},"ws.close()",". Server flushes final meter data.",[573,585,587],{"id":586},"timeout-close","Timeout close",[589,590,591,608],"table",{},[592,593,594],"thead",{},[595,596,597,601,605],"tr",{},[598,599,600],"th",{},"Close code",[598,602,604],{"align":603},"right","Cause \u002F close reason",[598,606,607],{},"Trigger",[609,610,611,627,642,656,668,681,695,707,719],"tbody",{},[595,612,613,617,622],{},[614,615,616],"td",{},"4408",[614,618,619],{"align":603},[242,620,621],{},"idle_timeout",[614,623,624,625],{},"No audio received within ",[242,626,429],{},[595,628,629,632,637],{},[614,630,631],{},"1008",[614,633,634],{"align":603},[242,635,636],{},"session_duration_limit",[614,638,639,640],{},"Exceeded ",[242,641,412],{},[595,643,644,646,651],{},[614,645,631],{},[614,647,648],{"align":603},[242,649,650],{},"session_audio_limit",[614,652,639,653],{},[242,654,655],{},"max_audio_seconds_per_session",[595,657,658,660,665],{},[614,659,631],{},[614,661,662],{"align":603},[242,663,664],{},"audio_quota_exhausted",[614,666,667],{},"Billing-window audio budget exhausted",[595,669,670,673,678],{},[614,671,672],{},"1009",[614,674,675],{"align":603},[242,676,677],{},"frame_too_large",[614,679,680],{},"Single frame exceeds 1 MiB",[595,682,683,686,692],{},[614,684,685],{},"1011",[614,687,688,691],{"align":603},[242,689,690],{},"client_error"," \u002F internal error",[614,693,694],{},"Client socket error or unexpected gateway failure",[595,696,697,700,704],{},[614,698,699],{},"1013",[614,701,702],{"align":603},[242,703,290],{},[614,705,706],{},"Circuit breaker open",[595,708,709,711,716],{},[614,710,699],{},[614,712,713],{"align":603},[242,714,715],{},"upstream_backpressure",[614,717,718],{},"Upstream is not draining fast enough",[595,720,721,723,728],{},[614,722,699],{},[614,724,725],{"align":603},[242,726,727],{},"client_backpressure",[614,729,730],{},"Client is not reading events fast enough",[230,732,734],{"id":733},"idle-timeout","Idle timeout",[226,736,737],{},"To avoid idle timeout, either:",[253,739,740,743],{},[256,741,742],{},"Send silent frames to keep the connection alive",[256,744,745],{},"Or close explicitly and reconnect when needed",[230,747,749],{"id":748},"recommended-reconnect-design","Recommended reconnect design",[751,752,753,760,763,766,769],"ol",{},[256,754,755,756,759],{},"Listen for ",[242,757,758],{},"close"," events, decide reconnect based on close code",[256,761,762],{},"4408 (idle) and 1008 (duration limit): reconnect directly",[256,764,765],{},"1013 (upstream): exponential backoff before reconnect",[256,767,768],{},"1000 (normal): do not reconnect",[256,770,771,772,774],{},"After reconnect, re-send ",[242,773,475],{}," to restore configuration",[226,776,777,778,781],{},"See ",[779,780,148],"a",{"href":149}," for a detailed guide.",[230,783,785],{"id":784},"related","Related",[253,787,788,793,798],{},[256,789,790,792],{},[779,791,160],{"href":161}," — endpoint reference",[256,794,795,797],{},[779,796,200],{"href":201}," — retry strategies",[256,799,800,802],{},[779,801,184],{"href":185}," — plan timeout parameters",[804,805,806],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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);}",{"title":244,"searchDepth":316,"depth":323,"links":808},[809,810,811,812,813,814,815,819,820,821],{"id":232,"depth":323,"text":233},{"id":247,"depth":323,"text":248},{"id":300,"depth":323,"text":301},{"id":468,"depth":323,"text":469},{"id":532,"depth":323,"text":533},{"id":557,"depth":323,"text":558},{"id":570,"depth":323,"text":571,"children":816},[817,818],{"id":575,"depth":351,"text":576},{"id":586,"depth":351,"text":587},{"id":733,"depth":323,"text":734},{"id":748,"depth":323,"text":749},{"id":784,"depth":323,"text":785},"Connect → configure → stream audio → receive events → close\u002Freconnect.","md",null,{},true,{"title":40,"description":822},"Mv0vXF-PdIOWHJ74vhpuhowazGt4V4sBcQlcf2sv0aY",[830,832],{"title":36,"path":37,"stem":38,"description":831,"children":-1},"Minimal runnable WebSocket examples.",{"title":44,"path":45,"stem":46,"description":833,"children":-1},"PCM format, sample rate, channels, chunk size, and latency tradeoffs.",1787340798074]