Get your app
API reference

Get your app

Your app as we know it: name, logo, status, commission terms and which API categories are switched on. Always the app the key is bound to.

View as MarkdownUpdated Oct 30, 2026
GET/api/external/v1/crm/appalso served at /api/external/crm/appNew

Your app as we know it: name, logo, status, commission terms and which API categories are switched on. Always the app the key is bound to.

Authentication

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

Responses

200Your app.
NameTypeDescription
idstringYour app’s id.
namestringApp name, as creators see it.
logoUrlstring | nullApp logo, or null.
Format: uri
statusstringAlways approved here: a suspended app’s keys get 403 app_suspended on every endpoint.
One of: approved
commissionobjectYour commission terms.
Show child attributes
ratenumberShare of each sale (excl. tax) booked for your app owner, as a fraction: 0.05 = 5%.
typesstring[]Sale types that earn commission.
apiCategoriesApiCategoryState[]Your app’s API category switches: which parts of the API your keys may call (see /developers/concepts/api-categories). Added 2026-11-01.
Show child attributes
idstringCategory id — the category of a 403 api_category_disabled.
labelstringHuman-readable name.
enabledbooleanWhether your app may call this category’s endpoints.
lockedbooleanTrue for categories that are always on (account).
Example response
{
  "id": "clxap0001app",
  "name": "Acme CRM",
  "logoUrl": "https://cdn.example.com/acme/logo.png",
  "status": "approved",
  "commission": {
    "rate": 0.05,
    "types": [
      "drop",
      "tip",
      "subscription"
    ]
  },
  "apiCategories": [
    {
      "id": "account",
      "label": "Account",
      "enabled": true,
      "locked": true
    },
    {
      "id": "payouts",
      "label": "Payouts",
      "enabled": false,
      "locked": false
    }
  ]
}

Errors

StatusBodyWhen
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.
400{"error":"This endpoint acts as the key’s own account or app — call it without /creators/{creatorId}.","code":"creator_scope_not_allowed"}Called under /api/external/v1/creators/{creatorId}/ — this endpoint always acts as the key’s own account, agency or app.
403{"error":"This app does not have the crm API category enabled. Contact support to enable it.","code":"api_category_disabled","category":"crm"}Your app has the CRM dashboard [API category](/developers/concepts/api-categories) switched off.

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

Questions? support@dropfans.io