/metrics/explore Runs a query against a single Explore metric and returns timeseries data for it.
Pass the entity you want to query, a date range using from and to, an interval, and one or more measures. Include dimensions to break results down, filters to narrow them, and order_by to control which results are returned first.
Use the list Explore metric entities operation to see the dimensions, measures, and filters available for a metric.
Results are broken down into segments, where a segment is one combination of the dimensions you grouped by. per_page limits the number of segments returned, not the number of datapoints. A page can hold up to 10,000 datapoints, calculated as per_page multiplied by the number of time buckets in your range. Requests over this limit return too_many_datapoints.
If successful, your response includes the query results in data, with a self-describing fields block and one entry in series for each segment.
metrics.read
permission.
Query parameters
meta.pagination.next. Send it back unchanged as the after query parameter, along with the same request body, to get the next page. A cursor is only valid for the query that produced it. It expires after an hour, extended each time you use it, up to a maximum of 24 hours.Request body
subscriptions in sandbox, returns unknown_entity.transactions.completedCompleted transactions and paid invoices. Measures gross revenue and transaction counts.adjustments.refundsRefunds issued to customers, excluding chargebacks. Measures refunded amounts and counts.adjustments.chargebacksChargebacks raised against completed transactions, excluding warnings and reversals.checkoutsCheckout sessions. Measures checkout conversion and completed checkouts.subscriptionsActive subscriptions. Measures monthly recurring revenue and MRR growth. Not available in sandbox.
2026-01-01YYYY-MM-DD date for the start of the range, interpreted at 00:00 UTC. Inclusive. Must be within the metric's max_lookback_days, otherwise Paddle returns max_lookback_exceeded.2026-04-01YYYY-MM-DD date for the end of the range, interpreted at 00:00 UTC. Exclusive. Clamped to the current time if in the future.gross_revenueunknown_field.invalid_aggregation. Omit for derived measures.countCount of rows.count_distinctCount of distinct values.sumSum of values.
monthtimeseries carries a timestamp.dayDaily buckets.weekWeekly buckets, starting Monday (UTC).monthMonthly buckets, starting on the 1st (UTC).
timestamp is implied by interval, so don't include it here.countryunknown_field.invalid_operator. Only in is supported for now.inIn the supplied list of values.
in operator.dimensions, because it decides which segments land on the page. Omitting it on a query with dimensions returns invalid_field.gross_revenueascAscending order.descDescending order.
5Number of segments returned per page, not datapoints. Each segment carries its complete timeseries. Paddle returns the maximum if you request more, so check meta.pagination.per_page to see how many came back. A page can hold at most 10,000 datapoints (per_page multiplied by the time buckets in your range), otherwise Paddle returns too_many_datapoints.
Default: 5; Maximum: 50.
Response (200)
transactions.completedCompleted transactions and paid invoices. Measures gross revenue and transaction counts.adjustments.refundsRefunds issued to customers, excluding chargebacks. Measures refunded amounts and counts.adjustments.chargebacksChargebacks raised against completed transactions, excluding warnings and reversals.checkoutsCheckout sessions. Measures checkout conversion and completed checkouts.subscriptionsActive subscriptions. Measures monthly recurring revenue and MRR growth. Not available in sandbox.
dayDaily buckets.weekWeekly buckets, starting Monday (UTC).monthMonthly buckets, starting on the 1st (UTC).
USDUnited States DollarEUREuroGBPPound SterlingJPYJapanese YenAUDAustralian Dollar
+ Show all values− Hide values
CADCanadian DollarCHFSwiss FrancHKDHong Kong DollarSGDSingapore DollarSEKSwedish KronaARSArgentine PesoBRLBrazilian RealCLPChilean PesoCNYChinese YuanCOPColombian PesoCZKCzech KorunaDKKDanish KroneHUFHungarian ForintILSIsraeli ShekelINRIndian RupeeKRWSouth Korean WonMXNMexican PesoNOKNorwegian KroneNZDNew Zealand DollarPENPeruvian SolPLNPolish ZlotyRUBRussian RubleTHBThai BahtTRYTurkish LiraTWDNew Taiwan DollarUAHUkrainian HryvniaVNDVietnamese DongZARSouth African Rand
2024-10-12T07:20:50.52Zfrom in your request.2024-10-12T07:20:50.52Zto in your request, clamped to the current time if it's in the future.2024-10-12T07:20:50.52Zcountrydimensions map.stringString value, such as an identifier or categorical value, e.g. a product ID or country code.integerInteger value.decimalNon-integer numeric value, such as a rate (returned as a string).currencyMonetary value, denominated in the responsecurrency_code(returned as a string).
sum_gross_revenue{agg}_{field} (e.g. sum_gross_revenue), or just {field} for derived measures (e.g. mrr, checkout_conversion). Matches the keys in each datapoint's measures map.stringString value, such as an identifier or categorical value, e.g. a product ID or country code.integerInteger value.decimalNon-integer numeric value, such as a rate (returned as a string).currencyMonetary value, denominated in the responsecurrency_code(returned as a string).
gross_revenueaggs: null in the entity's metadata).countCount of rows.count_distinctCount of distinct values.sumSum of values.
per_page.2026-02-01YYYY-MM-DD date for the start of this time bucket, in UTC. The Monday for weekly intervals, and the 1st for monthly intervals.name from fields.measures. Numeric values are strings to preserve precision.b15ec92e-8688-40d4-a04d-f44cbec93355POST, next is a URL carrying an after query parameter. Send the same request body to it to get the next page.after query parameter. Always returned, even when has_more is false. Re-POST the unchanged query body to this URL. Use has_more to decide whether another page exists.42{ "entity": "transactions.completed", "from": "2026-05-01", "to": "2026-08-01", "interval": "month", "dimensions": [ "product" ], "measures": [ { "field": "gross_revenue", "agg": "sum" } ], "order_by": [ { "field": "gross_revenue", "dir": "desc" } ], "per_page": 5}{ "data": { "entity": "transactions.completed", "interval": "month", "currency_code": "USD", "starts_at": "2026-05-01T00:00:00Z", "ends_at": "2026-08-01T00:00:00Z", "updated_at": "2026-08-01T06:00:00Z", "fields": { "dimensions": [ { "name": "product", "type": "string" } ], "measures": [ { "name": "sum_gross_revenue", "type": "currency", "field": "gross_revenue", "agg": "sum" } ] }, "series": [ { "dimensions": { "product": "pro_01h1vjfevh5etwq3rb416a23h2" }, "timeseries": [ { "timestamp": "2026-05-01", "measures": { "sum_gross_revenue": "410500" } }, { "timestamp": "2026-06-01", "measures": { "sum_gross_revenue": "455200" } }, { "timestamp": "2026-07-01", "measures": { "sum_gross_revenue": "482000" } } ] }, { "dimensions": { "product": "pro_01gsz4t5hdjse780zja8vvr7jg" }, "timeseries": [ { "timestamp": "2026-05-01", "measures": { "sum_gross_revenue": "298400" } }, { "timestamp": "2026-06-01", "measures": { "sum_gross_revenue": "301250" } }, { "timestamp": "2026-07-01", "measures": { "sum_gross_revenue": "355900" } } ] } ] }, "meta": { "request_id": "b93d9c94-c28f-4e5d-af2e-044854d7afe8", "pagination": { "per_page": 5, "next": "https://api.paddle.com/metrics/explore?after=eyJ2IjoxLCJxaWQiOiIwMWpuOHg0azJwN3E5ciIsIm9mZiI6NSwicWgiOiJzaGEyNTY6OWYyYzRkMWUiLCJleHAiOjE3ODU1Njc2MDB9", "has_more": true, "estimated_total": 42 } }}