Phone numbers for OpenAI Realtime API — SIP trunk setup with DIDHub
OpenAI's Realtime API is a WebSocket-based speech-to-speech model. To put it on a phone number, you bridge PSTN to WebSocket via a SIP gateway (LiveKit, Pipecat, or custom). DIDHub is the carrier on the PSTN side — A-attestation, regional ingress, 136-country inventory.
Why DIDHub for OpenAI Realtime API
- Realtime API is the model; DIDHub is the phone line. Clean separation: OpenAI does the speech-to-speech AI, DIDHub does the PSTN.
- Sub-50ms regional ingress. Realtime API is sensitive to latency. Pick the DIDHub edge closest to your bridge layer's region.
- STIR/SHAKEN A-attestation. Critical for production US/CA outbound.
- Compatible with LiveKit, Pipecat, custom bridges. All the popular SIP-to-WebSocket patterns work with DIDHub on the carrier side.
BYOC setup — step by step
- Sign up at /signup and provision DIDs.
- Generate DIDHub SIP credentials.
- Set up a SIP-to-WebSocket bridge: LiveKit Agents (most common), Pipecat, or a custom Node/Python bridge using
sip-to-ws. - In the bridge, register the DIDHub SIP trunk as the inbound carrier.
- Connect the bridge to OpenAI Realtime via WebSocket. Bridge audio frames in both directions.
- Test end-to-end: dial the DID, talk to the Realtime model, validate latency and audio quality.
Caller-ID configuration
Set the DIDHub DID as outbound Caller-ID in your bridge layer. The bridge passes the From-header to DIDHub which validates and signs with A-attestation.
For US/CA outbound: DIDHub signs every call with STIR/SHAKEN attestation A on DIDHub-allocated and DIDHub-ported numbers. This is the level that mobile carriers (T-Mobile, Verizon, AT&T) treat with baseline trust — calls signed with weaker attestation are increasingly flagged as “Spam Likely” or sent straight to voicemail. See STIR/SHAKEN explained for the full background.
For non-US destinations: present a local DID as Caller-ID for best answer rates. AI agent calling a Madrid customer should present a +34 (Spanish) Caller-ID, not a US number. DIDHub serves 136 countries with dedicated landing pages so you can match Caller-ID to destination.
Latency & regional ingress
Realtime AI voice is brittle to network latency — an extra 100ms of SIP egress can break the natural-conversation feel. DIDHub operates SIP/RTP edges in:
- NOAM: Ashburn (US-East), San Jose (US-West), Dallas
- EU: Frankfurt, Amsterdam
- APAC: Singapore, Tokyo
- MENA: Dubai
Pick the edge nearest to your OpenAI Realtime API inference region. Typical sub-50ms regional ingress for the closest pair. If you need a region we don't list, talk to [email protected] — we add edges in response to customer demand.
FAQ
Why isn't OpenAI Realtime directly accessible from a phone number?
Realtime API is a WebSocket-based model with audio frames, not a SIP endpoint. You need a bridge to translate PSTN audio (RTP/SRTP) to/from WebSocket frames.
Easiest way to bridge?
LiveKit Agents has the most polished pattern for this. Run LiveKit's SIP service, connect to DIDHub, and use the LiveKit Agent SDK to bridge to OpenAI Realtime.
Latency expectations?
OpenAI Realtime latency varies by region; pair with DIDHub's nearest regional edge to minimize the PSTN hop. Sub-1s end-to-end is realistic.
Cost considerations?
Realtime API is priced per audio second. Combine with DIDHub's per-minute outbound cost to model unit economics.
Provision your first OpenAI Realtime API DID
Sign up at /signup, pick a country / area code, and route the DID to your OpenAI Realtime API BYOC SIP trunk. $1.99/mo for a US number, sub-60-second activation on most countries. No commits.
Ready to get a number?
Pick a DID in 130+ countries from $1.99/month. Activates instantly on most numbers.