Read the creator’s public profile
API reference

Read the creator’s public profile

The creator's public profile: username, display name, bio, visibility, contact handles and images.

View as MarkdownUpdated Oct 26, 2026
GET/api/external/profileNew

The creator's public profile: username, display name, bio, visibility, contact handles and images.

Image URLs are signed and valid for 24 hours — fetch them when you need them, don't store them. Change any of it with PATCH /api/external/profile.

Authentication

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

An agency's own key can call this for a creator it manages by adding X-Dropfans-Account: <account id>. See Agencies.

Responses

200The profile.
NameTypeDescription
idstringThe account’s user id.
usernamestring | nullPublic @handle, without the @.
displayNamestring | nullDisplay name.
biostring | nullProfile bio.
profileVisiblebooleanWhether the public profile is visible.
locationstring | nullFree-text location.
websiteUrlstring | nullWebsite link.
twitterHandlestring | nullX / Twitter handle.
instagramHandlestring | nullInstagram handle.
tiktokHandlestring | nullTikTok handle.
snapchatHandlestring | nullSnapchat handle.
threadsHandlestring | nullThreads handle.
youtubeHandlestring | nullYouTube handle.
telegramHandlestring | nullTelegram handle.
whatsappNumberstring | nullWhatsApp number.
imessageHandlestring | nulliMessage handle.
primaryContactPlatformstring | nullWhich contact platform the profile highlights.
avatarUrlstring | nullProfile image. Signed URL, valid 24 hours — do not store it.
Format: uri
bannerUrlstring | nullBanner image. Signed URL, valid 24 hours — do not store it.
Format: uri
avatarModerationStatusstring | nullPENDING, APPROVED, REJECTED or FLAGGED for the profile image (a new image shows once approved); null when there is none.
bannerModerationStatusstring | nullPENDING, APPROVED, REJECTED or FLAGGED for the banner image; null when there is none.
Example response
{
  "id": "cmh4v2q8k0003xy9z7w6v5u4t",
  "username": "luna_ai",
  "displayName": "Luna",
  "bio": "Your favourite AI muse ✨",
  "profileVisible": true,
  "location": null,
  "websiteUrl": null,
  "twitterHandle": null,
  "instagramHandle": "luna.ai",
  "tiktokHandle": null,
  "snapchatHandle": null,
  "threadsHandle": null,
  "youtubeHandle": null,
  "telegramHandle": "luna_ai",
  "whatsappNumber": null,
  "imessageHandle": null,
  "primaryContactPlatform": "telegram",
  "avatarUrl": "https://cdn.dropfans.io/luna_ai/profile.jpg?token=…",
  "bannerUrl": null,
  "avatarModerationStatus": "APPROVED",
  "bannerModerationStatus": null
}

Errors

StatusBodyWhen
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.
404{"error":"Account not found"}The account no longer exists.
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.
403{"error":"This key cannot act for that account.","code":"account_not_managed"}`X-Dropfans-Account` names an account this key cannot act for: not an agency’s own key, no ACCEPTED management, or the agency or account 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/profile" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"

Questions? [email protected]