Endpoints
The platform's phone numbers with their label and assignment state.
curl "https://api.bolrach.io/v1/voice/dids" \
-H "Authorization: Bearer bt_your_key_here"Response
{
"dids": [
{ "number": "5183003592", "label": null, "assigned": false, "state": "active" }
]
}Health of the PBX lanes: the FreeSWITCH event socket, the carrier link, and object counts. A dormant: true lane means that integration is currently disabled.
curl "https://api.bolrach.io/v1/voice/status" \
-H "Authorization: Bearer bt_your_key_here"Response
{
"esl": { "dormant": false },
"voipms": { "dormant": false },
"counts": { "extensions": 13, "dids": 1, "queues": 3 }
}Classic click-to-call: the PBX rings fromExtension first, then bridges the answered leg to toNumber. Needs the high-trust voice:call scope, the extension must be assigned, and its owner must hold the PBX's calling permission — the API cannot dial out from unowned lines.
| Field | Type | Description |
|---|---|---|
fromExtension | string, required | The PBX extension that rings first. |
toNumber | string, required | Destination number. |
context | string, optional | Free-form tag stamped on the call log (e.g. a CRM record id). |
curl -X POST "https://api.bolrach.io/v1/voice/click-to-call" \
-H "Authorization: Bearer bt_your_key_here" \
-H "Content-Type: application/json" \
-d '{"fromExtension": "1001", "toNumber": "+15872001234", "context": "crm-lead-842"}'Limits and errors
Plan rate limits are shared across the platform (plans table). An unknown or unassigned extension is a 400 with the PBX's reason (unknown_extension, extension_unassigned, or phone_calling_not_enabled when the owner lacks calling rights).
Changelog
| Date | Change |
|---|---|
| 2026-07-14 | v1 launch: DIDs, PBX status and click-to-call. Call logs and SIP provisioning are planned. |