REST API · for developers & agencies

Run all your creators
from one place.

Automate chats, mass DMs and scheduling across every creator account — without babysitting logins or risking bans. One dashboard, one bill, all your models.

Encrypted sessions·Dedicated proxy per account on paid plans·5 creators on Pro
agency dashboard all accounts: active
5
creators connected
12,500
messages automated / mo
revenue · last 7 days+18%
ASAva Sinclairactive
MDMia Delacroixactive
SmSecond modelconnecting
replaces:manual copy-paste·juggling logins·spreadsheet tracking·session babysitting
For agencies

Everything your agency needs, automated

Run campaigns and conversations across every model — from one place, without the manual grind.

Mass DM & broadcasts

POST /accounts/{id}/mailings/{id}/preview returns the exact recipient count and credit cost; /trigger sends. Dispatch is paced at one message per 500 ms.

Chat automation

A message.received webhook fires on every inbound DM, so your bot reacts instead of polling. Replies go out over POST /chats/{chatId}/messages.

Account safety

Encrypted sessions and tiered egress: a shared pool on Free, a dedicated proxy per linked account on Starter and Pro.

One dashboard, many creators

Pro links 5 accounts. Every route has an /accounts/{accountId}/… twin, so one code path serves the whole roster.

Why ofapis

Built so your accounts stay safe and your team stops doing manual work

A blast is one request

A 5,000-fan mailing is a single POST, not 5,000. Preview the cost first; recipients the run skips are refunded when it completes.

Metered, with the arithmetic shown

Most calls weigh 1 credit. Media upload is 5, a scheduled post or message 3, an account-scoped send 2. Every debit and refund lands in the ledger against its request id.

Signed, retried webhooks

X-Ofapis-Signature carries t=<unix>,v1=<HMAC-SHA256>. Dedupe on X-Ofapis-Delivery; failures retry at 1m, 5m, 30m, 2h and 6h.

Sessions kept alive

Link a creator once — no refresh cron on your side. If a session does lapse you get 424 OF_SESSION_EXPIRED and the credit back, not a silent wrong answer.

Every creator in one namespace

/accounts/{accountId}/chats, …/mailings, …/scheduled/posts, …/lists — the same shapes, scoped per model.

Build anything custom

OpenAPI 3.0 across 47 public routes, plus a live playground — point a generator at it for a typed client in any stack.

Before you sign up

The awkward questions

There is no official OnlyFans API, so every answer below starts from that. Here is the honest version of each, with the full argument a click away.

Is there an official OnlyFans API?

No. OnlyFans publishes no public API, no developer portal and no partner programme. Every product in this category, ofapis included, is an unofficial integration over the same private endpoints the web app calls.

Why there isn't one

Is it legal to use?

Automating an account you own, with credentials you hold, is not a criminal matter in any jurisdiction we're aware of. The live question is contractual: OnlyFans' terms don't grant third-party API access, so this sits between you and the platform. Use it on your own or your clients' accounts, and keep consent for anything you send.

The terms, read properly

Will my account get banned?

Nobody can promise zero risk, and a vendor who does is selling you something. What we control: encrypted sessions, a dedicated proxy per linked account on paid plans, and a 500 ms gap between mailing messages so a blast doesn't land as a burst. What you control is volume and pacing — the Free plan's shared proxy pool is for evaluation, not production.

What actually gets accounts flagged

What happens when OnlyFans changes something?

Upstream breakage is the real cost of an unofficial integration — it happens, and it is our repair rather than your rewrite. You code against our contract: /api/public/v1, one Bearer token, a {"data":…} envelope and a fixed error-code set. Calls that die on an upstream fault come back 424 or 5xx and are refunded automatically.

Why this beats running your own scraper
AI-native

Run it from your AI assistant

ofapis is OpenAPI-native, so it plugs straight into MCP bridges and GPT Actions. Point Claude, ChatGPT or Manus at it and let an agent read chats, segment fans and send DMs — with your token, your rules.

Guides

Learn by doing

Quickstarts, capabilities and integration recipes for the OnlyFans REST API.

Browse all guides
For developers

Building something custom? Here's the technical layer.

Open the API reference

One authenticated HTTP call

Chats, mailings, scheduling and fan segments — a plain REST API, billed by the call. No headless browsers, no cookie juggling. Success is {"data": …}, failure is {"error": {"code", "message"}}, and every response carries X-RateLimit-Remaining and your X-Request-Id back.

api.ofapis.com/api/public/v1·Bearer, no signing·Idempotency-Key on any POST
request
# your first call
curl https://api.ofapis.com/api/public/v1/me \
  -H "Authorization: Bearer ofapis_sk_…"▐
response200 OK · −1 credit
{
  "data": {
    "id": 100000001,
    "username": "demo_creator",
    "name": "Demo Creator",
    "subscribersCount": 12500,
    "isAuth": true
  }
}
The surface

One namespace, the whole creator workflow

All 47 routes live under /api/public/v1 and authenticate with a single Bearer token. Lists paginate on limit + offset (default 20, clamped 1–100); message history walks backwards on olderThanMessageId. Here's the shape of it.

core
  • GET/me
  • GET/chats
  • GET/chats/{id}/messages
  • POST/chats/{id}/messages
  • GET/users/by-username/{u}
accounts/{id} · scoped
  • GET/mailings
  • POST/mailings/{id}/trigger
  • GET/scheduled/posts
  • POST/scheduled/posts
  • GET/lists/{id}/users
Full reference in the OpenAPI spec
From zero to first call

Three steps, a few minutes

01

Create a token

Generate a scoped ofapis_sk_ key in the dashboard. The per-minute limit is counted per token, so you can isolate a risky job behind its own key.

ofapis_sk_live_8f3a…
02

Link an account

Connect a creator session once. ofapis keeps it alive — no refresh cron on your side.

status: active
03

Call the API

Send Bearer-authed requests. Most routes meter 1 credit; media upload 5. A 401, 402, 403 or 429 is refused before anything is debited.

GET /v1/chats → 200 · −1
Pricing

Pay for calls, not seats

Every plan includes all 47 routes. Credits refill monthly and don't roll over; the per-minute limit is a burst cap, not a second budget.

Free
$0/mo
  • 250 credits/mo
  • 1 linked account
  • 60 rpm
Start free
Starter
$39/mo
  • 30,000 credits/mo
  • 1 linked account
  • 100 rpm
Get Starter
most popular
Pro
$159/mo
  • 120,000 credits/mo
  • 5 linked accounts
  • 500 rpm
Get Pro
Enterprise
Custom
  • Volume credits
  • Negotiated accounts
  • Custom limits & SLA
Contact us
FAQ

Questions, answered

Will my accounts get banned?

We're built to minimize the risk: encrypted sessions, a dedicated proxy per linked account on paid plans, and mailing dispatch paced at one message per 500 ms so a blast doesn't arrive as a burst. The Free plan uses a shared proxy pool, so upgrade before running real volume. No service can guarantee against bans — this is an unofficial integration and the residual risk is yours.

How many creators can I manage?

One linked account on Free and Starter, five on Pro, and a negotiated roster on an Enterprise quote. Each one is addressable under /accounts/{accountId}/…, so adding a model doesn't change your code.

Do I need a developer to use this?

For ready-made automations via n8n, Make or Zapier — no. For custom workflows against the API — a developer helps. Both use the same account.

Is this affiliated with OnlyFans?

No. ofapis is an independent product, not affiliated with, endorsed by or sponsored by OnlyFans / Fenix International Limited. There is no official OnlyFans API to be a partner of.

What counts as a credit?

Credits are weighted, not flat. Most calls cost 1; a media upload costs 5, a scheduled post or message 3, an account-scoped chat send 2. A mailing trigger costs 0 at the call and the run then debits one credit per recipient, so a 5,000-fan blast is 5,000 credits — preview it first for the exact figure.

How do I authenticate?

A Bearer token: Authorization: Bearer ofapis_sk_…. No request signing, no OAuth dance. Create and revoke keys in the dashboard; the rate limit is counted per token, so a runaway job can't starve the rest of your integration.

Do you have an OpenAPI spec?

A complete OpenAPI 3.0 document covering all 47 public routes, plus a live playground — point your generator at it for a typed client.

Start automating today

Free plan, 250 credits, no card. Connect your first creator and run campaigns in minutes.

Get started