---
title: "Get media from a creator's chat"
method: GET
path: "/creators/{creatorUserUuid}/chats/{userUuid}/media"
---

# Get media from a creator's chat

`GET /creators/{creatorUserUuid}/chats/{userUuid}/media`

Returns a cursor-paginated list of media items shared between the specified creator and user. Media is extracted from chat messages and ordered by date (newest first).

**Pagination Flow:**
- First request: Omit the `cursor` parameter, returns first 20 media items (or specified limit)
- Subsequent requests: Use the `nextCursor` from the previous response
- End of results: `nextCursor` will be `null`

```json
{
  "data": [...media items...],
  "nextCursor": "..." // Pass this to the next request to get the following page
}
```

## Path parameters

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

## Query parameters

- `cursor` string — Cursor for fetching the next page of media
- `mediaType` 'image' | 'video' | 'audio' | 'document' — Filter by media type (image, video, audio, document)
- `limit` number — Number of media items to return (1-50, default: 20)

## Headers

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

## Response `200`

Cursor-paginated list of media items

- object
  - `data` object[], required
    - `uuid` string, uuid, required
    - `messageUuid` string, uuid, required
    - `mediaType` 'image' | 'video' | 'audio' | 'document' | 'unknown', required
    - `created_at` string, date, nullable, required
    - `sentAt` string, date, nullable, required
    - `ownerUuid` string, uuid, required
    - `name` string, nullable, required
    - `variants` object[]
      - `variantType` 'main' | 'thumbnail' | 'thumbnail_gallery' | 'blurred', required
      - `displayPosition` number, required
      - `url` string
      - `width` number, nullable, required
      - `height` number, nullable, required
      - `lengthMs` number, nullable, required
    - `purchasedAt` string, date, nullable — Timestamp when the fan purchased the media's source message, or null if not purchased.
    - `pricing` object, nullable — Listed price of the media's source pay-to-view message, or null if free. This does not reflect discounts — see `amountPaid` for what the fan actually paid.
      - `USD` object, required
        - `price` number, required — Price in cents
    - `amountPaid` object, nullable — Amount the fan actually paid to unlock the media's source message, after any discount. Null when not purchased (see `purchasedAt`) or free.
      - `USD` object, required
        - `price` number, required — Price in cents
  - `nextCursor` string, nullable, required — Cursor for fetching the next page, null if no more results

## Other responses

- `400` — Bad Request - API version not supported OR validation failed OR invalid UUID
- `401` — Unauthorized Response
- `403` — Unauthorized Response
- `404` — No conversation found with the given user
- `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)
