Extensions

SIP extensions with presence, caller ID, voicemail, and device registration

Extensions are the foundation of your PBX. Each extension represents a user or function (conference room, parking lot, paging group) and can be reached by dialing its number internally or routing inbound calls to it.

Extension Types

TypeDescription
userStandard user extension with phone, voicemail, and presence
conferenceConference bridge for multi-party calls
parkingCall parking lot for hold-and-retrieve
pagingIntercom/paging group

List Extensions

GET/v1/pbx/extensions

List all extensions for your PBX

Requires:pbx:extensions:read
curl -X GET "https://api.do.dev/v1/pbx/extensions" \
  -H "Authorization: Bearer do_live_your_key_here"
{
  "extensions": [
    {
      "id": "ext_abc123",
      "number": "101",
      "name": "Front Desk",
      "type": "user",
      "status": "available",
      "callerIdName": "Acme Corp",
      "callerIdNumber": "2395551234",
      "voicemailEnabled": true,
      "forwardingEnabled": false,
      "registeredDevices": 2
    }
  ]
}

Create Extension

POST/v1/pbx/extensions

Create a new extension

Requires:pbx:extensions:write

Body Parameters

numberstringrequired
Extension number (2-5 digits, e.g. '101')
namestringrequired
Display name for the extension
typestring
Extension type: user, conference, parking, paging. Default: user
callerIdNamestring
Outbound caller ID name
callerIdNumberstring
Outbound caller ID number (10-digit)
voicemailEnabledboolean
Enable voicemail for this extension. Default: true
forwardingNumberstring
External number to forward calls to
forwardingRingTimeoutnumber
Seconds to ring before forwarding (5-60). Default: 20
curl -X POST "https://api.do.dev/v1/pbx/extensions" \
  -H "Authorization: Bearer do_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "102",
    "name": "Sales",
    "type": "user",
    "voicemailEnabled": true,
    "callerIdName": "Acme Sales"
  }'

SIP credentials are auto-provisioned and returned in the response.

Presence Status

Extensions track real-time presence:

StatusDescription
availableReady to receive calls
busyCurrently on a call
awayUser is away
dndDo Not Disturb -- calls go to voicemail
offlineNo registered devices

Presence updates automatically when devices register/unregister and calls connect/end.

Device Registration

Each extension supports multiple simultaneous device registrations (desk phone, softphone, mobile app). When a call arrives, all registered devices ring simultaneously (fork ring).

Registered devices are tracked with:

  • Device type (hardware, softphone, WebRTC, mobile)
  • IP address and user agent
  • Registration expiry
  • Last activity timestamp

See Phones for device management.