GET /v1/revenuecat/charts/:chartName
Requires a RevenueCat secret API key (
sk_xxx) and the Pro plan (free up to $2,500 MTR). Use the Chart Options endpoint to discover available resolutions, segments, and filters for each chart.Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| chartName | string | Yes | Chart identifier (see Available Charts below) |
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| X-RC-Key | string | Yes | Your RevenueCat secret API key (starts with sk_) |
| X-RC-Project | string | No | RevenueCat project ID. Auto-detected if you have one project. |
Query Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| start_date | string | 28 days ago | Start date in ISO 8601 format (e.g. 2025-01-01) |
| end_date | string | today | End date in ISO 8601 format (e.g. 2026-03-08) |
| resolution | string | varies | Time resolution: day, week, month, quarter, year |
| segment | string | — | Segment dimension (use chart options to discover available ones) |
| filters | string | — | JSON array of filter objects |
| selectors | string | — | JSON object of chart selectors |
| currency | string | USD | ISO 4217 currency code |
| aggregate | string | — | average, total, or both — returns summary only, no time-series |
Code Examples
curl -X GET "https://api.appeeky.com/v1/revenuecat/charts/revenue?start_date=2025-06-01&end_date=2026-03-08&resolution=month" \
-H "X-API-Key: YOUR_API_KEY" \
-H "X-RC-Key: sk_YOUR_REVENUECAT_SECRET_KEY"
const response = await fetch(
"https://api.appeeky.com/v1/revenuecat/charts/revenue?start_date=2025-06-01&end_date=2026-03-08&resolution=month",
{
headers: {
"X-API-Key": "YOUR_API_KEY",
"X-RC-Key": "sk_YOUR_REVENUECAT_SECRET_KEY",
},
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.get(
"https://api.appeeky.com/v1/revenuecat/charts/revenue",
params={
"start_date": "2025-06-01",
"end_date": "2026-03-08",
"resolution": "month",
},
headers={
"X-API-Key": "YOUR_API_KEY",
"X-RC-Key": "sk_YOUR_REVENUECAT_SECRET_KEY",
},
)
data = response.json()
print(data)
Response
{
"data": {
"category": "revenue",
"display_name": "Revenue",
"display_type": "area",
"description": "Revenue displays the revenue generated during a period...",
"start_date": 1751241600,
"end_date": 1774915200,
"last_computed_at": 1772985539587,
"resolution": "month",
"segments": [
{
"chartable": true,
"decimal_precision": 0,
"description": "The total revenue generated in a given period, minus refunds.",
"display_name": "Revenue",
"tabulable": true,
"unit": "$"
},
{
"chartable": false,
"decimal_precision": 0,
"description": "The count of revenue generating transactions for the period.",
"display_name": "Transactions",
"tabulable": true,
"unit": "#"
}
],
"values": [
[1751241600, 0.0, 0.0],
[1753920000, 0.0, 0.0],
[1756598400, 0.0, 0.0],
[1759276800, 0.0, 0.0],
[1761955200, 0.0, 0.0],
[1764547200, 0.0, 0.0],
[1767225600, 11.6, 1.0],
[1769904000, 0.0, 0.0],
[1772323200, 0.0, 0.0],
[1774915200, 0.0, 0.0]
],
"summary": {
"average": { "Revenue": 1.16, "Transactions": 0.1 },
"total": { "Revenue": 11.6, "Transactions": 1.0 }
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
| category | string | Chart category (e.g. revenue, mrr, churn) |
| display_name | string | Human-readable chart name |
| display_type | string | Chart visualization type (area, bar, line) |
| description | string | Detailed description of what the chart shows |
| start_date | number | Unix timestamp of the data range start |
| end_date | number | Unix timestamp of the data range end |
| last_computed_at | number | Unix timestamp of when data was last computed |
| resolution | string | Time resolution used (day, week, month, etc.) |
| segments | array | Metadata for each data column in values |
| values | array[] | Time-series data: [timestamp, value1, value2, ...] |
| summary | object | Aggregated statistics (average, total) |
Values Array
Each entry invalues is an array where:
- Index
0= Unix timestamp for the period - Index
1+= Values corresponding to each segment in order
[1767225600, 11.6, 1.0]means: at timestamp1767225600→ Revenue = $11.60, Transactions = 1
Available Charts
| Chart Name | Description |
|---|---|
revenue | Total revenue generated per period |
mrr | Monthly Recurring Revenue over time |
mrr_movement | MRR changes: new, expansion, contraction, churn |
arr | Annual Recurring Revenue |
actives | Active subscriptions over time |
actives_movement | Active subscription changes |
actives_new | New active subscriptions per period |
churn | Churn rate and churned subscribers |
trials | Active trials over time |
trials_movement | Trial starts, conversions, and expirations |
trial_conversion | Trial-to-paid conversion rate |
conversion_to_paying | Overall conversion to paying customers |
customers_new | New customers per period |
subscription_status | Breakdown by subscription status |
subscription_retention | Cohort-based subscription retention |
refund_rate | Refund rate over time |
ltv_per_customer | Lifetime value per customer |
ltv_per_paying_customer | Lifetime value per paying customer |
cohort_explorer | Cohort analysis explorer |
non_subscription_purchases | Non-subscription purchase revenue |
Errors
| Status | Code | When |
|---|---|---|
| 400 | MISSING_RC_KEY | X-RC-Key header not provided |
| 400 | INVALID_CHART_NAME | Chart name is not one of the valid options |
| 400 | PARAMETER_ERROR | Invalid query parameter (e.g. bad date format) |
| 401 | UNAUTHORIZED | Invalid RevenueCat API key |
| 404 | RESOURCE_MISSING | Project or app not found / Charts not enabled |

