DevelopersAPI referencePhone
Phone reports API
REST endpoints for phone reports in SKUFlow: 1 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.
| Operation | Endpoint | Risk |
|---|---|---|
| Call tracking report | GET /organizations/{organizationId}/phone/reports/tracking | read |
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 request, or a quote 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.
| Permission | phone.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | phoneReports_tracking (toolset reports) |
| Plan | Needs the Phone system add-on. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string | Yes | A calendar date in the business's own calendar, YYYY-MM-DD. |
to | query | string | Yes | A calendar date in the business's own calendar, YYYY-MM-DD. |
groupBy | query | enum | No | One of source, number. |
businessUnitId | query | string | No |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/phone/reports/tracking?from=2026-11-03&to=2026-11-03" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
range | object | |
range.from | string | |
range.to | string | |
groupBy | enum | One of source, number. |
attributionDays | object | |
attributionDays.booking | integer | |
attributionDays.revenue | integer | |
totals | object | |
totals.key | string | |
totals.source | string | |
totals.phoneNumberId | string or null | |
totals.campaignId | string or null | |
totals.label | string or null | |
totals.e164 | string or null | |
totals.campaignName | string or null | |
totals.calls | integer | |
totals.answered | integer | |
totals.missed | integer | |
totals.voicemail | integer | |
totals.firstTimeCallers | integer | |
totals.booked | integer | |
totals.bookedRate | number or null | |
totals.revenueCents | integer | |
totals.averageDurationSeconds | integer or null | |
rows | array of object | |
rows[].key | string | |
rows[].source | string | |
rows[].phoneNumberId | string or null | |
rows[].campaignId | string or null | |
rows[].label | string or null | |
rows[].e164 | string or null | |
rows[].campaignName | string or null | |
rows[].calls | integer | |
rows[].answered | integer | |
rows[].missed | integer | |
rows[].voicemail | integer | |
rows[].firstTimeCallers | integer | |
rows[].booked | integer | |
rows[].bookedRate | number or null | |
rows[].revenueCents | integer | |
rows[].averageDurationSeconds | integer or null |