GET /chats/{userUuid}/messages. This guide explains the fields that matter and how to answer the questions that come up most.
The message object
Each message in thedata array carries these fields:
Tell message types apart
Thetype field distinguishes ordinary messages, tips, and the platform’s automated messages. The values are:
- Ordinary messages:
SINGLE_RECIPIENT,CHAT_TEXT_REPLY,CHAT_TEXT_GENERATION,CHAT_TEXT_REWRITE. - Tips:
TIP. - Voice calls:
VOICE_CALL. - Automated messages:
AUTOMATED_FIRST_MESSAGE_REPLY,AUTOMATED_NEW_SUBSCRIBER,AUTOMATED_NEW_FOLLOWER,AUTOMATED_NEW_PURCHASE,AUTOMATED_RE_SUBSCRIBED,AUTOMATED_RENEWED,AUTOMATED_CANCELED,AUTOMATED_CHAT_MESSAGE_REPLY.
- A tip is
type === "TIP". - A pay-to-view (PPV) message has a non-null
pricing(and usuallyhasMedia: true). - An ordinary message is one of the text types with
pricing: null. - An automated or welcome message carries one of the
AUTOMATED_*types. The automatic messages a fan receives (for example after subscribing or following) surface here, so you can filter them out of, or single them out from, a human conversation by checking for anAUTOMATED_prefix.
Has the fan paid for a PPV message?
UsepurchasedAt. It is the timestamp the fan purchased the message, or null if they have not. So:
purchasedAtis set: the fan has unlocked and paid for it.purchasedAtis null on a message withpricing: it is still awaiting purchase.
Has the message been read?
Each message has anisRead boolean, so you can show read state (the “two ticks” pattern) directly from the message list. For a live surface that updates as soon as a fan reads a message, subscribe to the message-read webhook rather than polling.
Which team member sent a message?
If an agency or team operates the account,sentByUserId is the UUID of the team member who sent the message on the creator’s behalf (null when the creator sent it directly). This is what you use to attribute a message, and any purchase it drove, to a specific chatter.
Sending a message
Send withPOST /chats/{userUuid}/message. The body accepts text, mediaUuids, price, and templateUuid. To send pay-to-view media, include the mediaUuids you are selling and a price. To resolve and display the media you receive or send, see Working with Media.
Pay-to-view price limits
price is in cents. The allowed range for a chat pay-to-view message is:
500 unless you have confirmed otherwise for that
specific creator. There is no API field that exposes which ceiling applies.
A note on user names
Two name fields appear throughout the API, and they are not the same thing:handleis the user’s unique @ handle.displayNameis the changeable display name a user shows publicly.
uuid. When you show a name, use displayName, and fall back to handle. Both appear on the authenticated user (GET /users/me) and on the sender and recipient of every message.