New: AI Call Transcription & Voice Agents are now live — See what's new →
Developer API

Build Anything with the
PhoneServ REST API

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.

Base URL

https://YOUR-HOST/api/v1

All requests are made over HTTPS. HTTP requests will be rejected.

Authentication

Authorization: Bearer <token>

Generate your API token from the FS PBX Dashboard under the Users section.

Pagination

?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.

Permissions

Domain-scoped access control

Each endpoint requires specific permissions assigned to the API token user in the dashboard.

12 Endpoints. Full System Access.

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.

GET /api/v1/domains/:domain_uuid/active-calls

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
200 OK 400 Invalid UUID 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/cdrs

Call Detail Records

Returns paginated call history with full metadata. Filter by date range, direction, status, or specific extension. Requires xml_cdr_view permission.

ParameterTypeRequiredDescription
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)
200 OK 400 Invalid date_to 401 Unauth 403 Forbidden 404 Not Found
GET /api/v1/domains/:domain_uuid/cdrs/:xml_cdr_uuid/recording-url

CDR 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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
xml_cdr_uuidstring (path)YesCall Detail Record identifier
Response fields: audio_url — stream inline    download_url — force download
200 OK 400 Invalid CDR UUID 401 Unauth 404 No Recording
GET /api/v1/domains/:domain_uuid/cdrs/:xml_cdr_uuid/transcription

CDR 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.

ParameterTypeRequiredDescription
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
Response fields: status   transcript   language   confidence   word_count   duration_seconds   segments[]
200 Completed 202 Processing 400 Invalid UUID 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/devices

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast device_uuid from previous page
200 OK 400 Invalid UUID 401 Unauth 403 Forbidden 404 Not Found
GET /api/v1/domains

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.

ParameterTypeRequiredDescription
limitintegerNoResults per page — defaults to 25
starting_afterUUIDNoLast domain_uuid from previous page
200 OK 401 Unauth
GET /api/v1/domains/:domain_uuid/extension-statistics

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.

ParameterTypeRequiredDescription
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)
200 OK 400 Invalid range 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/extensions

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 25
starting_afterUUIDNoLast extension_uuid from previous page
200 OK 400 Invalid UUID 401 Unauth 403 Forbidden 404 Not Found
GET /api/v1/domains/:domain_uuid/phone-numbers

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast destination_uuid from previous page
200 OK 400 Invalid UUID 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/registrations

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
200 OK 400 Invalid UUID 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/ring-groups

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoPagination cursor from previous response
200 OK 400 Invalid UUID 401 Unauth 404 Not Found
GET /api/v1/domains/:domain_uuid/voicemails

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.

ParameterTypeRequiredDescription
domain_uuidstring (path)YesTarget domain identifier
limitintegerNoResults per page — defaults to 50
starting_afterUUIDNoLast voicemail UUID from previous page
200 OK 400 Invalid UUID 401 Unauth 403 Forbidden 404 Not Found

Up and Running in
Under 5 Minutes

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.

  • HTTPS-only, JSON responses
  • Cursor-based pagination on all list endpoints
  • Standard HTTP status codes
  • Role-scoped access — token sees only what it's allowed to
API Quick Reference
# 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>"

Real Integrations. Real Results.

The PhoneServ API gives your developers everything they need to deeply embed business telephony into your existing workflows and tools.

Custom Analytics Dashboards

Pull CDRs and extension statistics into your BI tools. Build live wallboards, SLA reports, and agent scorecards tailored to your business.

Real-Time Call Monitoring

Poll active calls on a short interval to power supervisor dashboards, queue depth alerts, or escalation workflows without a separate integration layer.

CRM Screen Pops

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.

Device Health Monitoring

Track live SIP registrations and alert your IT team the moment a critical phone or softclient goes offline — before the caller notices.

Voicemail-to-Ticket

Watch the Voicemails endpoint for new entries and automatically create support tickets with transcripts attached — zero manual triage required.

Automated Provisioning

Sync extensions and devices from your HR system or ITSM. When a new employee is onboarded, provision their phone automatically via the API.

Ready to Connect Your Systems to PhoneServ?

Talk to our team about API access, permissions setup, and what you want to build.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
Click outside to hide the comparison bar
Compare