curl --request GET \
--url https://api.fanvue.com/chats/{userUuid}/messages \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/chats/{userUuid}/messages"
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/chats/{userUuid}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"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,
"tipSource": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": true
},
{
"uuid": "b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7",
"text": "I'm doing great! Thanks for asking.",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": true,
"mediaType": "image",
"mediaUuids": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
],
"mediaPreviewUuid": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"gif": null,
"pricing": {
"USD": {
"price": 500
}
},
"purchasedAt": "2024-01-15T00:00:00.000Z",
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": true
},
{
"uuid": "c3d4e5f6-7890-1234-5678-9abcdef01234",
"text": "Thanks for the tip! 💖",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "TIP",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": null,
"pricing": {
"USD": {
"price": 1000
}
},
"purchasedAt": null,
"tipSource": "post",
"sentByUserId": null,
"appUuid": null,
"isRead": true
},
{
"uuid": "d4e5f6a7-8901-2345-6789-abcdef012345",
"text": "Check out my new exclusive content 🔥",
"sentAt": "2024-01-14T00: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": {},
"type": "BROADCAST",
"hasMedia": true,
"mediaType": "image",
"mediaUuids": [
"b2c3d4e5-f6a7-8901-bcde-f12345678901"
],
"mediaPreviewUuid": null,
"gif": null,
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": false
},
{
"uuid": "e5f6a7b8-9012-3456-789a-bcdef0123456",
"text": null,
"sentAt": "2024-01-14T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": {
"id": "excited-happy-dance-xY7bQ",
"format": "WEBP",
"title": "excited happy dance",
"url": "https://cdn.klipy.com/excited-happy-dance-xY7bQ/md.webp",
"width": 480,
"height": 360
},
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": false
}
],
"pagination": {
"page": 1,
"size": 2,
"hasMore": true
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get messages from a chat
Returns a paginated list of text messages between the authenticated user and the specified user. Messages are ordered by creation date (newest first).
Pass beforeMessageUuid to anchor pagination to a known message and fetch the messages immediately older than it (stable keyset pagination). When supplied, beforeMessageUuid takes precedence over page; an unknown or unpublished anchor is ignored and the first page is returned.
Pass startDate and/or endDate to restrict results to a time window on the message publish date. Both are optional and combine with page/size pagination. Both bounds are exclusive: startDate returns messages published strictly after it, endDate messages published strictly before it. This is the recommended way to fetch “what changed since X” instead of paging blindly after a mass message.
Note that endDate suppresses markAsRead: because an upper-bounded window deliberately excludes the newest messages, marking the conversation read would clear unread state on messages this call never returned. Requests carrying endDate therefore never mark the chat as read, whatever markAsRead is set to.
Polling for real-time updates? Use a webhook instead.
If you are calling this endpoint on a schedule to detect new activity, subscribe to the creator.message.received, creator.message.sent, creator.message.deleted, creator.message.reaction webhook events instead — you’ll get pushed updates in real time without polling. See the webhook documentation.
curl --request GET \
--url https://api.fanvue.com/chats/{userUuid}/messages \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/chats/{userUuid}/messages"
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/chats/{userUuid}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"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,
"tipSource": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": true
},
{
"uuid": "b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7",
"text": "I'm doing great! Thanks for asking.",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": true,
"mediaType": "image",
"mediaUuids": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
],
"mediaPreviewUuid": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"gif": null,
"pricing": {
"USD": {
"price": 500
}
},
"purchasedAt": "2024-01-15T00:00:00.000Z",
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": true
},
{
"uuid": "c3d4e5f6-7890-1234-5678-9abcdef01234",
"text": "Thanks for the tip! 💖",
"sentAt": "2024-01-15T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "TIP",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": null,
"pricing": {
"USD": {
"price": 1000
}
},
"purchasedAt": null,
"tipSource": "post",
"sentByUserId": null,
"appUuid": null,
"isRead": true
},
{
"uuid": "d4e5f6a7-8901-2345-6789-abcdef012345",
"text": "Check out my new exclusive content 🔥",
"sentAt": "2024-01-14T00: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": {},
"type": "BROADCAST",
"hasMedia": true,
"mediaType": "image",
"mediaUuids": [
"b2c3d4e5-f6a7-8901-bcde-f12345678901"
],
"mediaPreviewUuid": null,
"gif": null,
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": false
},
{
"uuid": "e5f6a7b8-9012-3456-789a-bcdef0123456",
"text": null,
"sentAt": "2024-01-14T00:00:00.000Z",
"sender": {
"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"
},
"recipient": {
"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"
},
"type": "SINGLE_RECIPIENT",
"hasMedia": false,
"mediaType": null,
"mediaUuids": [],
"mediaPreviewUuid": null,
"gif": {
"id": "excited-happy-dance-xY7bQ",
"format": "WEBP",
"title": "excited happy dance",
"url": "https://cdn.klipy.com/excited-happy-dance-xY7bQ/md.webp",
"width": 480,
"height": 360
},
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": null,
"isRead": false
}
],
"pagination": {
"page": 1,
"size": 2,
"hasMore": true
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}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
Query Parameters
Page number to retrieve (starts from 1)
x >= 1Number of items to return per page (1-50, default: 15)
1 <= x <= 50Whether to mark the chat as read after retrieving messages
true, false Anchor cursor: return messages older than this message UUID. Takes precedence over page.
Only return messages published after this ISO 8601 datetime (with optional timezone offset, e.g. 2024-10-20T00:00:00+01:00 or 2024-10-20T00:00:00Z). Exclusive lower bound. Combines with page/size.
Only return messages published before this ISO 8601 datetime (with optional timezone offset, e.g. 2024-10-25T00:00:00+01:00 or 2024-10-25T00:00:00Z). Non-inclusive - messages before this date are included. Combines with page/size.
Was this page helpful?