↑ ↓ to navigate · ↵ to open
Documentation menu
Reference
Resources
Account
Realtime
More
API reference
Changelog
SautiPBX is in closed beta and pre-1.0 — the API and the Browser SDK may still change. This page tracks what's shipped so far.
2026-07-12
Call-control webhooks carry customPayload & endUser
The call-control request now includes customPayload whenever the caller attached one (previously echoed only on events), and — for a browser-phone outbound call — an endUser object identifying the user who placed it (uuid, email, display_name, extension_number). Because From is the account's shared DID, endUser is how your handler attributes an outbound browser call to a specific user.
2026-07-11
Per-purpose webhooks & SDK 0.1.2 — call-failure reasons
Webhooks are now configurable per purpose — voice_inbound, voice_outbound, status — both account-wide (POST /account/webhooks takes a purpose) and per number (POST /numbers/configure takes a webhook_urls map). The Number object now includes webhook_inbound (the resolved route + its source). A refused browser-phone call now returns a specific SIP status (e.g. 402 for insufficient balance), and @sauti-pbx/voice-sdk 0.1.2 exports describeFailure() to turn a call's failed reason into a readable line.
2026-07-09
Browser SDK 0.1.1 — standardized ICE config
POST /phone-tokens/mint now returns a single iceServers array, matching what @sauti-pbx/voice-sdk's authenticate() expects directly — no more remapping STUN/TURN fields by hand.
2026-07-08
Browser SDK published
@sauti-pbx/voice-sdk published to npm — call, answer, hold, mute, DTMF, and device selection over WebRTC. See the Browser SDK guide.
2026-07-05
Realtime event stream + idempotent number acquisition
Added POST /stream/token for the WebSocket event feed. POST /numbers/acquire now accepts Idempotency-Key.
2026-06-21
Outbound calling, billing controls, and stable event codes
POST /calls/originate and POST /calls/hangup shipped, both idempotent. Per-account concurrency and calls-per-second caps went live (see rate limits). Every event and terminal outcome now carries a stable dotted code — see Events & codes.
2026-06-20
Call control verbs, V1 complete
The full V1 verb vocabulary — Say, Play, Dial, Record, RecordSession, Redirect, Pause, Hangup — shipped on the call-control interpreter. See Call control (verbs).
2026-06-10
First REST endpoints
Calls, recordings, and the realtime stream became queryable over the REST API for the first time.