Skip to content

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.

send-ppv.ts
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.

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.