---
title: "Get media for an entitled consumer"
method: GET
path: "/media/{uuid}/entitled"
---

# Get media for an entitled consumer

`GET /media/{uuid}/entitled`

Returns a media item with signed variant URLs, but only if the specified consumer
    has been granted access via a prior grant call.

    Finalised responses include a `tags` field with structured AI content
    tags when the owning creator has AI content tagging enabled and the media
    has been processed (`null` otherwise).

    <Warning>Media URLs are only available through variants.
    Specify the `variants` query parameter (e.g., `?variants=main,thumbnail`)
    to include them in the response.</Warning>

## Path parameters

- `uuid` string, uuid, required

## Query parameters

- `consumerId` string, uuid, required — UUID of the consumer whose entitlement to verify
- `variants` MediaVariantType[] — Comma-separated list of media variant types

## Headers

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

## Response `200`

Media item with signed variant URLs

- union
  - object
    - `uuid` string, uuid, required
    - `status` 'created' | 'processing' | 'ready' | 'error', required
  - 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, uuid, required
      - `variantType` 'blurred' | 'main' | 'thumbnail' | 'thumbnail_gallery', required
      - `displayPosition` number, required
      - `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

---

[API](https://skmtc.net/fanvue/apis/fanvue-api.md) · [All operations](https://skmtc.net/fanvue/apis/fanvue-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fanvue/fanvue-api/revisions/c5ddcd5c7e72/schema)
