Going live
Link a real creator with a hosted link, understand grants, and switch your code to a live key.
Going live takes three things: a linked creator account, a live key, and, if you write, writes turned on for that account.
Link a creator
A creator connects their OnlyFans account through a hosted link: a page on BetterFans Link where they sign in themselves. You never see or handle their password.
-
Create a link. In the dashboard, open Linking and create a link, or call Create link with a live key:
curl -X POST https://app.betterfans.link/v1/links \ -H "Authorization: Bearer $BFL_KEY" \ -H "Content-Type: application/json" \ -d '{"note": "Jess Rivers"}' -
Send the
urlfrom the response to the creator. It works for 24 hours. -
The creator opens it, types their OnlyFans email and password, and answers anything OnlyFans asks for: a captcha, a two-factor code or a selfie check.
-
When they finish, the link status becomes
connected,accountIdis set and your workspace gets anaccount.connectedwebhook.
Follow progress with Get link or the Linking page. The link a creator guide covers each status and what to tell the creator.
Owners, admins and developers can create links. See roles.
Grants
Linking gives your workspace a grant: permission to read that account and to ask for writes on it. A few rules follow from that.
- Two workspaces can hold grants on the same account, for example an agency and the creator's own workspace. Each sees the account and neither sees the other.
- Removing an account from your workspace revokes your grant. It never deletes the synced history, and the creator can link it again with a new hosted link.
- An account your workspace has no grant for does not exist as far as your keys are concerned. Every route returns
404account_not_found, never403. - In test mode there are no grants to manage. The sandbox creators are visible to every workspace.
The first sync
A newly linked account shows syncing for up to 30 minutes while its history fills in. Reads work during that time, but totals can be low until the sync finishes. When status becomes healthy, the history is in place. See account status.
Switch to a live key
Turn off Test mode in the dashboard header, open Developers, then API keys, and create a key. Live keys start with bfl_live_.
- Give it only the scopes it needs. A reporting script needs
read. Only code that asks for writes needswrite. - Limit it to the accounts it needs, if it serves one creator. A key limited to some accounts gets
404for the others. - Set an expiry if the key is for a contractor or a short project.
Then replace your test key with the live key. Sandbox account ids do not exist in live mode, so read account ids from List accounts instead of hard coding them. See keys and scopes.
Turn on writes
Writes are off for every newly linked account. While they are off, creating an action for that account fails with 403 writes_disabled and nothing waits for approval. Reads keep working.
An owner or admin turns writes on per account: open the account in the dashboard, then Settings, and switch on API writes. Turning them on does not let anything through by itself. Each write still waits for an owner or admin to approve it.
Make sure someone who can approve will see pending actions. The Approvals page in the dashboard lists them, and the action.pending webhook can notify your team. See writes and approvals.
Checklist
- The creator's account shows
healthyon the Accounts page. - Your code reads account ids from
GET /v1/accounts. - Your code handles
account_unavailableby reading withoutfresh=trueor waiting, not by retrying in a loop. - The live key has only the scopes and accounts it needs, and it lives in a secret store, not in code.
- Live webhook endpoints are created in live mode and verify signatures.
- If you write, writes are on for the account and an owner or admin watches the Approvals page.