Version
GET

Headline figures

/v1/analytics/dashboard in the Analytics API.

Total revenue, total transactions, total users and MRR, each with a trend relative to the compare_period window and a sparkline. The Recurring Monthly Income tile counts only active subscriptions on recurring plans, normalised to a monthly figure; one-time and lifetime plans are excluded.

curl "https://api.subscriby.net/v1/analytics/dashboard?period=30d&compare_period=previous" \  -H "Authorization: Bearer $SUBSCRIBY_TOKEN"
GET
/v1/analytics/dashboard

Requires ability

The token must hold this ability, or the call is refused with 403.

Runs the same action from an agent, behind the same ability.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted on the dashboard under Settings, then Tokens, sent as Authorization: Bearer sbt_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team.

In: header

Query Parameters

project_id?string

Scope the figures to one project the token may see; omit for every project visible to it. A project outside the token's scope:project: allow-list is 404 TENANT_MISMATCH, an unknown one 404 RESOURCE_NOT_FOUND.

Formatuuid
period?string

The preset window: 7d, 14d, 30d (the default), 60d, 90d, mtd, qtd, ytd, 1y or all. Ignored when both from and to are given; an unknown value falls back to the default rather than failing.

Default"30d"
from?string

The first day of an explicit window, YYYY-MM-DD. Both from and to are needed to override period.

Formatdate
to?string

The last day of an explicit window, YYYY-MM-DD. Both from and to are needed to override period.

Formatdate
compare_period?string

previous (the default) compares each tile with the window just before it and fills trend; none leaves the trend out.

Default"previous"
plan_ids[]?array<string>

Count only these plans. Send it as plan_ids[]=a&plan_ids[]=b or as one comma-separated string.

statuses[]?array<string>

Count only payments in these states: successful, failed, pending, refunded. Send them as statuses[]=a&statuses[]=b or as one comma-separated string.

payment_method_ids[]?array<string>

Count only payments taken through these payment methods. Send them as payment_method_ids[]=a&payment_method_ids[]=b or as one comma-separated string.

Responses

200OK

The headline tiles.

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers FORBIDDEN, TEAM_TIER_REQUIRED or CONNECTOR_TIER_REQUIRED with the same status, and says so in its own description.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

How is this guide?

Last updated on