OnlyFans Creator Profile & User API
Almost every integration starts by answering "who is this?" The ofapis OnlyFans creator profile API and user endpoints return the authenticated creator's own profile and resolve any other user by id or username. It is the base layer beneath dashboards, CRMs, and bots — a cheap identity call you make before doing anything account-specific.
What you can do
- Get the authenticated creator profile (
/me). - Look up any user by id.
- Look up any user by username.
- Run all of the above scoped to a specific linked account.
Endpoints
GET /api/public/v1/me
GET /api/public/v1/users/{targetUserId}
GET /api/public/v1/users/by-username/{username}
# account-scoped
GET /api/public/v1/accounts/{accountId}/me
GET /api/public/v1/accounts/{accountId}/users/{targetUserId}
GET /api/public/v1/accounts/{accountId}/users/by-username/{username}
The global forms use the first active account; the scoped forms take an explicit accountId, which is how an agency picks which creator answers.
Get the creator profile
curl https://api.ofapis.com/api/public/v1/me \
-H "Authorization: Bearer ofapis_sk_..."
Returns the profile — id, username, display name, subscriber count, chat count — and debits one credit on success.
Look up a user by username
curl https://api.ofapis.com/api/public/v1/accounts/42/users/by-username/somefan \
-H "Authorization: Bearer ofapis_sk_..."
Use cases
- Health check. Call
/meon a schedule to confirm a linked account's session is alive and the numbers look right. Because failed calls (expired session) are not billed, a failure here is a free signal to re-link — see how to authenticate an account. - Contact enrichment. Resolve a raw user id from a webhook or a chat into a real username and display name before writing it into your CRM.
- Pre-segment resolution. Confirm a fan exists and grab their id before adding them to a fan segment.
Gotchas
/meis the creator, not a fan. It always returns the linked account's own profile. To read someone else, use theusers/{id}orby-usernameroutes.- Which account answers
/me? The global route uses the first active account. If several creators are linked, use the scoped/accounts/{accountId}/meform to be explicit. - Billing. One credit per successful lookup; failures are free.
- Rate limits track your plan's requests-per-minute — see pricing. Cache profile fields that rarely change rather than re-fetching per request.
FAQ
How do I pick which account /me returns?
The global /me uses the first active linked account. The scoped /accounts/{accountId}/me form takes an explicit account id, which is what you use when several creators share one key.
Can I look up a fan by their handle instead of a numeric id?
Yes. Use GET /users/by-username/{username} (or the account-scoped variant) to resolve a handle to a full user object.
Is every lookup billed?
Yes — one credit per successful call. Failed calls, including an expired session, are not charged.
What fields does the profile return?
Identity and headline stats: id, username, display name, subscriber count, and chat count, among others documented in the spec.