Fansly messaging
The Fansly messaging API for chats and DMs
Read every chat on the Fansly accounts you manage, search the message history and ask to send a fan a message. A send never goes straight to Fansly. It becomes a pending action with a plain summary, and an owner or admin approves or rejects it in the dashboard.
curl https://betterfans.link/v1/accounts/$ACCOUNT_ID/actions \
-H "Authorization: Bearer $BFL_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"type": "send_message",
"params": {
"fanId": "601238847551209472",
"text": "Thank you for the tip. The set you asked about is below.",
"mediaIds": ["612094473318821888"]
}
}'
# 202 Accepted. Nothing reaches Fansly until someone approves it:
# "status": "pending",
# "platform": "fansly",
# "approvalUrl": "https://betterfans.link/approve/act_9Hc2WqL7nRx4TbK8mVe3ZpYd"Fansly messaging
What you can do
Chats
List an account's chats, newest first, with unread counts and what each fan has spent. A chat id is the fan id.
Message history
Read the messages in any chat from synced data, newest first, with the media on each one.
Live reads
Add ?fresh=true to read a chat live from Fansly, for any chat the account already has.
Search
Find words across the account's messages, for one fan or a date range.
Free messages with media
Attach free vault media by id. Fansly sends are always free, so leave out priceCents.
Unsend and safe retries
Take a message back with unsend_message. Every write carries an Idempotency-Key, so a retry never sends twice.
FAQ
Frequently asked questions
Can I send Fansly messages through an API?
Yes, with approval. POST to /v1/accounts/{accountId}/actions with type send_message, the fan id and the text. The API answers 202 with a pending action and an approval link, and the message goes to Fansly only after an owner or admin approves it. Your key needs the write scope, and writes must be on for the account.
Can I send paid or mass messages on Fansly?
No. A Fansly send through BetterFans Link is a free message to one fan. A priceCents above 0 is rejected with invalid_parameter, and send_mass_message on a Fansly account answers not_supported_on_platform before any action exists. Both work on OnlyFans accounts.
Can the API start a new chat with a Fansly fan?
No. A Fansly send goes to the chat the account already has with that fan. If there is none, nothing is sent and the approved action ends failed with chat_not_found. List the account's chats first to see who you can message.
Which media can I attach to a Fansly message?
Free vault media. Take ids from GET /v1/accounts/{accountId}/vault and pass them in mediaIds. If an item is not free, nothing is sent and the approved action ends failed with invalid_parameter.
Related
Related features
Fansly fan data
Rank Fansly subscribers by spend, with subscription dates, spend by type and lists.
Fansly agencies
Link many Fansly creators to one workspace, with roles, per-account keys and a log of every call.
Fansly MCP server
Connect Claude or Cursor to your Fansly creators. It reads and drafts, and you approve every send.
GET STARTED
Build it in test mode today.
Sign up, make a test key and work against sandbox creators. Link a real account when your flow is ready.
Questions first? Write to hello@betterfans.link.