curl --request GET \
--url https://api.fanvue.com/v1/media \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/media"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"uuid": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"status": "ready",
"createdAt": "2024-01-15T00:00:00.000Z",
"caption": "Check out my latest video!",
"description": "Behind the scenes of my photoshoot",
"name": "photoshoot-video.mp4",
"mediaType": "video",
"recommendedPrice": 500,
"tags": {
"description": "Behind-the-scenes shot at sunset on a beach.",
"tags": [
"beach",
"sunset",
"outdoors"
],
"nsfwCategory": [],
"sexActs": [],
"bodyParts": [],
"people": [
"solo woman"
],
"sexObjects": [],
"setting": [
"beach",
"sunset"
],
"position": [],
"skinColor": [],
"bodyType": [],
"hairColor": [
"blonde"
],
"otherTags": [],
"importantTags": [
"beach"
],
"isNsfw": false,
"mediaType": "video"
},
"variants": [
{
"uuid": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"variantType": "main",
"displayPosition": 0,
"url": "https://media.fanvue.com/main/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.mp4",
"width": 1920,
"height": 1080,
"lengthMs": 45000
},
{
"uuid": "f6a7b8c9-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"variantType": "thumbnail",
"displayPosition": 1,
"url": "https://media.fanvue.com/thumb/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.jpg",
"width": 320,
"height": 180,
"lengthMs": null
},
{
"uuid": "a7b8c9d0-1e2f-3a4b-5c6d-7e8f9a0b1c2d",
"variantType": "blurred",
"displayPosition": 2,
"url": "https://media.fanvue.com/blur/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.mp4",
"width": 1920,
"height": 1080,
"lengthMs": 45000
}
]
},
{
"uuid": "b8c9d0e1-2f3a-4b5c-6d7e-8f9a0b1c2d3e",
"status": "processing"
}
],
"nextCursor": "k0FQ1m9yZXN0aWdpb3VzLW9wYXF1ZS1jdXJzb3I"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get user's media list (cursor-paginated)
Cursor-paginated list of the creator’s vault media, most recent first.
v1-experimental Breaking Change: Switched from offset-based pagination (page/size) to keyset cursor pagination and dropped pagination.total. Page with the opaque nextCursor; keyset pagination stays stable under concurrent uploads, unlike the offset-paginated v0 endpoint.
curl --request GET \
--url https://api.fanvue.com/v1/media \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/media"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"uuid": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"status": "ready",
"createdAt": "2024-01-15T00:00:00.000Z",
"caption": "Check out my latest video!",
"description": "Behind the scenes of my photoshoot",
"name": "photoshoot-video.mp4",
"mediaType": "video",
"recommendedPrice": 500,
"tags": {
"description": "Behind-the-scenes shot at sunset on a beach.",
"tags": [
"beach",
"sunset",
"outdoors"
],
"nsfwCategory": [],
"sexActs": [],
"bodyParts": [],
"people": [
"solo woman"
],
"sexObjects": [],
"setting": [
"beach",
"sunset"
],
"position": [],
"skinColor": [],
"bodyType": [],
"hairColor": [
"blonde"
],
"otherTags": [],
"importantTags": [
"beach"
],
"isNsfw": false,
"mediaType": "video"
},
"variants": [
{
"uuid": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"variantType": "main",
"displayPosition": 0,
"url": "https://media.fanvue.com/main/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.mp4",
"width": 1920,
"height": 1080,
"lengthMs": 45000
},
{
"uuid": "f6a7b8c9-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"variantType": "thumbnail",
"displayPosition": 1,
"url": "https://media.fanvue.com/thumb/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.jpg",
"width": 320,
"height": 180,
"lengthMs": null
},
{
"uuid": "a7b8c9d0-1e2f-3a4b-5c6d-7e8f9a0b1c2d",
"variantType": "blurred",
"displayPosition": 2,
"url": "https://media.fanvue.com/blur/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a.mp4",
"width": 1920,
"height": 1080,
"lengthMs": 45000
}
]
},
{
"uuid": "b8c9d0e1-2f3a-4b5c-6d7e-8f9a0b1c2d3e",
"status": "processing"
}
],
"nextCursor": "k0FQ1m9yZXN0aWdpb3VzLW9wYXF1ZS1jdXJzb3I"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}read:media— Access media files, images, videos, and other content assets.
Authorizations
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
API version to use for the request
"2025-06-26"
Query Parameters
Opaque pagination cursor from a previous response's nextCursor
Number of items to return (1-50, default: 15)
1 <= x <= 50image, video, audio, document subscribers, followers, ppv, mass_messages Case-insensitive substring match on the media name.
Filter to media created on or after this ISO 8601 datetime (with optional timezone offset, e.g. 2024-10-20T00:00:00Z).
Filter to media created before this ISO 8601 datetime (non-inclusive, with optional timezone offset).
UUID of the user to check media purchases against. When provided, each media item will include a purchasedByFan boolean indicating if that user has purchased it.
Comma-separated list of media status values
The status of media
created, processing, ready, error Comma-separated list of media variant types
The type of media variant
blurred, main, thumbnail, thumbnail_gallery Was this page helpful?