Carrier selection for a multi-tenant receptionist. Twilio wins despite being the most expensive, because at SMB volume the price spread is noise and account-suspension risk is the real differentiator when you are carrying other businesses’ phone numbers.
Twilio Media Streams — Constraints to Design Around
| Constraint | Value | Implication |
|---|---|---|
| Codec | μ-law 8kHz only | Drives the whole STT and TTS vendor filter — native μ-law support is mandatory or you transcode every frame |
| Streams per call | ONE bidirectional stream | No side-channel; everything multiplexes through one WebSocket |
| DTMF | inbound-only on bidirectional streams | Cannot send DTMF back over the media stream |
These are hard constraints, not defaults. The single-bidi-stream limit in particular means any “listen on a second stream for X” design is off the table.
Pricing — The Spread Is Noise at SMB Volume
| Carrier | $/min all-in | Notes |
|---|---|---|
| Plivo | $0.006 | Streaming included free |
| SignalWire | $0.0066 | |
| Telnyx | $0.0097 | See trap below |
| Twilio | $0.0129 | inbound 0.0044; $1.15/mo per number |
The spread is 14 per month at SMB volume
Twilio costs roughly 2x Plivo per minute. On a small-business call volume that is a ~$8/month difference. This is not a number worth optimizing against operational risk.
Telnyx pricing trap — the headline $0.0032 is not what you pay
Telnyx advertises **0.0097 because:
- Call Control adds $0.002 (additive, not included)
- Media streaming adds another $0.0035
Any comparison table quoting $0.0032 for Telnyx is comparing a bare-minutes rate against other carriers’ all-in rates.
The Real Differentiator: Account-Suspension Risk
You are carrying other businesses' phone numbers
A suspension doesn’t degrade your service — it takes every tenant’s phone line offline simultaneously, with no recovery path you control. For a receptionist product this is an existential failure, not an incident.
| Carrier | Suspension risk | Evidence |
|---|---|---|
| Twilio | LOWEST | Mature compliance and support org |
| SignalWire | MEDIUM-HIGH for small accounts | |
| Plivo | MEDIUM | Ticket-only support — no escalation path during an outage |
| Telnyx | HIGH | FCC proposed ~0.06 negative balances |
The Telnyx detail is worth reading twice: accounts suspended within minutes over six-cent negative balances. Combined with an active FCC KYC enforcement action, that is a vendor whose compliance posture is currently under pressure and whose automated enforcement is hair-trigger.
This single factor justifies staying on the most expensive carrier
$8/month buys the lowest probability that every tenant’s phone number goes dark at once. That is the correct trade.
Carrier RTT — Not a Reason to Switch
| Carrier | RTT p50 | RTT p95 |
|---|---|---|
| Telnyx | 71ms | 118ms |
| Twilio | 89ms | 161ms |
| Vonage | 94ms | 152ms |
These numbers are published on Telnyx's own site — discount accordingly
[vendor, self-serving]. Telnyx publishing a benchmark in which Telnyx wins is not independent evidence.
Even taking them at face value: the 18ms p50 delta between Telnyx and Twilio is not worth switching carriers for, against a ~1,048ms total loop (voice-agent-latency-budget-2026-07-21). It’s under 2% of the budget.
Co-location beats carrier choice
Putting the server in
us-east-1, near Twilio’sus1media servers, matters more than which carrier you pick. Network path length to the media server is a bigger lever than the carrier’s internal RTT, and it’s entirely under your control.
Twilio ConversationRelay — AVOID
$0.07/min on top of voice minutes — ~5.5x the DIY cost
And that’s the less important problem.
ConversationRelay is a text-only WebSocket. No raw audio in either direction. That means:
- ❌ No custom VAD
- ❌ No custom endpointing
- ❌ No barge-in control
- ❌ No DSP of any kind
Every single lever this project depends on — the 480ms orchestration residual, custom turn detection, digit-string endpointing — is unreachable through ConversationRelay by construction. It is architecturally incompatible with the thesis of the build, and it costs 5.5x more.
It joins the managed platforms in the “cannot host your own VAD” bucket, but is worse than most of them because it doesn’t even expose audio.
Decision
Twilio Media Streams, raw bidirectional WebSocket, server co-located in us-east-1.
| Criterion | Weight | Winner |
|---|---|---|
| Suspension risk | decisive | Twilio |
| Price | negligible at SMB volume | Plivo (irrelevant) |
| RTT | negligible (18ms of ~1,048ms) | Telnyx (irrelevant, self-reported) |
| Support escalation path | high | Twilio (Plivo is ticket-only) |
Revisit only if per-minute carrier cost becomes a material fraction of COGS — i.e. at volumes far above the build-vs-buy break-even, at which point an enterprise agreement is on the table anyway.
Sources
- Twilio Media Streams docs — μ-law 8k, single bidi stream, DTMF inbound-only [vendor]
- Twilio, Plivo, SignalWire, Telnyx pricing pages [vendor]
- FCC proposed forfeiture against Telnyx (~$4.5M, KYC violations) [regulatory]
- Telnyx user reports — suspension over $0.06 negative balance [user reports]
- Telnyx-published carrier RTT comparison [vendor, self-serving]
- Twilio ConversationRelay docs and pricing [vendor]