Messaging
The OnlyFans Messaging API for DMs, mass messages and PPV
Send one-to-one messages, queue mass messages to fan lists, attach vault media and set a price for pay-per-view, all through typed routes. Every request body and response is checked at compile time, so a typo in a field name fails in your editor instead of in production.
const account = client.for("123456789")
// A pay-per-view message: media attached, price set
const [error, message] = await account.request("POST /chats/:id/messages", {
pathParams: { id: fanId },
body: {
text: "Something special, just for you",
mediaFiles: [mediaId],
price: 15,
},
})
// Queue a mass message to a fan list
await account.request("POST /messages/queue", {
body: { text: "New set drops tonight", mediaFiles: [mediaId], userLists: [listId] },
})Messaging API
What's included
Direct messages
Send text or media to any fan with POST /chats/:id/messages. Replies come back typed, including the new message id.
Pay-per-view
Set a price on any message with media attached and it becomes a PPV unlock. The same call handles free and paid content.
Mass-message queue
Queue a message to one or more user lists, check its status, update it or cancel it before it goes out.
Chat inbox
List conversations, search message history inside a chat, fetch messages and mark chats as read.
Message interactions
Like, unlike and delete messages so your tool can mirror what a chatter does by hand.
Formatting helpers
markdownToHtml converts simple Markdown into the text format OnlyFans expects, so copy stays readable in your code.
FAQ
Frequently asked questions
Can I send OnlyFans messages through an API?
Yes. With BetterFans Link you call POST /chats/:id/messages on a scoped client for the creator account and pass the fan id and message body. The route is fully typed, so your editor knows every accepted field, including text, attached media and price. The request runs through the same infrastructure OFManager uses in production, with session handling and retries already taken care of.
How do I send a pay-per-view message with the API?
Attach one or more media ids in mediaFiles and set a price in the same request body. The message is delivered locked, and the fan pays to unlock it. You can upload new media first with the media plugin, which returns an id ready to attach, or reuse media already in the creator vault. PPV purchases then arrive as ppv_purchase events on the real-time EventBus.
Does the messaging API support OnlyFans mass messages?
Yes. POST /messages/queue creates a queued mass message aimed at one or more user lists, with optional media attached. You get a queue id back, which you can use to check status, update the message or cancel it before it sends. This is the same queue a creator uses in the OnlyFans interface, driven from your own code instead.
Can my tool read and search existing OnlyFans chats?
Yes. GET /chats lists conversations for an account, GET /chats/:id/messages returns the message history for one conversation, and a search route finds messages inside a chat by text. You can also mark a chat as read once your tool or a human chatter has handled it, which keeps the creator inbox tidy across every account you manage.
Related
Keep exploring the API
Chatbot API
Listen for new messages on every account over one WebSocket and reply with typed calls.
Media and vault API
Upload photos and videos from a URL in one call and organize the vault with typed routes.
Webhooks and events
Typed events for messages, tips, subscribers and PPV over one WebSocket, plus signed transaction webhooks.
LET’S BUILD SOMETHING BETTER
Your next big idea starts with a connection.
Build the tools your team has been waiting for. We’ll handle the connection to OnlyFans.
Your ideas. Your interface. BetterFans Link underneath.