Revenue across your roster
API reference

Revenue across your roster

Revenue for the agency's own account plus every managed account it may see stats for (`canViewStats`), with a per-account breakdown — the same figures as the dashboard's "All creators" view.

View as MarkdownUpdated Oct 26, 2026
GET/api/external/agency/statsNew

Revenue for the agency's own account plus every managed account it may see stats for (canViewStats), with a per-account breakdown — the same figures as the dashboard's "All creators" view.

Amounts are USD dollars (rounded to cents), excluding refunds and chargebacks: gross is buyer-paid minus VAT, net is the sellers' earnings after the platform fee. Days are UTC; the default range is the last 30 days. For one account's day-by-day chart and transactions, call GET /api/external/earnings with X-Dropfans-Account.

Authentication

Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.

Needs the agency's own key, sent without X-Dropfans-Account.

Query parameters

NameTypeRequiredDescription
startDatestringOptionalFirst UTC day (YYYY-MM-DD). Defaults to 29 days before today, so the default range is the last 30 days.
Format: date
endDatestringOptionalLast UTC day (YYYY-MM-DD), inclusive. Defaults to today.
Format: date

Responses

200Totals and per-account figures.
NameTypeDescription
startDatestringFirst UTC day included.
Format: date
endDatestringLast UTC day included.
Format: date
currencystringAlways "USD".
One of: USD
totalRevenueTotalsSum over every account below.
Show child attributes
grossnumberUSD **dollars**, buyer-paid minus VAT, excluding refunds and chargebacks.
netnumberUSD dollars, the seller’s earnings after the platform fee.
salesintegerPaid drop orders.
tipsintegerPaid tips.
subscriptionPaymentsintegerSubscription charges and renewals.
accountsobject[]The agency’s own account first, then every ACCEPTED managed account it may see stats for (canViewStats).
Show child attributes
idstringThe account’s user id.
usernamestring | nullPublic @handle.
namestring | nullDisplay name.
kindstringagency = the agency’s own account; creator = a managed creator or AI persona.
One of: agency, creator
grossnumberUSD dollars, as in RevenueTotals.
netnumberUSD dollars, as in RevenueTotals.
salesintegerPaid drop orders.
tipsintegerPaid tips.
subscriptionPaymentsintegerSubscription charges and renewals.
Example response
{
  "startDate": "2026-10-01",
  "endDate": "2026-10-26",
  "currency": "USD",
  "total": {
    "gross": 1240.5,
    "net": 992.4,
    "sales": 31,
    "tips": 12,
    "subscriptionPayments": 9
  },
  "accounts": [
    {
      "id": "cmh1agc0q0001ab7k2p9q4r8s",
      "username": "starlight_agency",
      "name": "Starlight Agency",
      "kind": "agency",
      "gross": 0,
      "net": 0,
      "sales": 0,
      "tips": 0,
      "subscriptionPayments": 0
    },
    {
      "id": "cmh4v2q8k0003xy9z7w6v5u4t",
      "username": "luna_ai",
      "name": "Luna",
      "kind": "creator",
      "gross": 820,
      "net": 656,
      "sales": 22,
      "tips": 8,
      "subscriptionPayments": 6
    },
    {
      "id": "cmh3k9p2a0002cd5e6f7g8h9j",
      "username": "valeria",
      "name": "Valeria",
      "kind": "creator",
      "gross": 420.5,
      "net": 336.4,
      "sales": 9,
      "tips": 4,
      "subscriptionPayments": 3
    }
  ]
}

Errors

StatusBodyWhen
400{"error":"Agency endpoints act as the agency itself — send them without X-Dropfans-Account.","code":"account_header_not_allowed"}The request carried `X-Dropfans-Account`. Agency endpoints always act as the agency.
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.
403{"error":"This endpoint needs a verified agency's own API key.","code":"agency_key_required"}The key is not a verified agency’s own key — a creator’s key, or a key an agency minted for one of its creators.
400{"error":"startDate/endDate must be YYYY-MM-DD with start ≤ end"}Malformed dates, or start after end.

Rate limiting

Every response carries the X-RateLimit-Tier header and, on limited tiers, the per-minute and per-day trios — read X-RateLimit-Remaining and X-RateLimit-Reset instead of hardcoding limits. Details in Rate limits.

Code samples

curl "https://www.dropfans.io/api/external/agency/stats?startDate=2026-10-01&endDate=2026-10-26" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"

Questions? [email protected]