Get the subscriptions time series
GET
MRR, active subscribers and the MRR movements per time bucket, in one currency (currency, else the site's).
Requires revenue:read on the site (an API key, or a signed-in member's role). Share links: 401.
header
x-api-key<token>An organization API key (ak_…), with the permissions and the sites it was created with. For servers and scripts: no cookie and no Origin check. Also accepted as Authorization: Bearer ak_… (apiKeyBearer). A request carries one credential: a key sent with a share token or a live session cookie is 400 (details.reason: ambiguous_credentials).
Scope: revenue:read
siteId*stringstart?stringend?stringlast?stringall?"true"Value in
"true"tz?stringbucket?stringValue in
"minute""5m""15m""hour""day""week""month""year"currency?stringISO 4217 code: only amounts in this currency count, so every amount of the response is in it (no conversion); default: the site's currency
Match
^[A-Za-z]{3}$OK
application/json- response
data*array<>meta*curl -X GET 'https://pilotfox.app/api/v1/sites/string/revenue/subscriptions/timeseries'Example Response200
{ "data": [ { "t": "string", "mrr": 0, "active_subscribers": 0, "new_mrr": 0, "expansion_mrr": 0, "contraction_mrr": 0, "churned_mrr": 0, "reactivation_mrr": 0, "net_new_mrr": 0 } ], "meta": { "window": { "from": "string", "to": "string", "tz": "string", "bucket": "minute" }, "compare": { "from": "string", "to": "string" }, "totalCount": -9007199254740991, "nextCursor": "string", "truncated": true, "cache": "hit" }}