curl --request POST \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"chatUuids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch"
payload = { "chatUuids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({chatUuids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']})
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"byChat": {
"b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7": {
"messages": [
{
"uuid": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"text": "Hey there! How are you doing?",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"nickname": "SarahK",
"displayName": "Sarah Jones",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z"
},
"recipient": {
"uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
"handle": "johnny-doey",
"nickname": "JohnnyD",
"displayName": "Johnny Doey",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": null,
"pricing": null,
"purchasedAt": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": true
}
],
"hasMore": true,
"oldestMessageUuid": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6"
},
"c3d4e5f6-7890-1234-5678-9abcdef01234": {
"error": "not_found"
}
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get messages from multiple chats in bulk for a creator
Returns the most recent messages for up to 50 chats in a single request for the specified creator, keyed by the input chat UUID (the counterpart user UUID).
This is the bulk counterpart to GET /creators/{creatorUserUuid}/chats/{userUuid}/messages. Per-key errors are reported inside the 200 response body so a single unreachable chat never collapses the whole request.
{ "error": "not_found" }.isRead reflects each message’s state at read time.curl --request POST \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"chatUuids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch"
payload = { "chatUuids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({chatUuids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']})
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/chats/messages/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"byChat": {
"b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7": {
"messages": [
{
"uuid": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"text": "Hey there! How are you doing?",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"nickname": "SarahK",
"displayName": "Sarah Jones",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z"
},
"recipient": {
"uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
"handle": "johnny-doey",
"nickname": "JohnnyD",
"displayName": "Johnny Doey",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": null,
"pricing": null,
"purchasedAt": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": true
}
],
"hasMore": true,
"oldestMessageUuid": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6"
},
"c3d4e5f6-7890-1234-5678-9abcdef01234": {
"error": "not_found"
}
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}read:creator— Access creator profiles, content, and creator-specific information.read:chat— Read chat conversations, messages, and chat-related data. This includes viewing chat lists and message history.
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"
Path Parameters
Body
Array of chat UUIDs (counterpart user UUIDs) to fetch messages for (1-50)
1 - 50 elementsOptional cursor for incremental walks: returns only messages strictly after this message's publish date in each chat
Maximum messages to return per chat (1-50, default: 20)
1 <= x <= 50Response
Per-chat messages or error for each requested chat. Always 200 when the request itself is valid, even if every key fails.
Map of input chat UUID to messages or a per-key error
Show child attributes
Show child attributes
Was this page helpful?