Skip to main content
Daily supports connecting standard phone and SIP participants to video calls, enabling telephony integration for contact centers, conferencing, and voice bot applications.

Prerequisites

  • Paid Daily account — add a credit card in the dashboard.
  • Dial-out approval — fill out the dial-out request form to avoid fraud and misuse. Once approved, set enable_dialout on your rooms.
  • Default limit: max_sip_pstn_sessions_per_room = 5. Contact support to increase this.
We’ve removed the requirement for a paid-support plan for SIP and PSTN dial-in, it is now available for all pay-as-you-go accounts. You just need to have a credit card associated to your domain.

SIP

Daily supports SIP dial-in and SIP dial-out with the following codecs:
  • Audio: PCMU, PCMA, G722, Opus (default: PCMU/PCMA)
  • Video: H264, VP8 (default: VP8)
If a codec is not supported by the remote party, Daily transcodes the stream (transcoding charges apply — see pricing). Tested with CPaaS vendors (Twilio, Telnyx, SignalWire) and SIP hardware phones (Poly, Cisco). For full SIP setup details, see the SIP guide.

PSTN phone numbers

Global dial-in numbers

You can receive PSTN calls without purchasing a phone number. Daily provides global dial-in numbers in 27 countries. Each room gets a unique 11-digit PIN code, generated at room creation and deleted when the room expires. All accounts get US and Canada at no extra charge:
  • US: +1 (209) 503-8039
  • CA: +1 (226) 807-8039
Access to the other 25 countries (including all major European countries, Japan, Singapore, Malaysia, India, China, Hong Kong, Brazil, Mexico) requires a paid support plan. See this page for the full list of countries and numbers.

Purchasing phone numbers

Daily’s REST API supports purchasing phone numbers in the US and Canada (+1). A single number can handle hundreds of simultaneous calls. A purchased number can can be used for PSTN dialout. However, a number can only be assigned to either PIN dial-in or pinless dial-in, but not both.

PSTN dial-in methods

Daily supports two PSTN dial-in flows:
  • PIN dial-in — callers dial a phone number and enter a room-specific PIN code.
  • SIP Interconnect and Pinless dial-in — incoming calls trigger a webhook where you can define logic to route the call to a Daily room without requiring a PIN.

PSTN dial-out

Dial-out checklist (once your account is approved):
  1. Purchase a phone number (skip if dialing a SIP URI)
  2. Enable dial-out on the room
  3. Join the room with an owner token
  4. Dial US/Canada (+1) numbers in E.164 format (e.g., +16505551212). For international dial-out, contact help@daily.co.
Dial out to a mobile or PSTN phone number from within a Daily room:

Call rate limits

Starting a call is rate limited to just under 1 request per second: 4 start requests succeed per rolling 5-second window. The 5th request inside that window gets a 429 response with error: "rate-limit-error". Retry with exponential back-off. In addition, PSTN dial-out calls have rate-limits to safeguard against abuse. Please contact support to increase your domain’s outbound calls-per-second (CPS) limit. A few things to know about how it is counted:
  • The limit is counted per domain. Splitting calls across many rooms or numbers does not raise it.
  • Dial-out, dial-in, and live streaming share one budget. POST /rooms/:name/dialOut/start, POST /rooms/:name/dialIn/start, and POST /rooms/:name/live-streaming/start all draw from the same 4-per-5-seconds window. Note that recordings have a separate rate-limit and do not contribute to the dial-out and streaming rate-limit counter reported here.
  • Incoming calls are not affected. When someone dials one of your purchased numbers, or dials a global number and enters a PIN, that call is not a REST request and never hits this limit. Only the API call that starts a session is limited.
  • This is a start-rate limit, not a concurrency limit. There is no cap on how many SIP/PSTN calls can run at the same time on one phone number or across your domain. However, in addition to the recording and streaming rate-limit, PSTN dial-out has a default CPS allocation of 1 PSTN dial-out per second. To invoke multiple outbound dial-out sessions on your domain, please email the support team. Both the REST API limits and PSTN CPS need to be aligned. Increasing the PSTN CPS has additional charges, please check our pricing page for exact details.
  • Each room has a default number of SIP and PSTN sessions that it can receive or make, please email the support team with details about your use-case to increase the max_sip_pstn_sessions_per_room (default: 5).
Handle 429 responses by retrying with an exponential backoff, and pace your own dialer so it does not burst past the window. If you need a higher call rate, email help@daily.co before you scale up. We can raise the limit, but we set it with you based on the call volume you expect, so plan for a short conversation rather than an instant change. Ask early if you have a launch date. For the limits on other REST endpoints, see Rate limits.

DTMF tones

Sending DTMF

Send DTMF (touch-tone) signals during a call — commonly used for IVR interactions: On a dial-out call, Daily can signal DTMF two ways:
  • RTP telephone events per RFC 2833/RFC 4733. This method works with almost every endpoint.
  • SIP INFO requests that carry an application/dtmf-relay body with Signal and Duration fields.
With the default method: 'auto', Daily uses SIP INFO when the remote SIP peer lists INFO in the Allow header of its answer. If it does not, Daily uses RTP telephone events. Nothing else changes that choice. If you ask for method: 'sip-info' and the far end does not allow INFO, the request returns an error.
Sending more than one toneWhen you send several tones in a single request over SIP INFO, Daily waits a fixed 100ms between tones. You cannot change that gap. digitDurationMs sets the digit duration that Daily signals to the far end. It does not set the gap between tones.There is no queueing or ordering guarantee across separate requests, so two that overlap can interleave their tones.Pass the whole sequence in one request when you can, for example tones: '1234#'. If you have to send digits one at a time, wait for each request to finish before starting the next one and add your own pacing between them.

Receiving DTMF

Daily can receive DTMF from a PSTN or SIP caller and deliver it to the room. This is an opt-in feature. To turn it on, set the room’s properties.sip.provider to "daily". This works in both directions. A caller who dialed in can press keys, and so can the far end of a dial-out, including dial-out to a SIP endpoint. The setting is on the room, not on the leg, so the same provider value covers both. For a dial-in room:
For a room you dial out from, set the same provider and enable dial-out:
sip_mode reads oddly in that second example, but it is not a mistake. Whenever you send a sip block, sip_mode is required and "dial-in" is its only accepted value, whichever direction the call goes. Leave it out and room creation fails. Two things to know about the setting:
  • The default provider is not "daily", so you have to ask for it.
  • Set it before the SIP leg is established. Changing it on a room that already has a call in progress does not affect that call.
Daily receives DTMF two ways:
  • RTP telephone events per RFC 2833/RFC 4733. This path needs provider set to "daily", on dial-in and dial-out alike. Without it, Daily does not offer telephone events when the SIP call is set up, so the far end never sends them.
  • SIP INFO requests that carry an application/dtmf-relay body. This path works no matter which provider the room uses.
Nothing happens when a caller presses a keyIf the far end uses RTP telephone events and the room’s provider is not set to "daily", no inbound DTMF event fires and your DTMF handler never runs. This applies to a dial-out leg just as much as to a caller dialing in. There is no error and the call keeps working, so the digits look like they vanish. Create the room with "provider": "daily" and try again.
Daily does not detect DTMF from the audio itself (in-band tones). Only out-of-band DTMF is supported: RTP telephone events and SIP INFO.

Call transfers

Daily provides two transfer methods. Both methods maintain the original SIP/PSTN connection, meaning the initial caller’s connection does not disconnect during the transfer:
  • SIP Call Transfer — keeps the original SIP leg anchored to Daily and redirects the far end to a new SIP or PSTN destination. Both connections remain active and billable.
  • SIP REFER — hands the call off to the originating SIP system. Daily exits the call entirely. A one-time SIP REFER fee may apply.

Echo cancellation and noise suppression on phone and SIP audio

Echo cancellation, noise suppression and automatic gain control are device settings, not transport settings. They are applied where the audio is captured, on the send side. This is no different from a plain WebRTC call: they are never applied to audio you receive. For a browser or app participant, the Daily SDK applies them to the microphone it captures (see noise cancellation). A phone (PSTN) or SIP caller is not running a Daily SDK, so the handset, the PBX or the carrier has to apply them on its own capture. Daily does not apply echo cancellation or background noise removal to received audio. The usual symptom is a voice bot hearing its own speech come back as user input from a caller on speakerphone. That echo is already in the audio Daily receives, so nothing further down the path can take it out. Ask the caller to use a headset or hold the phone to their ear, and handle the rest in your bot’s interruption logic.