https://<app domain>/app-manifest.json. Any key it contains replaces the matching setting in the Developer Area, so your app type, URLs, scopes, redirect URIs and webhook destinations can live in version control and ship with your code. Every key is defined in the App Manifest reference.
You need an off-platform or on-platform app and a domain you control that serves https. An API-only app needs neither an app domain nor a manifest; set its scopes and redirect URIs on the Authentication tab.
What goes where
Every setting the manifest can carry also has a home in the Developer Area, except the post-install URL. Listing copy, images, credentials and pricing have no manifest key, so they stay in the Developer Area whatever your manifest says.
In the Developer Area, a field the manifest sets carries the pill From manifest and a hint to edit it in the manifest instead. A list the manifest sets to
[] shows as empty, with a note that the manifest set it that way. Two more pills mark values in transit: Pending review on a scope addition waiting for review, and Not applied yet on a value the last check couldn’t apply. Settings or manifest explains which source wins.
Minimal manifest
Pick the tab for your app type and replaceyour-app.com with your domain.
- On-platform
- Off-platform
app-manifest.json
access.url is the page Fanvue loads on the creator’s App Home page when they open your app.oauth block. Each key you include replaces the Authentication tab’s value.
Existing apps
An existing app keeps working when you add a manifest. Your live redirect URIs, scopes and webhook destinations stay as they are, and the Authentication and Events tabs keep showing them. Nothing is replaced until you check a manifest that has that key, and a manifest withoutoauth or webhooks leaves your settings in charge. That lets you move fields into the manifest one at a time.
To move fields into the manifest, start from your current configuration:
- On the Versions tab, click Download current config. You get an
app-manifest.jsonbuilt from the values in use on your app. - Serve the file unchanged at
https://<your app domain>/app-manifest.json. - Set your app domain on the App details tab. The first check reports Up to date.
- Edit the file from there, deploy and click Check now.
To bring a field under the manifest, change that setting to one the manifest allows and add the block.
If your app has no app URL yet, the download fails with an export error. Write a manifest from Minimal manifest instead.
Connect your app domain
Your app domain links the manifest to your app. Fanvue always reads the manifest from:your-app.com, in the App domain field on your app’s App details tab. The field shows the Manifest URL it will read. It saves when you leave the field or press Enter, and Fanvue checks your manifest straight away.
A free subdomain from a static host works, for example my-app.vercel.app, my-app.github.io or my-app.pages.dev. The domain must follow these rules:
- A domain only, with no
https://, path, port, query, username or password. Subdomains such asapp.your-app.comare allowed. - A public name, not an IP address. Enter internationalised domains in their
xn--form. - Not a reserved or internal name, as listed under Reserved domain names.
- One app per domain. A domain another app already uses is refused.
Reserved domain names
Reserved domain names
For example,
app.fanvue.com is refused and myfanvue.com is allowed.Serving requirements
Fanvue sends a
GET with Accept: application/json and User-Agent: Fanvue-App-Manifest/1, and no cookies or authentication. If your last response had an ETag, the next check sends it back in If-None-Match, and you can reply 304 Not Modified when the file hasn’t changed.
Behind a firewall or bot protection, allow requests with the Fanvue-App-Manifest/1 user agent to reach /app-manifest.json.
When Fanvue checks your manifest
Fanvue checks your manifest at two moments only:- when you save your app domain
- when you click Check now on the Versions tab
- a status
- the Manifest URL
- the Contract version, which is the
manifestVersionof the last manifest Fanvue read, shown asv1 - Manages, the sections your manifest sets
- any issues
oauth changes are already applied.
When changes take effect
Values you set on the Authentication and Events tabs take effect when you save, unless your manifest sets that field. A scope added on the Authentication tab after your app is published also waits for review, and the tab shows it as Pending review.
Once your app is live, a check that changes
access or surfaces sets the Versions tab to Out of sync, and the App details tab shows Live · manifest changed with a list of the changes. Your live app keeps its published configuration until you resubmit and the new version is approved; see Ship manifest changes to a live app.
Settings or manifest
Scopes, redirect URIs and webhook destinations have two possible sources: your app’s settings on the Authentication and Events tabs, and the manifest. If a key is present in your manifest, the manifest sets that field.
Your settings stay editable and saved while the manifest sets a field. The tab marks the field From manifest and shows the manifest’s value.
access and surfaces replace the matching App details fields on every successful check. When surfaces is present, your file is the whole list, and fan_chat or fan_post surfaces missing from it are removed when your next version is approved. creator_landing and fan_experience always follow access and are never removed this way.
To submit for review, your app needs at least one redirect URI in use, from the Authentication tab or the manifest.
The Events tab stays editable. When your manifest has webhooks.destinations, the tab marks the list From manifest, and edits you make there stay saved but aren’t in use while the manifest sets the list.
Staging and production
A manifest has no environments block, so use a separate app for each environment, each with its own domain, for examplestaging.your-app.com and your-app.com. One domain can belong to one app only.
Versioning
The currentmanifestVersion is 1. Fanvue rejects keys it doesn’t recognise, so check the reference before you add one.
First publish with a manifest
A first-publish gate applies only when an app domain is stored. An app that has never been published can submit only while its manifest status is Up to date or Out of sync. Otherwise Submit for review is blocked until you fix the manifest errors on the Versions tab, or remove the app domain on App details. An app with no domain publishes from its settings alone, and an app that has already been approved is never blocked by this gate.Removing the domain
Clearing the App domain field and confirming Remove domain stops every check, and changes the following:- Scopes, redirect URIs and webhook destinations the manifest set switch back to the values in your app’s settings.
- Embed URLs and the post-install URL the manifest set on your store draft go back to your live app’s values, or are removed where your live app has none. On an app that has never been published they are removed.
- A fan experience URL stays until you remove it in Embed settings.
- A draft that is with a reviewer isn’t changed. Update its values in app settings after the review.
Removing a fan experience
A check refuses any manifest that drops the fan surface, because removing the surface takes paid access away from fans and a check can’t confirm that impact unattended. Manifest statuses and errors lists the exact message. Remove the surface in Embed settings, or switch the app type to API-only on App details. Both ask you to confirm the impact on fans who hold paid access before saving. Changing the fan experience URL to a different URL isn’t guarded. See Taking paid access away.See also
- Choose your app type: API-only, off-platform or on-platform.
- Subscribe to webhooks: the Events tab and the
webhooksblock. - Scopes: what each value in
oauth.scopesgrants.