---
title: "Get creator's media by UUID"
method: GET
path: "/creators/{creatorUserUuid}/media/{uuid}"
---

# Get creator's media by UUID

`GET /creators/{creatorUserUuid}/media/{uuid}`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/creators/{creatorUserUuid}/media/{uuid}`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `read:creator`, `read:media`

Returns a specific media item by its UUID for the specified creator.

    For media with status other than FINALISED, only uuid and status are returned,
    plus an `errorReason` when the status is `error`.
    For FINALISED media, all details including variants are included.

    <Warning>Media URLs are only available through variants.
    Specify the `variants` query parameter (e.g., `?variants=main,thumbnail,blurred`)
    to include them in the response. Without this parameter, the `variants` field
    will be an empty array and no media URLs will be returned.</Warning>

## Path parameters

- `creatorUserUuid` string, uuid, required
- `uuid` string, uuid, required

## Query parameters

- `purchasedBy` string, uuid: UUID of the user to check media purchase against. When provided, the media item will include a purchasedByFan boolean indicating if that user has purchased it.
- `variants` MediaVariantType[]: Comma-separated list of media variant types

## Headers

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

## Response `200`

Media item

- union
  - object
    - `uuid` string, uuid, required
    - `status` 'created' | 'processing' | 'ready' | 'error', required
    - `errorReason` 'unsupported_format' | 'video_too_long' | 'document_too_large' | 'pdf_invalid' | 'pdf_password_protected' | 'pdf_page_limit_exceeded' | 'processing_failed': Why processing failed. Present only when `status` is `error`. `unsupported_format` means the uploaded bytes are not a readable file of the declared type: check that each part is PUT as the raw file bytes, not form-data, base64 or a redirect page. `processing_failed` covers every other failure.
  - object
    - `uuid` string, uuid, required
    - `status` 'created' | 'processing' | 'ready' | 'error', required
    - `createdAt` string, date, nullable, required
    - `url` string
    - `caption` string, nullable, required
    - `description` string, nullable, required
    - `name` string, nullable, required
    - `mediaType` 'image' | 'video' | 'audio' | 'document', required
    - `recommendedPrice` number, nullable, required
    - `variants` object[]
      - `uuid` string, required: Variant id. `legacy-<type>` for media not yet backfilled into media_variants.
      - `variantType` 'blurred' | 'main' | 'thumbnail' | 'thumbnail_gallery', required
      - `displayPosition` integer, required: Ordering hint within the item's variants. 0 when the platform did not assign a position (most main, blurred and image thumbnail variants); video and document thumbnails are 1-based.
      - `url` string
      - `width` number, nullable, required
      - `height` number, nullable, required
      - `lengthMs` number, nullable, required
    - `purchasedByFan` boolean
    - `tags` object, nullable: Structured AI content tags. Only populated when the owning creator has AI content tagging enabled and the media has been processed; null otherwise.
      - `description` string, nullable, required: AI-generated natural language description
      - `tags` string[], required: General content tags
      - `nsfwCategory` string[], required: NSFW classification labels
      - `sexActs` string[], required
      - `bodyParts` string[], required
      - `people` string[], required
      - `sexObjects` string[], required
      - `setting` string[], required: Scene / environment tags
      - `position` string[], required
      - `skinColor` string[], required
      - `bodyType` string[], required
      - `hairColor` string[], required
      - `otherTags` string[], required
      - `importantTags` string[], required: Tags the model marked as salient
      - `isNsfw` boolean, required
      - `mediaType` 'image' | 'video', required

## Other responses

- `400`: Bad Request - API version not supported OR validation failed
- `401`: Unauthorized Response
- `403`: Unauthorized Response
- `404`: Not Found Response
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded

## Changes

- **2026-10-10** `79b9aba8a759`: 1 info
  - added the optional property `anyOf[subschema #1]/errorReason` to the response with the `200` status
- **2026-09-10** `4d08f36ad6c8`: 1 breaking
  - the `anyOf[subschema #2]/variants/items/uuid` response's property format changed from `uuid` to no format for status `200`

[Operation history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/creators/:creatorUserUuid/media/:uuid/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)
