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
- Asset library — upload to vault, store media ids.
- Campaign object — text, price, target segment, optional
scheduledAt. - Preview gate — for mailings,
previewthe reach and credit cost before send. - Dispatch — trigger now or queue via
scheduled/messages. - Attribution — poll notifications, join purchase events to the campaign, report unlock rate and revenue on an analytics dashboard.
Gotchas
- Price is in cents.
1499is $14.99 — off-by-100 mistakes are the classic bug. - Don't re-blast buyers. Move fans who unlocked into a "bought" segment and exclude them from the next send.
- Budget the blast. A priced mailing still costs one credit per recipient regardless of who buys — check the preview against your plan. See pricing.
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