List your connected accounts
API reference

List your connected accounts

Your integration dashboard’s Accounts tab: every account your app has generated links for, with its all-time sales through your links and the commission booked on them.

View as MarkdownUpdated Oct 30, 2026
GET/api/external/crm/accountsNew

Your integration dashboard’s Accounts tab: every account your app has generated links for, with its all-time sales through your links and the commission booked on them.

Accounts that sold through your links without you generating them are listed too.

An account is connected while your app is the one that generated its links most recently. When another CRM generated them after you, movedAway.at says when; which CRM is never disclosed. Agencies are the sum of their children (their creators and their own sales as a creator); pass flat=true to get only those rows, each with agencyId, so that a column sums without double counting.

Amounts are integer US cents, excluding tax, before our platform fee; refunded and charged-back sales are left out.

Authentication

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

Query parameters

NameTypeRequiredDescription
flatbooleanOptionaltrue: no nesting — plain accounts plus every agency’s rows, each with agencyId; agency sum rows left out.
Default: false

Responses

200Every account, connected first, then by sales through your links.
NameTypeDescription
currencystringCurrency of every *Cents field.
One of: USD
accountsCrmConnectedAccount[]Connected first, then by viaLinksCents.
Show child attributes
idstringAccount id.
usernamestring | null@handle without the @.
namestring | nullDisplay name.
kindstringaccount: a creator on its own. agency: an agency, the sum of its children. creator: a creator whose links an agency asked for. own: an agency’s own sales as a creator.
One of: account, agency, creator, own
connectedbooleanTrue when your app generated the account’s links most recently (an agency: any of its rows).
connectedAtstring | nullWhen your app first issued links for it.
Format: date-time
movedAwayobject | nullSet when another CRM generated the account’s links after you did. Which CRM is never disclosed.
Show child attributes
atstringWhen the other CRM last generated its links.
Format: date-time
linksintegerLink ids your app created for it.
allTimeGrossCentsintegerEverything the account ever sold, through any CRM or none, US cents, excl. tax, reversals left out.
viaLinksCentsintegerIts sales through your app’s links, all-time, US cents, excl. tax, reversals left out.
crmEarnedCentsintegerCommission booked for your app owner on those sales, US cents.
agencyIdstring | nullOnly with flat=true: the agency the row belongs to, or null.
childrenCrmConnectedAccount[]Only on agency rows without flat=true: its creators and its own row.
Show child attributes
idstringAccount id.
usernamestring | null@handle without the @.
namestring | nullDisplay name.
kindstringaccount: a creator on its own. agency: an agency, the sum of its children. creator: a creator whose links an agency asked for. own: an agency’s own sales as a creator.
One of: account, agency, creator, own
connectedbooleanTrue when your app generated the account’s links most recently (an agency: any of its rows).
connectedAtstring | nullWhen your app first issued links for it.
Format: date-time
movedAwayobject | nullSet when another CRM generated the account’s links after you did. Which CRM is never disclosed.
Show child attributes
atstringWhen the other CRM last generated its links.
Format: date-time
linksintegerLink ids your app created for it.
allTimeGrossCentsintegerEverything the account ever sold, through any CRM or none, US cents, excl. tax, reversals left out.
viaLinksCentsintegerIts sales through your app’s links, all-time, US cents, excl. tax, reversals left out.
crmEarnedCentsintegerCommission booked for your app owner on those sales, US cents.
agencyIdstring | nullOnly with flat=true: the agency the row belongs to, or null.
childrenCrmConnectedAccount[]Only on agency rows without flat=true: its creators and its own row.
Show child attributes
idstringAccount id.
usernamestring | null@handle without the @.
namestring | nullDisplay name.
kindstringaccount: a creator on its own. agency: an agency, the sum of its children. creator: a creator whose links an agency asked for. own: an agency’s own sales as a creator.
One of: account, agency, creator, own
connectedbooleanTrue when your app generated the account’s links most recently (an agency: any of its rows).
connectedAtstring | nullWhen your app first issued links for it.
Format: date-time
movedAwayobject | nullSet when another CRM generated the account’s links after you did. Which CRM is never disclosed.
linksintegerLink ids your app created for it.
allTimeGrossCentsintegerEverything the account ever sold, through any CRM or none, US cents, excl. tax, reversals left out.
viaLinksCentsintegerIts sales through your app’s links, all-time, US cents, excl. tax, reversals left out.
crmEarnedCentsintegerCommission booked for your app owner on those sales, US cents.
agencyIdstring | nullOnly with flat=true: the agency the row belongs to, or null.
childrenCrmConnectedAccount[]Only on agency rows without flat=true: its creators and its own row.
totalsCrmAccountsTotalsSums over every account.
Show child attributes
linksintegerLink ids your app created, all accounts.
allTimeGrossCentsintegerSum of allTimeGrossCents, US cents.
viaLinksCentsintegerSum of viaLinksCents, US cents: everything ever sold through your app’s links.
crmEarnedCentsintegerSum of crmEarnedCents, US cents.
Example response
{
  "currency": "USD",
  "accounts": [
    {
      "id": "clxac0001acct",
      "username": "valeria",
      "name": "Valeria",
      "kind": "account",
      "connected": true,
      "connectedAt": "2026-10-17T16:05:00.000Z",
      "movedAway": null,
      "links": 4,
      "allTimeGrossCents": 250000,
      "viaLinksCents": 64000,
      "crmEarnedCents": 3200
    },
    {
      "id": "clxac0002acct",
      "username": "nora",
      "name": "Nora",
      "kind": "account",
      "connected": false,
      "connectedAt": "2026-09-02T10:00:00.000Z",
      "movedAway": {
        "at": "2026-10-20T08:30:00.000Z"
      },
      "links": 2,
      "allTimeGrossCents": 90000,
      "viaLinksCents": 12000,
      "crmEarnedCents": 600
    }
  ],
  "totals": {
    "links": 6,
    "allTimeGrossCents": 340000,
    "viaLinksCents": 76000,
    "crmEarnedCents": 3800
  }
}

Errors

StatusBodyWhen
400{"error":"flat must be true or false.","code":"invalid_input","field":"flat"}Anything else.
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.
403{"error":"This endpoint needs a key bound to an approved app.","code":"app_key_required"}A Personal key was used.
403{"error":"Use the app owner's key for this endpoint.","code":"owner_key_required"}The key was minted by a creator for themselves. App-level calls need a key held by your app owner: their own, or one their agency minted for its personas or managed creators.
400{"error":"This endpoint only acts as the key’s own account — send it without X-Dropfans-Account.","code":"account_header_not_allowed"}`X-Dropfans-Account` was sent. These endpoints always answer for the key’s app.

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/crm/accounts" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"

Questions? [email protected]