Pull live call data, manage extensions, track registrations, and automate your phone system — all through a clean, authenticated REST API. Integrate PhoneServ into any CRM, dashboard, or custom application in minutes.
https://YOUR-HOST/api/v1
All requests are made over HTTPS. HTTP requests will be rejected.
Authorization: Bearer <token>
Generate your API token from the FS PBX Dashboard under the Users section.
?limit=50&starting_after=<uuid>
All list endpoints use cursor-based pagination. Pass the last item's UUID as starting_after to fetch the next page.
Domain-scoped access control
Each endpoint requires specific permissions assigned to the API token user in the dashboard.
Every endpoint returns JSON, supports cursor pagination, and responds with standard HTTP status codes. Use them to build dashboards, automate provisioning, and integrate with your existing tools.
/api/v1/domains/:domain_uuid/active-calls
Returns all currently active call sessions for a domain. Use this to build real-time call wallboards, supervisor dashboards, or trigger webhooks when call volume spikes.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
/api/v1/domains/:domain_uuid/cdrs
Returns paginated call history with full metadata. Filter by date range, direction, status, or specific extension. Requires xml_cdr_view permission.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 500
starting_afterUUIDNoLast xml_cdr_uuid from previous page
searchstringNoMatches caller/destination fields and status
directionstringNoFilter by call direction (inbound/outbound)
statusstringNoanswered, no answer, cancelled, voicemail, missed call, abandoned
extension_uuidUUIDNoFilter by specific extension
date_fromintegerNoStart of date range (Unix epoch seconds)
date_tointegerNoEnd of date range (Unix epoch seconds)
/api/v1/domains/:domain_uuid/cdrs/:xml_cdr_uuid/recording-url
Returns time-limited URLs (default 10 min) for streaming and downloading a call recording tied to a specific CDR. Supports both local storage (signed Laravel routes) and S3/S3-compatible object storage (presigned URLs). Requires xml_cdr_view permission.
domain_uuidstring (path)YesTarget domain identifier
xml_cdr_uuidstring (path)YesCall Detail Record identifier
audio_url — stream inline
download_url — force download
/api/v1/domains/:domain_uuid/cdrs/:xml_cdr_uuid/transcription
Returns the AI-generated transcription for a recorded call. Supports full-text output or timed segments with per-speaker diarization. If transcription is still processing, the endpoint returns 202 Accepted with a status of processing — poll until completed. Requires xml_cdr_view permission.
domain_uuidstring (path)YesTarget domain identifier
xml_cdr_uuidstring (path)YesCall Detail Record identifier
formatstringNoOutput format: json (default), text, srt, vtt
include_segmentsbooleanNoInclude per-segment speaker, start/end time, and per-word confidence — defaults to false
status
transcript
language
confidence
word_count
duration_seconds
segments[]
/api/v1/domains/:domain_uuid/devices
List all provisioned SIP devices for a domain. Useful for auditing hardware inventory, tracking firmware versions, or building auto-provisioning workflows. Requires device_view permission. Note: device_template is deprecated — use device_template_uuid.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast device_uuid from previous page
/api/v1/domains
Returns all domains the authenticated user is permitted to access. Results are automatically scoped based on the token's role — admins with domain_all receive every domain; others receive only their assigned domains.
limitintegerNoResults per page — defaults to 25
starting_afterUUIDNoLast domain_uuid from previous page
/api/v1/domains/:domain_uuid/extension-statistics
Aggregate call performance metrics per extension — total calls, answered, missed, average duration, and more. Filter by date range to power custom analytics dashboards or scheduled reports. Requires xml_cdr_view permission. Defaults to the current day when no date range is specified.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor
searchstringNoFilter by extension number, label, or call fields
date_fromintegerNoReporting window start (Unix epoch, UTC)
date_tointegerNoReporting window end (Unix epoch, UTC)
/api/v1/domains/:domain_uuid/extensions
List all extensions configured on a domain. Use this to sync your directory, populate helpdesk agents, or drive auto-provisioning flows. Requires extension_view permission.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 25
starting_afterUUIDNoLast extension_uuid from previous page
/api/v1/domains/:domain_uuid/phone-numbers
Returns all DIDs and phone numbers assigned to a domain. Use this to audit your number inventory, verify routing assignments, or surface number data in your CRM. Requires destination_domain permission.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast destination_uuid from previous page
/api/v1/domains/:domain_uuid/registrations
Returns live SIP registrations for a domain — showing which devices and softphones are currently online. Ideal for monitoring device connectivity or alerting when critical endpoints go offline.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
/api/v1/domains/:domain_uuid/ring-groups
List all ring groups configured on a domain — including members, strategy, and routing rules. Use this to dynamically update routing logic or surface group configuration in your management portal. Requires ring_group_view permission.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
/api/v1/domains/:domain_uuid/voicemails
Returns voicemail boxes for a domain, scoped to what the token user is permitted to access. Use to build unified inboxes, trigger SMS notifications on new voicemail, or sync transcripts to your ticketing system. Requires voicemail_domain permission.
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast voicemail UUID from previous page
All endpoints return JSON and follow standard REST conventions. Authenticate once with your Bearer token and start pulling data immediately — no SDKs or wrappers required.
# Fetch active calls for a domain curl -X GET \ "https://YOUR-HOST/api/v1/domains/{domain_uuid}/active-calls?limit=25" \ -H "Authorization: Bearer <your_token>" \ -H "Accept: application/json" # Filter CDRs by date range and status curl -X GET \ "https://YOUR-HOST/api/v1/domains/{domain_uuid}/cdrs ?status=answered&date_from=1746057600&date_to=1746143999" \ -H "Authorization: Bearer <your_token>" # Paginate through extensions curl -X GET \ "https://YOUR-HOST/api/v1/domains/{domain_uuid}/extensions ?limit=25&starting_after={last_extension_uuid}" \ -H "Authorization: Bearer <your_token>" # Fetch a call transcription with speaker segments curl -X GET \ "https://YOUR-HOST/api/v1/domains/{domain_uuid}/cdrs/{xml_cdr_uuid}/transcription ?format=json&include_segments=true" \ -H "Authorization: Bearer <your_token>" # Get plain text transcript only curl -X GET \ "https://YOUR-HOST/api/v1/domains/{domain_uuid}/cdrs/{xml_cdr_uuid}/transcription?format=text" \ -H "Authorization: Bearer <your_token>"
The PhoneServ API gives your developers everything they need to deeply embed business telephony into your existing workflows and tools.
Pull CDRs and extension statistics into your BI tools. Build live wallboards, SLA reports, and agent scorecards tailored to your business.
Poll active calls on a short interval to power supervisor dashboards, queue depth alerts, or escalation workflows without a separate integration layer.
Use the Extensions and CDR endpoints to match inbound callers to CRM records and surface account history before your agent even picks up the phone.
Track live SIP registrations and alert your IT team the moment a critical phone or softclient goes offline — before the caller notices.
Watch the Voicemails endpoint for new entries and automatically create support tickets with transcripts attached — zero manual triage required.
Sync extensions and devices from your HR system or ITSM. When a new employee is onboarded, provision their phone automatically via the API.