fans:read to list and read; fans:write to set custom names, notes and mute.
The Fan object
Fan
Timestamps are
null when OnlyFans has not reported them.
List and filter fans
GET /v1/fans returns fans across the creators the key can see, biggest spenders first by default.
Segments
Response 200
GET /v1/fans/{fanId} returns one fan. A fan id you cannot see returns 404 FAN_NOT_FOUND.
Purchase history
GET /v1/fans/{fanId}/purchases lists what the fan bought from this creator, newest first: paid-message unlocks and tips. Sales the AI made, sales your team made and unlocks bought on OnlyFans directly are all included; refunded sales are not. Subscription payments are not in this list: find them in the creator’s transaction ledger (GET /v1/creators/{creatorId}/transactions, scope money:read; see Pull stats). Page with limit (1 to 100, default 25) and cursor.
Response 200
Notes, custom names and mute
PATCH /v1/fans/{fanId} (scope fans:write) changes only the fields you send. Send an empty string or null to clear a text field. Any other field is refused with 400 VALIDATION_ERROR. Send an optional Idempotency-Key header to make retries safe.
Fan lists
GET /v1/fan-lists (optionally creatorId; limit 1 to 100, default 25, and cursor) returns the creators’ OnlyFans lists with their size. Lists are mirrored from OnlyFans; managing them is not available through the API yet.
Response 200
kind is the kind of list as OnlyFans reports it, for example subscribers, rebill_off (renew off) or custom for lists the creator made herself. It is a plain string, so treat values you do not recognize as system lists. Each Fan’s lists shows which lists it is on.
Recipes
- Lapsing whales to save this week:
segment=lapsing&sort=spend&order=desc, then have your team (or the AI) reach out personally. - Win-back campaign:
segment=winback, sorted byspend. OnlyFans often refuses messages to fans who are no longer subscribed (SEND_REFUSED), so pair this list with offers outside the inbox, such as a discounted trial link from Tracking links. - Who to thank:
segment=recent_buyer&sort=last_purchase&order=desc. - Enrich your CRM: page through
GET /v1/fansnightly and storeid,totalSpentCents,lastPurchaseAtandrenewOn.
Related
- Read and send messages: message a fan through their
conversationId. - Pull stats: audience totals and spend bands.
- Pagination: cursors and page sizes.