message.sent is deprecated. Use creator.message.sent
instead. This event continues to fire during the migration window; new
integrations should use the creator.* event.
When this fires
Triggered (message.sent) on every outbound creator → fan message, whatever
its source: a message the creator types in the Fanvue UI, one an agency manager
sends on their behalf, an automated/scheduled message, or an AI-generated reply
or voice/image message.
This is the outbound counterpart to message.received.
Together they let you keep a full, real-time mirror of a conversation without
polling the chat tail.
message.sent requires the read:chat scope. Consent is checked against the
creator who owns the conversation (the sending side), so the event is
delivered to apps the creator — or their agency manager — has authorized.
Payload
messageUuid: Unique identifier for the message
chatUuid: UUID of the conversation. The conversation is addressed by the counterpart (fan) user UUID across the API, so this is the fan’s user UUID.
creatorUuid: UUID of the creator who owns the conversation
sentByUserId: UUID of the actual writer — the creator, the agency manager who sent on their behalf, or the creator’s automation/AI acting as them. Equals creatorUuid for self-sends.
sentAt: ISO 8601 time the message was sent
type: The message type. One of the platform message-type values, e.g. SINGLE_RECIPIENT (a normal direct message), BROADCAST (mass message), TIP, LOCKED_MESSAGE_UNLOCKED, VOICE_CALL, or one of the AUTOMATED_* / CHAT_TEXT_* automation types.
Example payload
{
"messageUuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
"chatUuid": "5939ae62-3eb5-4433-954f-f78c7b4282f3",
"creatorUuid": "f4b2a184-2b4a-4a04-9b70-3c0e0a1caa12",
"sentByUserId": "f4b2a184-2b4a-4a04-9b70-3c0e0a1caa12",
"sentAt": "2026-05-20T08:41:02.114Z",
"type": "SINGLE_RECIPIENT"
}