Download OpenAPI specification:Download
This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| currency | string Enum: "USD" "EUR" "GBP" "AUD" "CAD" "JPY" "BRL" "KRW" "CNY" "MXN" … 4 more Example: currency=EUR The currency to return metrics data in |
{- "object": "overview_metrics",
- "metrics": [
- {
- "object": "overview_metric",
- "id": "active_trials",
- "name": "Active Trials",
- "description": "string",
- "unit": "$",
- "period": "P0D",
- "value": 34765,
- "last_updated_at": 1658399423658,
- "last_updated_at_iso8601": "2022-10-13T09:45:00.123Z"
}
], - "currency": "EUR"
}Returns the total revenue for the project across all of its apps for the
given inclusive date range [start_date, end_date]. The value is expressed
in the project's primary currency unless currency is provided.
Use revenue_type to choose which revenue definition the value represents:
gross revenue (default), revenue_net_of_taxes, or proceeds (net of both
taxes and store commission — the amount the developer keeps).
This endpoint is backed by the same realtime (v3) revenue chart that powers the dashboard. It is intended for cases where an app needs an authoritative revenue total without inferring it from the transaction list.
Note that the most recent day in the range may be partial if it includes
today, since transactions for today are still arriving.
This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| start_date required | string <date> Example: start_date=2024-01-01 Start date for the data range (ISO 8601 format) |
| end_date required | string <date> Example: end_date=2024-12-31 End date for the data range (ISO 8601 format) |
| currency | string Enum: "USD" "EUR" "GBP" "AUD" "CAD" "JPY" "BRL" "KRW" "CNY" "MXN" … 4 more Example: currency=EUR The currency to return metrics data in |
| revenue_type | string Default: "revenue" Enum: "revenue" "revenue_net_of_taxes" "proceeds" Example: revenue_type=proceeds Which revenue definition to return as the metric value:
|
{- "object": "revenue_metric",
- "start_date": "2026-01-01",
- "end_date": "2026-01-31",
- "currency": "USD",
- "value": 12345.67,
- "revenue_type": "proceeds"
}Returns time-series data for a specific chart.
Response Structure
The response includes:
Chart Types
Different charts may return data in slightly different formats:
Cohort charts
Cohort-shaped charts (cohort_explorer, prediction_explorer, subscription_retention, ...)
return values as {cohort, period, value} objects, where period is the index into the
periods array, not a month number. Two things follow from that:
periods[0] describes the cohort size — a count of customers or subscriptions, with unit
#. It is not the measure at month 0. On cohort_explorer its display_name is named after
the cohorting_date selector (e.g. New customers).period: 1, labelled by periods[1].display_name (typically Month 0).
So Month N is at period: N + 1.Always read periods[period].display_name, .unit and .scale to interpret a data point rather
than assuming period is the month number. On non-realtime charts (realtime=false) the same
metadata is returned in segments instead of periods.
Filtering and Segmentation
Use the /charts/{chart_name}/options endpoint to discover available
filters and segments for a specific chart before making requests.
Segments and filters vary per chart and are separate lists — a dimension
can be available as a filter but not as a segment. Requesting an
unsupported segment or filter (or segmenting/filtering a chart that does
not allow it) returns a 400 parameter_error that lists the supported
segments. Check get-chart-options-schema first when unsure.
Filter parameters vary by chart and can be passed as additional query parameters.
Aggregation
Use aggregate to request summary-only output for supported charts.
When aggregate is provided, values is returned as an empty array and
summary includes only the requested aggregate operations.
Incomplete data
For the most recent periods, data may be flagged as incomplete, and may not be appropriate to use for analysis.
This endpoint requires the following permission(s): charts_metrics:charts:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| chart_name required | string <= 255 characters Enum: "actives" "actives_movement" "actives_new" "arr" "churn" "cohort_explorer" "conversion_to_paying" "customers_new" "initial_conversion" "ltv_per_customer" … 22 more Example: revenue Name of the chart to retrieve:
Charts marked as realtime only are served exclusively by Charts v3 and
require |
| realtime | boolean Default: true Whether to request real-time (v3) charts. Defaults to true. Set to false to request the v2 charts. |
| filters | string Example: filters=[{"name":"country","values":["US","UK"]}] JSON array of chart filters. Each filter is a ChartFilter object. |
| selectors | string Example: selectors={"conversion_timeframe":"7_days","revenue_type":"proceeds"} JSON object of chart selectors. |
| aggregate | Array of strings non-empty unique Items Enum: "average" "total" Example: aggregate=average,total Comma-separated aggregate operations to return in |
| currency | string Enum: "USD" "EUR" "GBP" "AUD" "CAD" "JPY" "BRL" "KRW" "CNY" "MXN" … 4 more Example: currency=EUR The currency to return metrics data in |
| resolution | string Example: resolution=0 Time resolution for the chart data. Use the chart options endpoint to discover available resolutions and their IDs. |
| start_date | string <date> Example: start_date=2024-01-01 Start date for the data range (ISO 8601 format) |
| end_date | string <date> Example: end_date=2024-12-31 End date for the data range (ISO 8601 format) |
| expand_periods | boolean Default: false Whether to expand the date range so the first period is complete (e.g. snap a weekly range back to the start of the week). Defaults to false, which only includes data from the exact start_date provided. Period labels are always aligned to period boundaries: with expand_periods=false and a mid-period start_date, the first period only aggregates data from start_date onwards and is marked as incomplete. Exception: charts of point-in-time (stock) metrics, such as active subscriptions or MRR, ignore this parameter entirely. Their values are snapshots measured exactly at each period boundary, so the first data point is always measured at the start of the period containing start_date (which can fall before start_date) and is not marked as incomplete, since a snapshot cannot be partial. |
| segment | string Example: segment=country Segment the data by this dimension. Must be one of the segments returned
by the chart options schema endpoint for this chart; segments vary per
chart, and unsupported segments return a 400 |
| limit_num_segments | integer >= 1 Example: limit_num_segments=10 If set, limits the number of segments returned to the top N by value. All remaining segments are aggregated into an "Other" segment. Only applies when a segment is specified. |
| include_annotations | boolean Default: false Example: include_annotations=true When true, includes chart annotations for the project in the response, filtered to the chart's date window. |
{- "object": "chart_data",
- "category": "revenue",
- "display_type": "line",
- "display_name": "Revenue",
- "description": "string",
- "documentation_link": "string",
- "last_computed_at": 0,
- "start_date": 0,
- "end_date": 0,
- "yaxis_currency": "USD",
- "filtering_allowed": true,
- "segmenting_allowed": true,
- "resolution": "day",
- "values": [
- [
- 0
]
], - "summary": { },
- "yaxis": "$",
- "segments": [
- {
- "display_name": "Month 0",
- "description": "Gross revenue generated by the cohort.",
- "unit": "$",
- "decimal_precision": 2,
- "scale": "absolute",
- "chartable": true,
- "tabulable": true,
- "is_total": false,
- "is_other": false,
- "nested_measures": [
- { }
]
}
], - "segments_limit": 0,
- "periods": [
- {
- "display_name": "Month 0",
- "description": "Gross revenue generated by the cohort.",
- "unit": "$",
- "decimal_precision": 2,
- "scale": "absolute",
- "chartable": true,
- "tabulable": true,
- "is_total": false,
- "is_other": false,
- "nested_measures": [
- { }
]
}
], - "measures": [
- { }
], - "user_selectors": {
- "property1": "string",
- "property2": "string"
}, - "unsupported_params": {
- "filters": [
- "string"
], - "segment": "string"
}, - "annotations": [
- {
- "object": "chart_annotation",
- "id": "chartannot1a2b3c",
- "description": "App version 2.0 released",
- "start_date": "2024-01-15",
- "end_date": "2024-01-20"
}
]
}Returns configuration options for a specific chart.
Use this endpoint to discover:
The options returned are specific to the chart and may vary based on your project's data and configuration.
Usage
Call this endpoint before requesting chart data to:
charts_metrics:charts:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute.| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| chart_name required | string <= 255 characters Enum: "actives" "actives_movement" "actives_new" "arr" "churn" "cohort_explorer" "conversion_to_paying" "customers_new" "initial_conversion" "ltv_per_customer" … 22 more Example: revenue Name of the chart to retrieve:
Charts marked as realtime only are served exclusively by Charts v3 and
require |
| realtime | boolean Default: true Whether to request real-time (v3) charts. Defaults to true. Set to false to request the v2 charts. |
{- "object": "chart_options",
- "resolutions": [
- {
- "id": "0",
- "display_name": "day"
}, - {
- "id": "1",
- "display_name": "week"
}, - {
- "id": "2",
- "display_name": "month"
}
], - "segments": [
- {
- "object": "chart_segment_option",
- "id": "country",
- "display_name": "Country",
- "group_display_name": "Geography"
}
], - "filters": [
- {
- "object": "chart_filter_option",
- "id": "country",
- "display_name": "Country",
- "group_display_name": "Geography",
- "options": [
- {
- "id": "US",
- "display_name": "United States"
}
]
}
], - "user_selectors": {
- "property1": {
- "default": "string",
- "display_name": "string",
- "options": [
- {
- "id": "string",
- "display_name": "string"
}
]
}, - "property2": {
- "default": "string",
- "display_name": "string",
- "options": [
- {
- "id": "string",
- "display_name": "string"
}
]
}
}
}