Skip to main content
PATCH
Update one of your experiences for this creator
Required scope
  • write:experience — Request that the creator publish or unpublish a fan-facing experience. The app mints a request token; the creator confirms and Fanvue performs the change.

Authorizations

Authorization
string
header
required

OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.

Headers

X-Fanvue-API-Version
string
default:2025-06-26
required

API version to use for the request

Example:

"2025-06-26"

Path Parameters

experienceUuid
string<uuid>
required
Example:

"00000000-0000-4000-8000-000000000010"

Body

application/json
appUuid
string<uuid>
required

Your app's UUID.

title
string
Required string length: 1 - 100
description
string
Maximum string length: 500
imageUrl
string<uri> | null

Replaces the cover. null clears it; omit to leave it alone. One that cannot be fetched leaves the current cover in place.

Maximum string length: 2048
Example:

"https://example.com/covers/photography-101.jpg"

accessMode
enum<string>

Moving an experience that is not PAID to PAID requires priceCents; an experience that is PAID already keeps its price unless re-priced.

Available options:
FREE,
SUBSCRIPTION,
PAID,
HIDDEN
deliveryMode
enum<string>
Available options:
EMBEDDED,
EXTERNAL
externalUrl
string<uri> | null

Where an EXTERNAL experience opens. Must be https (checked here). The platform additionally refuses Fanvue, localhost, IP and dev-tunnel hosts; such a URL answers 400 with a message naming the field.

Maximum string length: 2048
Example:

"https://example.com/experiences/photography-101"

hidden
boolean

Keep the experience off the creator's profile. Ignored when accessMode is HIDDEN, which always hides.

priceCents
integer

Re-prices a PAID experience (send accessMode: "PAID" alongside). Fans who already paid keep what they bought.

Required range: 300 <= x <= 50000
Example:

1500

priceRecurring
boolean

With priceCents: bill monthly as an app subscription instead of a one-off unlock. Omitted, the experience keeps the cadence of its current price.

experienceType
enum<string>

What kind of experience this is. Decides how it presents itself where it is embedded (for example the category tag on a chat card). Omit for the generic OTHER.

Available options:
LIVE_STREAM,
LIVE_AUDIO,
VIDEO,
AUDIO,
GAME,
CHALLENGE,
QUIZ,
EVENT,
OTHER
Example:

"GAME"

actions
object[]

Re-prices the actions listed and withdraws every other active one. Only actions that already exist on the experience may appear; declaring a new one is a publish.

Maximum array length: 10
acknowledgePaidImpact
boolean

Set to true on a retry to accept the paid impact a previous attempt answered 409 with. Send the 409's impact alongside as acknowledgedImpact.

Example:

true

acknowledgedImpact
object

The impact the previous 409 reported, echoed back verbatim.

Response

The experience as it now stands

experience
object
required