curl --request GET \
--url https://api.onlyx.ai/v1/creators/{creatorId}/media \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/media"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"createdAt": "2026-08-30T14:12:09.000Z",
"durationSeconds": null,
"height": 1350,
"id": "4012345678",
"listIds": [
"1234567"
],
"stats": {
"buyers": 9,
"likes": 212,
"tipsCents": 4500
},
"thumbnailUrl": "https://api.onlyx.ai/v1/creators/cre_8f2c1a9b0d7e4c3f2a1b/media/4012345678/thumbnail",
"type": "photo",
"width": 1080
}
],
"hasMore": true,
"nextCursor": "eyJrIjoiY3JlYXRvcnMiLCJwIjp7ImkiOiJjcmVfOGYyYzFhOWIwZDdlNGMzZjJhMWIifX0.Yp3k0Qm7T2vX9aLc4R8sWg"
}List vault media
Lists the creator’s OnlyFans vault: photos, videos, GIFs and audio with size, length, the vault lists they are in and how they performed. The ids are what you use in messages (mediaIds, previewMediaIds), in the welcome message and on AI content levels. The list is OnlyX’s stored copy of her vault, refreshed by OnlyX on its own schedule — reading it never touches her OnlyFans session; a creator who is not connected has an empty vault. Uploading is not available through the API yet. A creator the credential cannot see is 404 CREATOR_NOT_FOUND.
Scope: requires media:read.
Rate limit: the general limit of 120 requests per 60 seconds per credential.
curl --request GET \
--url https://api.onlyx.ai/v1/creators/{creatorId}/media \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/media"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"createdAt": "2026-08-30T14:12:09.000Z",
"durationSeconds": null,
"height": 1350,
"id": "4012345678",
"listIds": [
"1234567"
],
"stats": {
"buyers": 9,
"likes": 212,
"tipsCents": 4500
},
"thumbnailUrl": "https://api.onlyx.ai/v1/creators/cre_8f2c1a9b0d7e4c3f2a1b/media/4012345678/thumbnail",
"type": "photo",
"width": 1080
}
],
"hasMore": true,
"nextCursor": "eyJrIjoiY3JlYXRvcnMiLCJwIjp7ImkiOiJjcmVfOGYyYzFhOWIwZDdlNGMzZjJhMWIifX0.Yp3k0Qm7T2vX9aLc4R8sWg"
}Authorizations
An API key (onx_sk_…) created in OnlyX under Settings → API & MCP, or an OAuth access token (onx_at_…) issued to a connected app. Send it as Authorization: Bearer <credential>. API keys may also be sent as X-API-Key: <key>.
Path Parameters
The creator id (cre_…), from GET /v1/creators.
40Query Parameters
Only this media type.
photo, video, gif, audio Only media in this vault list (an id from listIds).
40^[A-Za-z0-9_-]{1,40}$newest (default), oldest or earnings.
newest, oldest, earnings Page size, 1-100. Default 25.
1 <= x <= 100Opaque cursor from the previous page's nextCursor. Omit for the first page.
1024