---
title: "List the experiences your app has published for this creator"
method: GET
path: "/experiences"
---

# List the experiences your app has published for this creator

`GET /experiences`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/experiences`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `read:experience`

Lists every experience your app holds for the creator whose token is calling — published or not, hidden or not — so you can recover a uuid you never stored or reconcile your own copy.

    Scoped to your app and this creator: no other app's experiences, and no other creator's, are ever listed. `appUuid` must be your own app.

## Query parameters

- `appUuid` string, uuid, required: Your app's UUID.

## Headers

- `X-Fanvue-API-Version` string, required

## Response `200`

The experiences, most recently created first

- object
  - `data` AppExperience[], required
    - `uuid` string, uuid, required
    - `appUuid` string, uuid, required
    - `creatorUuid` string, uuid, required
    - `externalExperienceId` string, required: Your own stable id for the experience, as you published it.
    - `title` string, required
    - `description` string, required
    - `imageUrl` string, nullable, required: Public URL of the cover Fanvue stored, or `null` when none was kept (none sent, or the one sent could not be fetched).
    - `accessMode` 'FREE' | 'SUBSCRIPTION' | 'PAID' | 'HIDDEN', required
    - `experienceType` 'LIVE_STREAM' | 'LIVE_AUDIO' | 'VIDEO' | 'AUDIO' | 'GAME' | 'CHALLENGE' | 'QUIZ' | 'EVENT' | 'OTHER', required: What kind of experience this is; `OTHER` when nothing declared one.
    - `deliveryMode` 'EMBEDDED' | 'EXTERNAL', required
    - `externalUrl` string, nullable, required: Where an `EXTERNAL` experience opens; `null` for `EMBEDDED`.
    - `hidden` boolean, required: Share-link only, never listed on the creator's profile. Always `true` for `HIDDEN`.
    - `priceCents` integer, nullable, required: Price in USD cents behind a `PAID` experience; `null` for every other mode.
    - `priceRecurring` boolean, required: Whether that price bills monthly as an app subscription rather than once.
    - `publishedAt` string, nullable, required: When it was published (ISO 8601); `null` while unpublished.
    - `suspendedAt` string, date-time, nullable, required: When Fanvue removed it for a policy reason (ISO 8601); `null` for a live or merely unpublished experience. A suspended experience is not listed, cannot be launched and refuses a publish or update with `experience_suspended` until Fanvue reinstates it; keep your record of it rather than deleting it.
    - `reviewStatus` 'pending_review' | 'approved' | 'rejected', required: Where the experience stands in Fanvue's review. Publishing submits it for review (`pending_review`); fans see it once `approved`, while it is also published and not suspended. Editing the title, description, cover, delivery mode or external link of an approved experience keeps the approved version live for fans and submits the edit for review, shown by `pendingReviewSubmittedAt`; price, access and visibility changes are not reviewed. A `rejected` experience is offline and goes back into review when you publish it again. Its creator, and Fanvue staff testing it, can open it in every state.
    - `reviewRejection` ExperienceReviewRejection, nullable, required: Why Fanvue rejected the experience; `null` unless `reviewStatus` is `rejected`.
      - `reasonCodes` string[], required: The listing requirement sections Fanvue cited, such as `7.3`; see the App Store listing requirements.
      - `message` string, required: Fanvue's explanation, written for the creator.
    - `pendingReviewSubmittedAt` string, date-time, nullable, required: When an edit to an approved experience was submitted for review (ISO 8601); `null` when no edit is waiting. Fans keep seeing the approved version until Fanvue decides; the fields returned here are the edited ones.
    - `isNsfw` boolean, required: Whether the experience is NSFW, because its creator's profile is not marked safe for work or the app is rated NSFW. Fans must pass age verification to open an NSFW experience, and a fan in safe mode is warned first.
    - `url` string, required: The share link fans land on: `/{handle}/experiences/{slug}` for a listed experience, keyed by the uuid instead when `hidden` so the link stays unguessable. Chat cards and link previews recognise it.

## Other responses

- `400`: Bad Request - API version not supported OR validation failed
- `401`: Unauthorized Response
- `403`: The token lacks `read:experience` (`error` alone, `Insufficient scopes`), or the app named in `appUuid` is not the calling app (`message` alone, `Forbidden`).
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded
- `502`: The write could not be completed against the upstream
- `503`: Developer API upstream is not configured

## Changes

- **2026-10-21** `966260af2770`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/experiences/get.md)

---

[API](https://skmtc.dev/fanvue/apis/fanvue-api.md) - [All operations](https://skmtc.dev/fanvue/apis/fanvue-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fanvue/apis/fanvue-api/revisions/966260af2770?raw)
