Skip to main content
With PIN dial-in, phone participants dial a shared phone number and enter a room-specific PIN code to join. The PIN is unique to each room and generated automatically at room creation.

Create a room with PIN dial-in

Add the dialin property when creating or updating a room:
curl --request POST \
  --url https://api.daily.co/v1/rooms/your-room-name \
  --header 'Authorization: Bearer $DAILY_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "properties": {
      "dialin": {
        "display_name": "Phone Caller",
        "wait_for_meeting_start": true
      },
      "exp": 1700016686
    }
  }'
dialin properties:
  • display_name — name shown for the PSTN participant in the call.
  • wait_for_meeting_start — if true, the caller hears hold music until a meeting participant joins; if false, the call disconnects if no one is present.
  • room_numbers — optional array of purchased phone numbers to use for this room (e.g., [{"phone_number": "+12095038039"}]). Defaults to the earliest purchased number on your account. See below for details on assigning purchased numbers to PIN dial-in.
All PSTN-enabled rooms must have an expiry (exp) of less than 365 days. If using an owner token, we also recommend setting eject_at_room_exp.
The API response includes a dialin_code — the room’s unique PIN:
{
  "config": {
    "dialin": {
      "display_name": "Phone Caller"
    },
    "dialin_code": "12345678987"
  }
}

How callers join

Share the phone number and PIN with participants. For a frictionless experience, provide the full dial string with pauses (,,) so the phone automatically enters the PIN after connecting:
+12095038039,,12345678987
The ,, instructs the dialer to pause before sending the PIN digits, so callers don’t have to manually type the PIN.

Assign a purchased number to PIN dial-in

If you’ve purchased a phone number and want to use it for the PIN flow, configure it at the domain level:
curl --request POST \
  --url https://api.daily.co/v1/ \
  --header 'Authorization: Bearer $DAILY_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "properties": {
      "pin_dialin": [{
        "phone_number": "+12095038039",
        "name_prefix": "pin-dialin",
        "ivr_greeting": {
          "message": "Welcome to the Daily meeting room. Please enter your dial-in PIN."
        }
      }]
    }
  }'
See the pin_dialin domain configuration reference for full details.

Global dial-in numbers

If you don’t purchase a phone number, Daily provides global dial-in numbers in 27 countries. Free tier includes US and Canada. See the overview for more information.