Skip to main content
GET
Get Metrics
Use each metric’s time_series to build period rows. All buckets intersecting [created_gte, created_lt) are included, cut in timezone (an IANA name) with Monday-based weeks. When omitted, timezone defaults to the organization’s reporting time zone, or UTC if none is configured. An explicit timezone overrides the organization setting. Each timestamp is the UTC instant the period starts, e.g. 2026-09-22T04:00:00Z for September 22 in America/New_York. Missing buckets have value: 0 for counts and totals, value: null for rates and averages, and breakdown: []. The first bucket can start before created_gte when the requested range begins partway through a period. Add breakdown_by=disposition to get disposition counts on each total_conversations time point:
With group_by_dimension=campaign (or another supported dimension) each breakdown item carries its own counts as well, and the point’s components sums them:
Calls without a disposition contribute to the total but have no component key. Other metrics retain their existing breakdown shape. Breakdowns include all matching dimension values without a top-20 limit. custom_fields[key]=value filters every metric to conversations whose custom field holds exactly that string, the same way GET /v1/calls does, so a drill-down lists the conversations a cell counted. Several pairs must all match. Helper calls are excluded. Rate denominators remain unchanged; use each rate point’s denominator for the Dispositioned column. For exact call drill-downs, GET /v1/calls accepts disposition_contacted and disposition_conversion. Both accept true or false; omitting a flag applies no filter for that flag. Requests with more than 30 metric IDs return HTTP 400. Each aggregation uses the ANALYTICS_MAX_TIME_MS server setting (default: 30000 milliseconds).

Authorizations

X-API-KEY
string
header
required

Your API key for authentication.

x-org-id
string
header
required

Org impersonation via x-org-id. Superadmins may impersonate any org; admins may impersonate their direct sub-organizations. Enter the target organization ID to act as that org.

Query Parameters

metrics
string[]
required

Comma-separated list of metric IDs. Call GET /v2/reports/metrics/available to discover the IDs this account can request. Any unknown or not-enabled ID rejects the whole request with 400.

Minimum array length: 1
created_gte
string<date-time>

Show conversations that started on or after this datetime (inclusive). Must be in UTC using ISO 8601 format (e.g., 2025-07-05T00:00:00Z). Defaults to 7 days ago.

created_lt
string<date-time>

Show conversations that started before this datetime (exclusive). Must be in UTC using ISO 8601 format (e.g., 2025-07-05T23:59:59Z). Defaults to now.

account_id
string | null

Account ID to filter by

time_granularity
enum<string> | null

Time bucket for aggregation. When omitted, only current values are calculated (no time series).

Available options:
hour,
day,
week,
month,
year
group_by_dimension
enum<string> | null

Dimension to include WITHIN time series.

Available options:
campaign,
agent,
disposition,
conversation_medium,
call_type
campaign_ids
string[] | null

Comma-separated list of campaign IDs to filter by

agent_ids
string[] | null

Comma-separated list of agent IDs to filter by

disposition_level_3
string[] | null

Comma-separated list of level 3 disposition names to filter by

conversation_mediums
enum<string>[] | null

Comma-separated list of conversation mediums to filter by.

Available options:
web_voice,
telephony,
sms,
email,
chatbot,
api_text,
chat_app,
softphone
call_types
enum<string>[] | null

Comma-separated list of call types to filter by.

Available options:
outbound,
inbound
twilio_statuses
enum<string>[] | null

Comma-separated list of Twilio call statuses to filter by. When omitted, includes all statuses. Note: For telephony/web_voice, 'completed' typically indicates a successful call, but for chatbot/email/SMS, conversations occur regardless of status.

Available options:
queued,
initiated,
ringing,
in-progress,
completed,
busy,
failed,
no-answer,
canceled,
voicemail
is_dry_run
boolean | null

Filter by dry-run status. True=only dry-runs, False=exclude dry-runs, None=include all (default). Note: Some organizations bill dry-run calls, so excluding them may underreport actual usage.

Include trend comparison with previous period (calculates change_value, change_percent, trend direction)

Response

Successful Response

Main response from analytics API

metrics
Metrics · object
required
filters_applied
FiltersSummary · object
required

Summary of filters applied to the query

metadata
ResponseMetadata · object
required

Metadata about the response