DevelopersAPI referencePhone

Phone reports API

REST endpoints for phone reports in ServFlo: 2 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.servflo.ai/api. Every call needs Authorization: Bearer sfk_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
Call tracking reportGET /organizations/{organizationId}/phone/reports/trackingread
AI receptionist summaryGET /organizations/{organizationId}/phone/reports/receptionistread

Call tracking report

GET /organizations/{organizationId}/phone/reports/tracking

Inbound calls between two days (the business's calendar) by source or by tracking number: calls, answered, missed, voicemails, first-time callers, booked (linked to a job or request, or a job created for the caller within 7 days), booked rate, average talk time and revenue (payments from the caller within 30 days, credited to their latest call before it). Optionally one business unit (none = no unit). Read-only.

Permissionphone.read (Owner, Admin, Dispatcher, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP toolphoneReports_tracking (toolset reports)
PlanNeeds the Phone system add-on.

Parameters

NameInTypeRequiredDescription
fromquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
toquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
groupByqueryenumNoOne of source, number.
businessUnitIdquerystringNo

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/phone/reports/tracking?from=2026-11-03&to=2026-11-03" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
rangeobject
range.fromstring
range.tostring
groupByenumOne of source, number.
attributionDaysobject
attributionDays.bookinginteger
attributionDays.revenueinteger
totalsobject
totals.keystring
totals.sourcestring
totals.phoneNumberIdstring or null
totals.campaignIdstring or null
totals.labelstring or null
totals.e164string or null
totals.campaignNamestring or null
totals.callsinteger
totals.answeredinteger
totals.missedinteger
totals.voicemailinteger
totals.firstTimeCallersinteger
totals.bookedinteger
totals.bookedRatenumber or null
totals.revenueCentsinteger
totals.averageDurationSecondsinteger or null
rowsarray of object
rows[].keystring
rows[].sourcestring
rows[].phoneNumberIdstring or null
rows[].campaignIdstring or null
rows[].labelstring or null
rows[].e164string or null
rows[].campaignNamestring or null
rows[].callsinteger
rows[].answeredinteger
rows[].missedinteger
rows[].voicemailinteger
rows[].firstTimeCallersinteger
rows[].bookedinteger
rows[].bookedRatenumber or null
rows[].revenueCentsinteger
rows[].averageDurationSecondsinteger or null

AI receptionist summary

GET /organizations/{organizationId}/phone/reports/receptionist

What the AI receptionist did between two days (the business's calendar): calls it answered, bookings it made, service requests it created, messages it took, calls it transferred to a person, calls that ended without a result (caller hung up, failed, timed out), and its minutes (each call rounded up). Also whether it is on (enabled, mode), the trial's AI-minute allowance when on a trial, and the latest AI-answered calls (recent, newest first; open one with GET /phone/calls/{callId}). Read-only.

Permissionphone.read (Owner, Admin, Dispatcher, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP toolphoneReports_receptionist (toolset reports)
PlanNeeds the Phone system add-on.

Parameters

NameInTypeRequiredDescription
fromquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
toquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
recentqueryintegerNoHow many of the latest AI-answered calls to include (default 5). 0–20.

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/phone/reports/receptionist?from=2026-11-03&to=2026-11-03" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
rangeobject
range.fromstring
range.tostring
enabledboolean
modestring or nullALWAYS, AFTER_HOURS or OVERFLOW; null when never set up.
totalsobject
totals.callsinteger
totals.bookedinteger
totals.requestsinteger
totals.messagesinteger
totals.transferredinteger
totals.unfinishedinteger
totals.minutesinteger
trialobject or null
trial.aiMinutesUsedinteger
trial.aiMinutesLimitinteger
trial.aiPausedboolean
recentarray of object
recent[].idstring
recent[].fromNumberstring
recent[].customerobject or null
recent[].customer.idstring
recent[].customer.namestring
recent[].startedAtstring
recent[].outcomestring or null
recent[].minutesinteger
recent[].summarystring or null

On this page