Revenue composition
/v1/analytics/composition in the Analytics API.
How the window's revenue and payments are composed, as the five donuts the dashboards draw: transaction fees by payment provider, settled transactions by plan kind, gross revenue by currency, payment attempts by outcome, and the monthly recurring revenue split by plan.
curl "https://api.subscriby.net/v1/analytics/composition?project_id=$PROJECT_ID&period=30d" \ -H "Authorization: Bearer $SUBSCRIBY_TOKEN"- Every dataset carries
total,unit(usdorcount) andslicessorted largest first; each slice has itskey,label,value,share_percentand thecolorthe dashboard draws it in, so a client can render the same donut. fees_by_provider,transactions_by_kindandrevenue_by_currencyread the same settled payments, so they agree with each other to the cent;payment_outcomesreads every attempt in the window, because a failed charge is exactly what it exists to show.mrr_by_planignores the window: MRR is a balance, not a flow. It counts every active subscription on a recurring plan, normalised to a monthly USD figure, filed under its plan.- Labels come back in the creator's language.
Requires ability
The token must hold this ability, or the call is refused with 403.
MCP tool
Runs the same action from an agent, behind the same ability.
Authorization
bearerToken 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
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.
uuidThe 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.
"30d"The first day of an explicit window, YYYY-MM-DD. Both from and to are needed to override period.
dateThe last day of an explicit window, YYYY-MM-DD. Both from and to are needed to override period.
dateResponses
200OKapplication/json
The four dashboard donuts for the window plus the MRR base split by plan, each as total, unit and slices.
401UnauthorizedAUTHENTICATION_REQUIREDapplication/json
The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).
403ForbiddenTOKEN_MISSING_ABILITYapplication/json
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 requestsRATE_LIMITEDapplication/json
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