Skip to main content
A scope names one area of a Fanvue account your app may read or write. You pick scopes on your app, the user grants them at consent, and the API checks them on every request. Use the tables below to decide what to request: what each scope unlocks, which accounts can grant it, and which webhook events it gates. The read:experience and write:experience scopes are for fan experiences.

Scope table

Scopes by account type

Every Fanvue account can act as a fan, and the creator, agency and agency admin roles add to that. “Agency” in the scope table means any agency team member, whose creator-context scopes work against the creators assigned to them. “Agency admin” is the stricter tier that also unlocks the agency-management scopes. Consent drops the scopes the consenting account cannot use and grants the rest. For example, a fan account that authorises an app requesting every scope receives only read:self and the chat, media and experience scopes. The token’s scope field shows what was granted, so read it rather than assuming the request succeeded in full. When none of the requested API scopes is usable by the account, consent is rejected with access_denied and the description Application is not compatible with your account type. A request for the identity scopes alone passes.

System scopes

openid, offline_access and offline are system scopes. They are always allowed, are not listed on the Authentication tab and are added to every grant. On an off-platform or API-only app, request them in your authorisation URL, because offline_access is what returns a refresh token. An on-platform app doesn’t request them: on the embedded authorise-on-behalf path the platform adds openid and offline_access itself.

Scopes and webhook events

Creating or listing a webhook subscription needs read:self. Each event you subscribe to also needs its own scope on the token, or the subscription request fails. The event catalogue lists every event with its payload.

Setting scopes

Select your scopes on your app’s Authentication tab in the Developer Area. They apply when you save. To keep them in your repository instead, set the oauth.scopes key in your App Manifest. They apply on the next manifest check, and while the key is present the Authentication tab marks your own selection as not in use and shows the manifest value.
app-manifest.json
Request only the scopes your app uses, because users see every one you ask for on the consent screen. The scopes your code requests at authorisation must be among your app’s configured scopes, or the request fails with invalid_scope. Adding a scope makes every existing user authorise your app again. On a listed app, a scope addition is held until the submission that requested it is approved; the Authentication tab shows it as Pending review until then. See When changes take effect before you add one.

Insufficient scope errors

A request whose access token lacks a required scope returns 403 with this body:
Retrying the request unchanged returns the same 403. Add the scope on the Authentication tab or in oauth.scopes, request it in your authorisation URL, then have the user reconnect. Error responses lists the API’s other error bodies.