curl --request GET \
--url https://api.fanvue.com/v1/chats/{userUuid}/messages/{messageUuid} \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/chats/{userUuid}/messages/{messageUuid}"
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/chats/{userUuid}/messages/{messageUuid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"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": [],
"gif": null,
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": true
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get a single message
Returns a single message from a chat conversation with the specified user, by message UUID.
This is the single-message counterpart to GET /chats/{userUuid}/messages and returns the same message shape for one message, so you can reuse the same parsing.
curl --request GET \
--url https://api.fanvue.com/v1/chats/{userUuid}/messages/{messageUuid} \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/chats/{userUuid}/messages/{messageUuid}"
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/chats/{userUuid}/messages/{messageUuid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"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": [],
"gif": null,
"pricing": null,
"purchasedAt": null,
"tipSource": null,
"sentByUserId": null,
"appUuid": "f6a7b8c9-0123-4567-89ab-cdef01234567",
"isRead": 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"
Response
Message details
Show child attributes
Show child attributes
Show child attributes
Show child attributes
image, video, audio, document Ordered list of media UUIDs attached to this message (display order)
UUID of the media item shown for free as a preview of this pay-to-view message, or null when no free preview was configured. Mirrors the mediaPreviewUuid set when sending the message.
The third-party GIF attached to this message, or null for an ordinary message. A GIF message carries no media and no price, but text may be set — a GIF can be sent with a caption.
Show child attributes
Show child attributes
AUTOMATED_CANCELED, AUTOMATED_NEW_FOLLOWER, AUTOMATED_NEW_PURCHASE, AUTOMATED_NEW_SUBSCRIBER, AUTOMATED_RE_SUBSCRIBED, AUTOMATED_RENEWED, AUTOMATED_CHAT_MESSAGE_REPLY, AUTOMATED_FIRST_MESSAGE_REPLY, CHAT_TEXT_GENERATION, CHAT_TEXT_REPLY, CHAT_TEXT_REWRITE, SINGLE_RECIPIENT, TIP, VOICE_CALL, BROADCAST, GHOST_PROMOTION Pricing information for pay-to-view messages
Show child attributes
Show child attributes
Timestamp when this message was purchased, or null if not purchased
For TIP messages, where the tip originated: 'chat' (direct in-chat tip), 'post' (tipped a feed post) or 'media_link' (tipped via a shared media link). Null for non-tip messages.
chat, post, media_link UUID of the team member who sent the message on behalf of the creator, or null if sent directly by the creator
UUID of the third-party app that created this message through the public API. Null when the message was sent from the Fanvue dashboard, and for every message sent before app attribution was recorded.
Whether the message has been read by the recipient
Was this page helpful?