Earnings report
/v1/analytics/earnings in the Analytics API.
The full earnings breakdown (gross, fees, net, transaction count) plus a timeseries bucketed by granularity: day (the default), week or month.
curl "https://api.subscriby.net/v1/analytics/earnings?granularity=week" \ -H "Authorization: Bearer $SUBSCRIBY_TOKEN"Every money figure is USD-normalised so buckets in different currencies add up; totals.currency says so.
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.
dateThe bucket size of the timeseries: day (the default), week or month. Anything else is 422 VALIDATION_FAILED.
"day"Count only these plans. Send it as plan_ids[]=a&plan_ids[]=b or as one comma-separated string.
Count only payments in these states: successful, failed, pending, refunded. Send them as statuses[]=a&statuses[]=b or as one comma-separated 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
200OKapplication/json
Gross, fees and net per bucket.
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.
422Validation failedVALIDATION_FAILEDapplication/json
When granularity is not day, week or month, or project_id is not a UUID.
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