Hardware phone provisioning and device registration tracking
The Phones endpoint lets you track all devices registered to your PBX -- hardware SIP phones, softphones, WebRTC clients, and mobile apps.
/v1/pbx/phonesList all registered phones and devices
curl -X GET "https://api.do.dev/v1/pbx/phones" \
-H "Authorization: Bearer do_live_your_key_here"{
"phones": [
{
"id": "phone_abc123",
"extensionNumber": "101",
"extensionName": "Front Desk",
"deviceType": "hardware",
"manufacturer": "Polycom",
"model": "VVX 450",
"macAddress": "00:04:F2:AB:CD:EF",
"ipAddress": "192.168.1.50",
"registered": true,
"lastRegistered": "2026-03-26T08:00:00Z",
"userAgent": "PolycomVVX-VVX_450-UA/6.4.5"
},
{
"id": "phone_xyz789",
"extensionNumber": "101",
"extensionName": "Front Desk",
"deviceType": "webrtc",
"ipAddress": "203.0.113.50",
"registered": true,
"lastRegistered": "2026-03-26T08:15:00Z",
"userAgent": "JsSIP/3.10.0"
}
]
}| Type | Description |
|---|---|
hardware | Physical SIP phone (Polycom, Grandstream, Yealink, etc.) |
softphone | Desktop SIP application (Zoiper, Bria, etc.) |
webrtc | Browser-based WebRTC client |
mobile | Mobile app (iOS/Android) |
/v1/pbx/phones/statsGet phone registration statistics
{
"stats": {
"totalPhones": 24,
"registered": 18,
"unregistered": 6,
"byType": {
"hardware": 12,
"softphone": 4,
"webrtc": 6,
"mobile": 2
}
}
}Phones register using standard SIP REGISTER with digest authentication:
| Setting | Value |
|---|---|
| SIP Server | sip.pbx.dev |
| Transport | UDP, TCP, or WSS (WebRTC) |
| Username | Extension SIP username (e.g., 101_a1b2c3) |
| Password | Extension SIP password |
| Domain | pbx.dev |
Registrations are cached in Redis with TTL matching the SIP Expires header. The PBX tracks all active registrations for fork-ring (ringing all devices simultaneously).