ofapisv1
solution

OnlyFans PPV Automation

OnlyFans PPV automation is a priced message that goes out on a schedule or a trigger, plus a feedback loop that tells you who bought. ofapis gives you three primitives — vault media for the asset, priced sends (single or mass), and notifications for purchase tracking — so you can run a repeatable paid-content engine instead of sending unlocks by hand.

Two send shapes

Shape Endpoint Use
Broadcast PPV POST /accounts/{id}/mailings (with priceCents) one drop to a whole segment
1:1 PPV POST /accounts/{id}/chats/{chatId}/messages (with price) targeted or bot-driven unlock
Scheduled PPV POST /accounts/{id}/scheduled/messages future-dated send

All under https://api.ofapis.com/api/public/v1.

1. Stage the media

Upload the paid asset once via the vault media API and keep its media id — you reference that id on every send instead of re-uploading.

2. Send it — scheduled or triggered

For a segment drop, create a mailing with a price and preview the reach before firing:

curl -X POST https://api.ofapis.com/api/public/v1/accounts/42/mailings \
  -H "Authorization: Bearer ofapis_sk_..." -H "Content-Type: application/json" \
  -d '{"name":"vid-unlock","text":"New 8-min video 🔥 unlock below","priceCents":1499,"listId":"9","mediaIds":[5521]}'

To fire on a future date instead of now, queue it:

curl -X POST https://api.ofapis.com/api/public/v1/accounts/42/scheduled/messages \
  -H "Authorization: Bearer ofapis_sk_..." -H "Content-Type: application/json" \
  -d '{"text":"Friday drop 🔥","price":1499,"userLists":["9"],"scheduledAt":"2026-08-14T18:00:00Z"}'

Send scheduledAt as UTC (Z); naive timestamps are rejected. Cancel a queued item with DELETE /accounts/{id}/scheduled/messages/{queueId} — there is no in-place edit, so cancel and re-create to reschedule.

3. Track purchases

Poll notifications filtered to purchase/tip events to attribute revenue back to a drop:

curl "https://api.ofapis.com/api/public/v1/notifications?type=tip&limit=50" \
  -H "Authorization: Bearer ofapis_sk_..."

Run GET /notifications/count on a timer and only pull the feed when it moves. For a mailing, GET /accounts/{id}/mailings/{mid}/runs/{runId} confirms delivery; pair it with purchase events to compute unlock rate. See the PPV API for the priced-send details.

Build outline

  1. Asset library — upload to vault, store media ids.
  2. Campaign object — text, price, target segment, optional scheduledAt.
  3. Preview gate — for mailings, preview the reach and credit cost before send.
  4. Dispatch — trigger now or queue via scheduled/messages.
  5. Attribution — poll notifications, join purchase events to the campaign, report unlock rate and revenue on an analytics dashboard.

Gotchas

FAQ

Can I schedule a PPV for later?

Yes. POST /accounts/{id}/scheduled/messages with a price and a UTC scheduledAt queues it; delete the queued item to cancel. Use a mailing with price when you want to send to a whole segment immediately.

How do I know who bought a PPV?

Poll GET /notifications?type=tip (and purchase events) and attribute them to the campaign by time and fan id. Run /notifications/count on a timer and only fetch the feed when the number changes to save credits.

How is PPV automation billed?

By successful API call — one credit per recipient on a mailing, one per single send. The fan's unlock payment is separate and settles through OnlyFans; ofapis meters the send, not the sale. See pricing.

Where do I set the media for a PPV?

Upload it once through the vault media API and reference its media id on the send, so the same asset can back scheduled and triggered drops without re-uploading.

Start free · Scheduling API · PPV API

Related: OnlyFans automation guide

Related guides

All guides
Start free — 250 credits, no card
Generate a token and make your first call in minutes.
Get started