BetterFans Link: the OnlyFans APIBetterFans Link

Plans and limits

What a BetterFans Link plan limits, what counts as a live call, and what happens when a workspace reaches a limit.

Product page: OnlyFans and Fansly API coverage

Every workspace is on a plan. The plan sets how many accounts, teammates and webhook endpoints the workspace can have, how many live calls it makes each period and how fast its keys can send requests. This page explains each limit and what your code sees when it reaches one. The Billing page in the dashboard shows your plan, your usage against each limit and when the period resets.

The limits

LimitCountsWhat counts toward it
AccountsaccountsCreator accounts connected to the workspace, on any platform.
Live callslive calls a periodRequests that reached a platform: fresh reads, writes and Direct access. Synced reads and test mode do not count.
Raterequests a minuteEvery API and MCP request across the workspace's keys, live and test.
SeatsteammatesMembers and open invitations.
Webhook endpointsendpointsEndpoints in live and test mode together.

A limit with no number means the plan does not limit it. Lowering a plan never removes anything: a workspace over a limit keeps what it has and cannot add more until it is under again.

Live calls

A live call is an API or MCP request in live mode that reached OnlyFans or Fansly and did not fail on our side. Fresh reads (fresh=true), writes that run and Call OnlyFans and Call Fansly count. These never count:

  • Reads of synced data, without fresh=true.
  • Anything a test key does. Test mode is only rate limited.
  • Requests that fail before they reach the platform, such as a bad parameter or a missing scope.

Live calls are counted per billing period, and the Billing page shows when the current one resets. When a period's live calls are spent, the workspace keeps reading synced data and only live calls pause until the reset.

When a workspace reaches a limit

LimitWhat happensError
Live callsLive calls fail until the period resets. Synced reads keep working.402 quota_exceeded
RateThe request fails. Wait for Retry-After.429 rate_limited
Accounts, seats, webhook endpointsAdding one more fails. Nothing is removed.402 plan_limit_reached

Each of these errors carries error.limit: which limit refused (name), how much the plan allows (allowed), how much is used (used) and, for live calls and the rate, when it resets (resetsAt).

{
  "error": {
    "type": "billing",
    "code": "quota_exceeded",
    "message": "This workspace has used its live calls for this period.",
    "limit": { "name": "liveCalls", "allowed": 50000, "used": 50000, "resetsAt": "2026-11-01T00:00:00.000Z" },
    "docsUrl": "https://betterfans.link/docs/errors#quota-exceeded"
  },
  "requestId": "req_7Kq2mX9pLr4tVw8YbN3cHd"
}

Overage

On plans that offer it, an owner can allow overage on the Billing page: live calls keep working past the plan's, up to a spending cap the owner picks, and the extra live calls are charged per thousand. With overage off, live calls pause at the plan's limit.

Changing plan

Owners choose the plan on the Billing page. An upgrade takes effect at once and charges the prorated difference for the rest of the period. A downgrade also takes effect at once and credits the difference to the next renewal. If the new plan puts the workspace over a limit, the Billing page says which one before you confirm.

Cancelling keeps the plan until the end of the period, then moves the workspace to the Free plan. A workspace with a subscription that has not ended cannot be deleted: cancel it first (subscription_active).

If a payment fails, the plan keeps working through a short grace period while the payment is retried. Update the payment method on the Billing page to keep the plan.

Billing errors

CodeWhen
quota_exceededThe period's live calls are spent.
plan_limit_reachedThe plan allows no more accounts, seats or webhook endpoints.
workspace_suspendedLive calls are suspended for the workspace.
subscription_existsStarting a second subscription. Change the plan instead.
no_subscriptionChanging or cancelling when there is no subscription.
subscription_activeDeleting a workspace that still pays.
checkout_unavailablePlans cannot be bought in the dashboard right now.
plan_not_availableThe plan is not sold in the dashboard.
billing_provider_errorThe payment provider did not answer. Nothing was charged.

On this page