Which creator this API key belongs to
Returns the creator account behind the key, plus metadata about the key itself.
/api/external/v1/mealso served at /api/external/meReturns the creator account behind the key, plus metadata about the key itself.
Call it once at startup to confirm the key works and to learn the creator's id, username and accountType — posting to the For You feed needs CREATOR or AGENCY, and every link surface needs a username. The key block tells you which integration the key was minted for and its rate-limit tier, matching the X-RateLimit-Tier header.
Called for a creator (/v1/creators/{creatorId}/me, or the deprecated X-Dropfans-Account), it describes that account instead: key.via is agency (with key.viaAgency: true and the agency in key.managedBy) or app for an account your app onboarded — a cheap way to check you point where you think. isAgency: true on the agency's own key means it can use the agency endpoints.
Authentication
Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.
For a creator you manage or onboarded
GET /api/external/v1/creators/{creatorId}/me — an agency's own key for a creator or AI persona it manages, or your app owner's own key for an account your app onboarded. The X-Dropfans-Account header still works but is deprecated. See Acting for a creator.
Responses
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | The Dropfans user id of the account this request acted on — the key’s own account, or the managed account named in X-Dropfans-Account. Stable — safe to key your own records on. | ||||||||||||||||||||||||||||||||||||||||||||||||
username | string | null | The creator’s public @handle, without the @. Null until the creator picks one — several link surfaces (GET /api/external/v1/links, the post url) need it. | ||||||||||||||||||||||||||||||||||||||||||||||||
name | string | null | Display name. Null when unset. | ||||||||||||||||||||||||||||||||||||||||||||||||
image | string | null | Profile image URL. Null when the creator has no avatar. Format: uri | ||||||||||||||||||||||||||||||||||||||||||||||||
accountType | string | Account class of the account acted on. Posting to the For You feed requires CREATOR or AGENCY. One of: CONSUMER, CREATOR, AGENCY | ||||||||||||||||||||||||||||||||||||||||||||||||
sellerStatus | string | Internal seller state, for support (PENDING_KYC, KYC_IN_REVIEW, KYC_REJECTED, VERIFIED_CREATOR, VERIFIED_AGENCY). Added 2026-10-15. | ||||||||||||||||||||||||||||||||||||||||||||||||
isAgency | boolean | True when the account is a verified agency (sellerStatus VERIFIED_AGENCY) — its own key can use the /api/external/v1/agency endpoints and X-Dropfans-Account. Added 2026-10-15. | ||||||||||||||||||||||||||||||||||||||||||||||||
kycStatus | string | Coarse ID-check state. covered_by_agency = an AI persona whose verification rides on its agency’s. Added 2026-10-15.One of: not_started, session_created, in_review, processing, approved, rejected, covered_by_agency | ||||||||||||||||||||||||||||||||||||||||||||||||
key | object | Metadata about the API key used on this request (added 2026-08-19).Show child attributes
|
{
"id": "clx2f8a1b0001qw3k",
"username": "valeria",
"name": "Valeria",
"image": "https://cdn.dropfans.io/valeria/profile.jpg",
"accountType": "CREATOR",
"sellerStatus": "VERIFIED_CREATOR",
"isAgency": false,
"kycStatus": "approved",
"key": {
"name": "KVIQA",
"app": {
"slug": "kviqa",
"name": "KVIQA"
},
"tier": "app",
"managedBy": null,
"viaAgency": false
}
}Errors
| Status | Body | When |
|---|---|---|
| 401 | {"error":"Unauthorized","code":"unauthorized"} | Missing or invalid API key. |
| 400 | {"error":"X-Dropfans-Account must be an account id (from GET /api/external/agency/creators), not a username.","code":"invalid_account_header"} | `X-Dropfans-Account` is not an account id. |
| 400 | {"error":"X-Dropfans-Account names a different account than the path — send one or the other.","code":"account_mismatch"} | Called under /v1/creators/{creatorId}/ with an `X-Dropfans-Account` naming another account. |
| 403 | {"error":"This key cannot act for that account.","code":"account_not_managed"} | The creator in the path (or `X-Dropfans-Account`) is one this key cannot act for: no ACCEPTED management by your agency and not an account your app onboarded (or it no longer holds a key bound to your app), a key minted for one creator, or someone is suspended, banned or deleted. An unknown id gets the same answer. |
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/me" \
-H "Authorization: Bearer $DROPFANS_API_KEY"const res = await fetch(`https://www.dropfans.io/api/external/v1/me`, {
headers: {
Authorization: `Bearer ${process.env.DROPFANS_API_KEY}`,
},
});
console.log(await res.json());import os
import requests
res = requests.get(
"https://www.dropfans.io/api/external/v1/me",
headers={"Authorization": f"Bearer {os.environ['DROPFANS_API_KEY']}"},
)
print(res.json())Notes
The accountType and key fields were added with the public launch (2026-08-19); sellerStatus, isAgency, kycStatus and key.managedBy on 2026-10-15; key.viaAgency on 2026-10-26; key.via and key.apiCategories on 2026-11-01. id, username, name and image are unchanged from the original response.
Questions? support@dropfans.io
