Reply latency on phone calls, model by model
Every figure in this table is measured on APIFleet's production phone calls, which reach us as Telnyx media streams in 8 kHz μ-law; the thread asked about Gemini alone, so we set it beside the three OpenAI Realtime models that ran on the same phone path. A turn runs from the pipeline's decision that the caller had finished to the first reply audio reaching APIFleet's server, and only turns where no tool call finished in between are counted.
After 5 September, Gemini 3.1 Flash Live's median sat 264 to 549 ms above the three OpenAI medians, and its 90th percentile, 1,544 ms (85 turns, 29 calls, 6 to 7 September 2026), was above all three. The clocks start at different points, though, so read that gap together with the clock section below.
The OpenAI phone samples are small: 17 to 37 calls per model from 4 to 11 assistants, and 83% of the 23 gpt-realtime-2.1 phone calls were outbound. The 133 gpt-realtime-mini turns come from just 4 assistants, so its 467 ms median says little about other deployments.
| Model | Median | 90th percentile | Turns (calls) | Call dates |
|---|---|---|---|---|
| Gemini 3.1 Flash Live, after 5 Sep | 1,016 ms | 1,544 ms | 85 (29) | 6–7 Sep 2026 |
| Gemini 3.1 Flash Live, 5 Sep only | 13,641 ms | 24,844 ms | 239 (68) | 5 Sep 2026 |
| Gemini 3.1 Flash Live, all days | 1,274 ms | 23,445 ms | 324 (97) | 5–7 Sep 2026 |
| gpt-realtime-2.1-mini | 752 ms | 1,164 ms | 174 (37) | 17 Aug–9 Sep 2026 |
| gpt-realtime-2.1 | 748 ms | 1,207 ms | 74 (17) | 24 Aug–27 Sep 2026 |
| gpt-realtime-mini (4 assistants) | 467 ms | 691 ms | 133 (21) | 17–27 Aug 2026 |
What happened on 5 September 2026
5 September 2026 (UTC) is the day APIFleet shipped its own voice-activity detector for Gemini, and the first day of Gemini phone calls in this data. It holds 108 of the 154 Gemini phone calls (5 to 9 September 2026) and 239 of their 324 measurable turns, and 137 of those 239 turns waited more than 10 s for a reply.
No Gemini turn without a tool wait took that long on any other day: 0 of 85 phone turns (29 calls) on 6 and 7 September, and 0 of 39 web turns (11 calls) between 8 and 15 September. Web calls show the same split at a smaller scale, with a 5 September median of 1,549 ms (238 turns, 31 calls) and 20 of those web turns over 10 s.
OpenAI Realtime turns without a tool wait showed no such stalls: none of the 381 phone turns (75 calls, 17 August to 27 September 2026) or 686 web turns (126 calls, 14 August to 6 September 2026) across the three OpenAI models waited more than 10 s. The web turns include 195 gpt-realtime-2.1 turns from 20 calls on 5 and 6 September.
The traces cannot tell whether Google's service, our new Gemini code or both caused the stalls. APIFleet changed its Gemini session code between 5 and 7 September, including a recovery path for requests that went unanswered, so later calls may have run different code.
The all-days rows mix two different regimes, so we show them only for completeness. Read the rows after 5 September as the better guide to ordinary turns, remembering that the phone ones cover two days.
Where each latency clock starts and stops
No pipeline in production records the instant a caller stops talking. Each clock starts at a detector's decision that the caller has finished, which comes after their speech has ended, and stops when the first reply audio reaches APIFleet's server, before frame pacing, carrier buffering and the network add their own delay.
For OpenAI Realtime the clock starts when our server receives OpenAI's speech_stopped event, which OpenAI sends once its voice activity detection decides the turn has ended. APIFleet's default has been semantic VAD since July 2026, though an assistant can override it; OpenAI describes semantic VAD as a classifier that judges from the caller's words whether they are done, while the API's own default, server VAD, waits for a set silence. Our traces record neither the detector each call used nor how long it waited.
On the Gemini calls measured here, we turned off Google's automatic activity detection, which the Live API allows, and our own detector told Gemini when each caller turn ended. It closes a turn after 500 ms without voiced audio on phone calls and 800 ms on most web calls, so Gemini's clock starts roughly that long after the caller's last voiced frame.
Adding that wait back gives an estimate from the last voiced frame: a 1,516 ms median on phone after 5 September (90th percentile 2,044 ms; 85 turns, 29 calls, 6 to 7 September 2026), against 14,141 ms on 5 September (239 turns, 68 calls). On web after 5 September the estimate is 1,665 ms (39 turns, 11 calls, 8 to 15 September); OpenAI has no equivalent, because the silence its detector waited through is not logged.
Within the OpenAI clock, response.created follows speech_stopped by a median 5 ms (gpt-realtime-2.1-mini phone, 174 turns, 37 calls, 17 August to 9 September 2026), so almost all of the measured time, 747 ms, is the wait for first audio. Gemini sessions that ran Google's automatic detection have no usable end-of-turn event in our traces and are excluded: 110 of the 154 Gemini phone calls used our detector.
| Pipeline | Clock starts | Silence already elapsed | Clock stops |
|---|---|---|---|
| OpenAI Realtime, all three models | Our server receives OpenAI's speech_stopped event | Unknown: set by OpenAI's detector and not logged | First reply audio chunk received from OpenAI |
| Gemini 3.1 Flash Live with APIFleet's detector | Our detector ends the caller's turn and tells Gemini | About 500 ms on phone calls, 800 ms on most web calls | First reply audio chunk received from Gemini, after conversion |
| Gemini with Google's automatic detection | No usable end-of-turn event in our traces | Not measurable | Excluded from every latency row |
Browser test calls: the same comparison on web
Web rows come from browser test sessions with 24 kHz audio, echo cancellation and client buffering. Most have one assistant per call, which suggests per-visitor demo assistants, and some may be automated evaluation runs; they are never pooled with phone calls, and our Gemini detector waited 800 ms on most of them rather than 500 ms.
After 5 September, Gemini's web median of 865 ms (39 turns, 11 calls, 8 to 15 September 2026) was again above all three OpenAI medians, which ranged from 452 to 762 ms (112 to 379 turns from 20 to 80 calls each, 14 August to 6 September 2026). With so few Gemini calls after 5 September, that ordering is about all this table can support.
| Model | Median | 90th percentile | Turns (calls) | Call dates |
|---|---|---|---|---|
| Gemini 3.1 Flash Live, after 5 Sep | 865 ms | 2,452 ms | 39 (11) | 8–15 Sep 2026 |
| Gemini 3.1 Flash Live, 5 Sep only | 1,549 ms | 8,936 ms | 238 (31) | 5 Sep 2026 |
| Gemini 3.1 Flash Live, all days | 1,435 ms | 8,206 ms | 277 (42) | 5–15 Sep 2026 |
| gpt-realtime-2.1-mini | 762 ms | 1,308 ms | 379 (80) | 14 Aug–5 Sep 2026 |
| gpt-realtime-2.1 | 739 ms | 1,176 ms | 195 (20) | 5–6 Sep 2026 |
| gpt-realtime-mini | 452 ms | 725 ms | 112 (26) | 23 Aug–1 Sep 2026 |
Errors: APIFleet records Gemini failures but not OpenAI Realtime ones
When a Gemini session fails, APIFleet ends the call with a realtime_error reason, so the failure appears in the call record. APIFleet's OpenAI Realtime session only writes OpenAI's error events to the server log and has no path that marks the call as failed, so its 0% pipeline-error rate means not reported, not no errors.
A failed OpenAI session could only surface as a dropped connection or an ordinary hang-up. The closest shared signal is the silent call, connected for 10 s or more without any assistant audio, which catches a session that never spoke whatever the pipeline reports.
The counts are small enough that one call moves a rate by several points: 3 of 46 Gemini phone calls after 5 September were silent, as were 1 of 45 gpt-realtime-2.1-mini and 1 of 20 gpt-realtime-2.1 phone calls. Five of the six Gemini web calls that ended in realtime_error fell on 5 September.
| Model, channel and dates | Ended by pipeline error | Ended by connection loss | Silent call, 10 s or longer |
|---|---|---|---|
| Gemini 3.1 Flash Live, phone, all days, 5–9 Sep 2026 | 1.9% (3 of 154) | 1.3% (2 of 154) | 2.0% (3 of 147) |
| Gemini 3.1 Flash Live, phone, 5 Sep 2026 only | 1.9% (2 of 108) | 1.9% (2 of 108) | 0.0% (0 of 101) |
| Gemini 3.1 Flash Live, phone, 6–9 Sep 2026 | 2.2% (1 of 46) | 0.0% (0 of 46) | 6.5% (3 of 46) |
| Gemini 3.1 Flash Live, web, all days, 31 Aug–22 Oct 2026 | 3.8% (6 of 156) | 0.0% (0 of 156) | 1.4% (2 of 140) |
| Gemini 3.1 Flash Live, web, 5 Sep 2026 only | 11.1% (5 of 45) | 0.0% (0 of 45) | 0.0% (0 of 42) |
| Gemini 3.1 Flash Live, web, 31 Aug–22 Oct 2026 except 5 Sep | 0.9% (1 of 111) | 0.0% (0 of 111) | 2.0% (2 of 98) |
| gpt-realtime-2.1-mini, phone, 17 Aug–9 Sep 2026 | Not reported (0 recorded) | 0.0% (0 of 46) | 2.2% (1 of 45) |
| gpt-realtime-2.1-mini, web, 14 Aug–5 Sep 2026 | Not reported (0 recorded) | 0.0% (0 of 118) | 0.0% (0 of 107) |
| gpt-realtime-mini, phone, 17–27 Aug 2026 | Not reported (0 recorded) | 0.0% (0 of 23) | 0.0% (0 of 23) |
| gpt-realtime-mini, web, 19 Aug–1 Sep 2026 | Not reported (0 recorded) | 0.0% (0 of 44) | 0.0% (0 of 42) |
| gpt-realtime-2.1, phone, 24 Aug–27 Sep 2026 | Not reported (0 recorded) | 0.0% (0 of 23) | 5.0% (1 of 20) |
| gpt-realtime-2.1, web, 24 Aug–6 Sep 2026 | Not reported (0 recorded) | 0.0% (0 of 24) | 0.0% (0 of 23) |
Cost per connected minute
On phone calls, estimated model and carrier cost ran from $0.0277 to $0.0669 per connected minute for the three OpenAI models (20 to 44 calls each, 17 August to 27 September 2026). Gemini 3.1 Flash Live came to $0.0291 on 5 September (108 calls) and $0.0907 on 6 to 9 September (46 calls), so its all-days figure of $0.0389 (154 calls) mostly reflects 5 September.
These are estimates, not invoices: each call's model cost is priced from the token counts the provider reported at the per-token rates in APIFleet's configuration, and phone calls add Telnyx at a flat configured $0.0055 per minute. The pooled figure divides total estimated cost by total connected minutes, so long calls weigh more, and the median call uses calls of 10 s or more. Five OpenAI phone calls whose cost was later backfilled with an estimate are left out, which is why the gpt-realtime-2.1-mini and gpt-realtime-mini phone rows count 44 and 20 calls.
We cannot say what drove Gemini's gap between days: the 5 September calls came from 68 assistants of one tenant and included long waits for replies, while the later calls came from 16 assistants of two tenants. Gemini web calls cost $0.0448 per minute on 5 September (45 calls) and $0.0576 on the other days between 31 August and 22 October 2026 (111 calls).
On 54 phone calls that ran more than one model session, the call log kept the full cost total but stored the model part as zero, so we rebuilt the model part from that total: 43 Gemini calls (39 of them on 5 September), 8 gpt-realtime-2.1-mini calls and 3 gpt-realtime-2.1 calls. Without the repair the pooled phone figures would be $0.0347 for all 154 Gemini calls ($0.0246 for the 108 on 5 September, $0.0876 for the 46 later), $0.0229 for the 44 gpt-realtime-2.1-mini calls and $0.0546 for the 23 gpt-realtime-2.1 calls.
On 29 October 2026 Google listed Gemini 3.1 Flash Live audio at $3.00 per million input tokens and $12.00 per million output tokens, and OpenAI listed $32 and $64 per million audio input and output tokens for gpt-realtime-2.1, and $10 and $20 for both mini models. APIFleet's current rate card uses those audio prices but prices gpt-realtime-2.1 text output at $16 per million tokens where OpenAI now lists $24, so the gpt-realtime-2.1 rows may understate the text part, and the rates applied changed during the data window.
None of these figures includes APIFleet's platform fee of $0.03 per connected AI minute, billed per second; AI providers and the carrier are billed on top of it. For comparison, Vapi's pricing page lists $0.05 per minute for hosting on its pre-paid usage option, with model costs passed through (checked 29 October 2026).
Illustrative arithmetic, not a quote: a 3-minute phone call at the gpt-realtime-2.1-mini pooled rate carries about $0.09 of estimated model and carrier cost, plus $0.09 of APIFleet platform fee.
| Model and channel | Pooled per minute | Median call | Call dates |
|---|---|---|---|
| Gemini 3.1 Flash Live, phone, after 5 Sep | $0.0907 (46) | $0.0706 (46) | 6–9 Sep 2026 |
| Gemini 3.1 Flash Live, phone, 5 Sep only | $0.0291 (108) | $0.0288 (101) | 5 Sep 2026 |
| Gemini 3.1 Flash Live, phone, all days | $0.0389 (154) | $0.0315 (147) | 5–9 Sep 2026 |
| Gemini 3.1 Flash Live, web, all days | $0.0513 (156) | $0.0540 (140) | 31 Aug–22 Oct 2026 |
| gpt-realtime-2.1-mini, phone | $0.0303 (44) | $0.0263 (43) | 17 Aug–9 Sep 2026 |
| gpt-realtime-2.1-mini, web | $0.0226 (118) | $0.0220 (107) | 14 Aug–5 Sep 2026 |
| gpt-realtime-mini, phone (4 assistants) | $0.0277 (20) | $0.0284 (20) | 17–27 Aug 2026 |
| gpt-realtime-mini, web | $0.0123 (44) | $0.0231 (42) | 19 Aug–1 Sep 2026 |
| gpt-realtime-2.1, phone | $0.0669 (23) | $0.0675 (20) | 24 Aug–27 Sep 2026 |
| gpt-realtime-2.1, web | $0.0605 (24) | $0.0981 (23) | 24 Aug–6 Sep 2026 |
What the thread reported, and why the numbers differ
The asker reported averaging roughly 922 ms from Asia and asked what Gemini 3.1 Flash Live does on real phone calls elsewhere. Replies in the thread and its cross-posts offered impressions rather than measurements: close to Google's AI Studio playground, smooth in demos, and about 2 s from Europe in one reply.
None of those figures says where its clock starts, so they cannot be set against ours or against each other; for the same system, a clock started at the last voiced frame always reads longer than one started at a detector's decision. Our traces also cannot separate network distance from model time, so they do not answer the regional part of the question.
Later replies complained about tool calls getting stuck and about weak barge-in. Our Gemini tool-wait figures need the same 5 September split, and each pipeline counts interruptions differently, so both are covered on separate pages rather than here.
Model status on 29 October 2026
Google's model page now calls Gemini 3.1 Flash Live a legacy preview model and recommends updating to Gemini 3.8 Live, and OpenAI's model page marks gpt-realtime-mini as deprecated. OpenAI presents gpt-realtime-2.1-mini as a distilled reasoning model aimed at faster, cheaper voice sessions, and gpt-realtime-2.1 as a reasoning model with tool use.
Our Gemini 3.8 Live traffic was browser tests only (64 calls, 20 to 29 September 2026) on Google's automatic detection, for which our traces hold no usable end-of-turn event, and APIFleet's gpt-live-1 sessions record none either. Neither has a reply-latency figure that could sit in these tables.
Observational data, not a benchmark
These are observational numbers from APIFleet's own production and test traffic, not a controlled benchmark. No group was randomised or matched on assistant, prompt, tools, callers, period or channel, so no difference on this page shows that a model caused it.
The periods differ: OpenAI phone calls ran from 17 August to 27 September 2026 and Gemini phone calls only from 5 to 9 September, a week in which our Gemini code changed repeatedly, and vendor-side model updates are invisible to us.
The traffic differs: Gemini phone calls came from 83 assistants of two tenants and were 49% outbound on 5 September (108 calls) against 11% later (46 calls), gpt-realtime-2.1-mini phone calls came from 7 assistants of one tenant, and phone rows include developer test and demo calls. Prompt sizes vary several-fold between groups, which can move both reply time and token cost, and rows built on fewer than 5 assistants, such as every gpt-realtime-mini phone row (4 assistants), describe those assistants rather than other deployments.
The configuration differs: most Gemini phone calls ran our detector with APIFleet's reasoning setting at minimal, while our traces do not record the detector or reasoning setting of each OpenAI call. All times are APIFleet server times, so callers heard each reply later than shown.
How to measure the comparison on your own calls
A short, matched test on your own route answers the thread's question better than any shared number, ours included. The steps below describe a method; they are not a test we ran for this page.
- Run one assistant, prompt and tool set on each model over the same days, through the same carrier and phone numbers.
- Timestamp the end-of-turn signal each pipeline gives you and the first reply audio on one server clock, and log which detector and silence window each call used.
- Report medians and 90th percentiles per model, per channel and per day, so one bad day cannot hide inside a multi-day figure.
- Count turns that wait more than 10 s separately; a handful of stalls barely moves a median but decides how those calls go.
- Confirm that a model failure reaches your call records on every pipeline, and compare silent calls where one pipeline cannot report errors.
- Price each call from the token counts the provider reports, and recheck your rate card against the vendor's pricing page before comparing costs.
Continue with a practical next step
- Compare speech-to-speech models for phone agents
- Read what tool calls added to reply latency
- Read why callers talk over the opening
- See what APIFleet measured for gpt-live-1
- Use Gemini Live for a speech-to-speech assistant
- Run an OpenAI speech-to-speech assistant
- See APIFleet's per-minute platform fee
- Estimate platform, provider and carrier costs
- See every answer to a Reddit question
Frequently asked questions
Is Gemini 3.1 Flash Live slower than OpenAI Realtime on phone calls?
In these calls its phone median after 5 September, 1,016 ms (85 turns, 29 calls, 6 to 7 September 2026), was above the 467 to 752 ms of three OpenAI Realtime models (74 to 174 turns per model, 17 August to 27 September 2026). The clocks start at different points and the groups differ in assistants, period and traffic, so treat this as a reason to run your own test, not as a ranking.
Why does the all-days Gemini phone median look normal when its 90th percentile is 23 seconds?
Because 239 of the 324 Gemini phone turns came from 5 September, and 137 of those waited more than 10 s. The median of all 324 turns (1,274 ms, 97 calls, 5 to 7 September 2026) falls among the quick turns and the 90th percentile (23,445 ms) among the stalls, which is why the days are reported separately. Without 5 September the median was 1,016 ms and the 90th percentile 1,544 ms (85 turns, 29 calls, 6 to 7 September 2026).
Does a 0% error rate mean OpenAI Realtime never failed?
No. APIFleet's OpenAI Realtime session has no path that records a model failure on the call, so 0% means not reported. Silent calls are the closer comparison: of the phone calls lasting 10 s or more, 1 of 45 on gpt-realtime-2.1-mini (17 August to 9 September 2026) and 1 of 20 on gpt-realtime-2.1 (24 August to 27 September 2026) had no assistant audio.
Do the cost figures include APIFleet's fee?
No. They estimate model and carrier cost per connected minute. APIFleet's platform fee is $0.03 per connected AI minute, billed per second, and AI providers and the carrier are billed on top of it.
Can the same comparison be made for Gemini 3.8 Live or gpt-live-1?
Not from these traces. Gemini 3.8 Live ran only in browser tests on Google's automatic detection, and neither it nor gpt-live-1 has the caller end-of-turn event that the latency clock starts from.
Sources and evidence
- Google Gemini API pricing: Gemini 3.1 Flash Live Preview · observed 2026-10-29
- Google Gemini API: Gemini 3.1 Flash Live Preview model page · observed 2026-10-29
- Google Live API capabilities guide: voice activity detection · observed 2026-10-29
- OpenAI API pricing: realtime and audio models · observed 2026-10-29
- OpenAI model page: gpt-realtime-2.1 · observed 2026-10-29
- OpenAI model page: gpt-realtime-2.1-mini · observed 2026-10-29
- OpenAI model page: gpt-realtime-mini · observed 2026-10-29
- OpenAI Realtime guide: voice activity detection · observed 2026-10-29
- Vapi pricing: hosting fee and pass-through costs · observed 2026-10-29