Skip to main content
This guide covers the daily-js APIs for SIP and PSTN telephony. For an overview of how dial-in and dial-out work across all APIs, see the dial-in/dial-out guide.

Prerequisites

Before calling any telephony methods:
  • Your Daily account must have a credit card on file.
  • For dial-out, the room must have enable_dialout: true and your account must be approved for dial-out.
  • The local participant must join with an owner meeting token.

Dial-out

Starting a session

startDialOut() initiates an outbound call to a SIP URI or PSTN phone number. The called party joins the room as a regular participant.
The returned sessionId identifies this telephony session. Hold onto it — you’ll need it for stopDialOut(), sendDTMF(), and transfer methods. See startDialOut() for the full parameter reference, including videoSettings for SIP video calls and codec defaults.

Stopping a session

Sending DTMF tones

sendDTMF() sends touch-tone signals into an active session — commonly used to navigate IVR menus:
The method parameter controls how tones are signaled:
  • 'telephone-event' — RTP telephone-event packets per RFC 4733 (most compatible)
  • 'sip-info' — SIP INFO messages per RFC 6086
  • 'auto' — Daily picks the best method for the connection

Dial-out events

Listen to these events to track the lifecycle of an outbound session:
dialout-connected fires when the SIP/PSTN network acknowledges the call; dialout-answered fires when the remote party actually picks up. Both events include provider and sipCallId for correlating with server-side logs. See the telephony events reference for full payload details.

Dial-in

Dial-in allows external SIP or PSTN callers to join a Daily room. Set enable_dialin: true on the room via the REST API or dashboard. For setup details — including PIN dial-in, pinless dial-in, and SIP interconnect — see the dial-in/dial-out guide.

Dial-in events

All dial-in events include provider and sipCallId fields for correlating sessions with server-side logs. See the telephony events reference for full payload details.

Call transfers

To transfer an active SIP or PSTN session to another destination, use sipCallTransfer() or sipRefer(). See the call transfers guide for a full explanation of when to use each method, including a decision table and scenario examples.

Example: full dial-out flow

See also