OnlyFans API
OnlyFans Mass Messaging API

Send Targeted Mass Messages and PPV Campaigns via API

Programmatically send mass messages to user lists, schedule PPV campaigns with media, and track unlock rates with real-time webhooks. Built for agencies managing multiple creators at scale.

How Mass Messaging Works via API

Upload media, target fan segments, send at scale, and track revenue — all programmatically with real-time status callbacks.

Upload MediaPush photos or videos to OnlyFans CDN
Target FansSelect user lists or individual fan IDs
Send CampaignMass message queued and sent progressively
Track RevenuePPV unlock webhooks fire in real time

Real Webhook-Driven Mass Messaging Use Cases

Each use case shows the webhook event that triggers it and the API endpoint you call. Build these into your messaging pipeline.

📨

Send PPV Campaigns to Fan Segments

Target specific user lists with PPV content. Upload media, set a price, and send to thousands of fans with a single API call.

WEBHOOKchat_queue.finished

Fires when the mass message batch completes sending

POST/api/{account}/mass-messaging

Send a mass message with media, price, and user list targeting

💵

Track PPV Unlock Revenue

Get notified the instant a fan unlocks a paid message. Track revenue per campaign and per fan in real time.

WEBHOOKmessages.ppv.unlocked

Fires when a fan purchases a paid message with amount data

GET/api/{account}/engagement/messages/mass-messages

Get mass message engagement stats and revenue

📋

Build Smart Target Lists

Create user lists by segment — top spenders, recent subscribers, expired fans — and use them as mass message targets.

WEBHOOKsubscriptions.new

Fires on new subscription — add to welcome campaign list

POST/api/{account}/user-lists

Create a new user list for targeting

🖼️

Upload and Attach Media

Upload photos and videos to the OnlyFans CDN, then attach them to mass messages as free or PPV content.

WEBHOOKchat_queue.updated

Fires as the message batch sends — track progress

POST/api/{account}/media/upload

Upload a file or URL to the OnlyFans CDN

📊

Monitor Campaign Performance

Track which messages drive the most revenue. See buyer lists, unlock rates, and top-performing content.

WEBHOOKmessages.ppv.unlocked

Fires per unlock — aggregate for campaign stats

GET/api/{account}/engagement/messages/top-message

Get the highest-revenue message across all campaigns

🔄

Schedule and Manage Queue

View queued messages, update pending campaigns, or cancel messages before they send. Full control over your send pipeline.

WEBHOOKchat_queue.updated

Fires on queue status changes — e.g. progress updates

PUT/api/{account}/mass-messaging/{id}

Update a queued mass message before it sends

Production-Ready Code Examples

Real API calls for sending mass messages, tracking PPV revenue, and pulling campaign analytics.

Upload media, create a user list, and send a mass PPV message to targeted fans — all in one workflow.

// Step 1: Upload media to OnlyFans CDN
const mediaResponse = await fetch(
  'https://app.onlyfansapi.com/api/acct_XXXX/media/upload',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk_your_api_key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      file_url: 'https://your-cdn.com/exclusive-content.mp4'
    })
  }
);
const media = await mediaResponse.json();

// Step 2: Send mass PPV message to a user list
const massMessageResponse = await fetch(
  'https://app.onlyfansapi.com/api/acct_XXXX/mass-messaging',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk_your_api_key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      text: 'Exclusive content just for you 🔥',
      price: 15.00,
      mediaFiles: [media.data.id],
      userLists: ['top_spenders_list_id']
    })
  }
);
const campaign = await massMessageResponse.json();
console.log('Campaign sent:', campaign.data.id);

Available Endpoints and Webhooks

Every endpoint and webhook event for mass messaging. Full documentation at docs.onlyfansapi.com.

APIEndpoints

POST
/api/{account}/mass-messaging

Send a mass message to user lists or user IDs

GET
/api/{account}/mass-messaging

List all queued mass messages

GET
/api/{account}/mass-messaging/overview

Get mass messaging overview stats

GET
/api/{account}/mass-messaging/{id}

Get a specific mass message

PUT
/api/{account}/mass-messaging/{id}

Update a pending mass message

DELETE
/api/{account}/mass-messaging/{id}

Unsend or delete a mass message

POST
/api/{account}/media/upload

Upload media to OnlyFans CDN

GET
/api/{account}/user-lists

List user lists for targeting

POST
/api/{account}/user-lists

Create a new user list

POST
/api/{account}/user-lists/{id}/users

Add users to a list

GET
/api/{account}/engagement/messages/mass-messages

Mass message engagement stats

GET
/api/{account}/engagement/messages/top-message

Highest-revenue message

GET
/api/{account}/engagement/messages/{id}/buyers

List buyers for a message

WHWebhook Events

EVENT
chat_queue.finished

Mass message batch has completed sending to all recipients

EVENT
chat_queue.updated

Mass message batch status changes — track send progress

EVENT
messages.ppv.unlocked

Fan purchases a paid message — includes amount and fan spending data

EVENT
messages.sent

Outgoing message sent to a fan — confirms delivery

EVENT
transactions.new

Payment received — track PPV revenue alongside subscriptions and tips

OnlyFans Mass Messaging API — Frequently Asked Questions

Common questions about sending mass messages and PPV campaigns via API.

Every Day Without Automated Messaging Is Revenue Left on the Table.

Start free. Send your first mass message campaign in minutes.