Agent Number

SMS vs voice

Two channels, one number. Different latency, different transports, different operations. Use both or use one — same auth either way.

At a glance

SMSVoice
TransportHTTP request/responseWebSocket (binary frames)
DirectionInbound + outboundInbound + outbound
SendPOST /sms/sendPOST /voice/dial
ReceiveGET /sms/receive (atomic claim; MCP receive_sms for long-poll)/voice/presence/<phone> WS
Stream/voice/stream/<call_id> WS
Latency profileNear-instant OTP end-to-endLow-latency PCM audio
AuthBearer tokenBearer token

SMS

Drop in for OTPs, notifications, two-way text agents. /sms/receive is an atomic claim — two parallel calls won't double-deliver the same message — that returns immediately. For long-poll behavior (the typical OTP use case), use the MCP receive_sms tool. For history (no mutation), use /sms/messages.

Voice

Two WebSocket channels with different jobs:

Same number, both channels

No separate provisioning. The phone number returned by /subscribe is the SMS number AND the voice number. Carrier-verified caller ID, so downstream voice services treat the call as a legitimate consumer call.

Where to go next