cnv_. Each conversation holds messages (msg_...) in both directions.
Status: who answers this chat
Every conversation has exactly onestatus:
Taking over and releasing
- Sending a message in an
aiorhandoffchat moves it toteamfor 12 hours, so the AI does not talk over you. Any follow-ups the AI had scheduled in that chat are cancelled. - Take over (
POST /v1/conversations/{conversationId}/takeover) does the same without sending, and the AI withdraws any reply it had waiting in the chat. PassholdMinutesbetween 15 and 1440 (default 720, which is 12 hours). Taking over a chat your team already holds restarts the hold.takenOverUntilshows when the hold ends. - When the hold ends, the chat goes back to
aiby itself (if the creator’s AI is on). - Release (
POST /v1/conversations/{conversationId}/release) hands the chat back to the AI now. If the fan’s last message is still unanswered, the AI may reply to it immediately. If the creator’s AI is off, the chat stays with your team.
Turning the AI off for one chat
PUT /v1/conversations/{conversationId}/ai with {"enabled": false} moves the chat to ai_off. Use it for a fan your team wants to handle personally for good, such as a VIP or a sensitive situation. {"enabled": true} puts the chat back to ai, and the AI may answer the fan’s waiting message right away.
Unread
unreadCount counts fan messages nobody has read in OnlyX yet. It changes when:
- a fan writes (it goes up);
- you call
POST /v1/conversations/{conversationId}/read(it goes to 0); - you call
POST /v1/conversations/{conversationId}/unreadto flag the chat for later (it becomes 1).
The Conversation object
Conversation
GET /v1/conversations/{conversationId} returns the same fields plus:
fan: the full Fan object (notes, subscription, spend, lists,salesOptOut);handoff: the open hand-off, if the chat is inhandoff(otherwisenull);aiCanReply: whether the AI would answer this chat right now. It istrueonly when the creator’s AI is on and set up, the chat isai, and the creator is connected.
404 CONVERSATION_NOT_FOUND, exactly like an id that does not exist.
Messages
Messages come oldest to newest. Each has adirection (in or out) and a sender:
A message can carry media (
media[], each marked preview: true if the fan sees it free), a price (paid, with purchased once the fan unlocks it), and a tip (tipCents). Outgoing messages carry delivery, which tracks whether OnlyFans accepted them. The delivery states and sending rules are in Read and send messages.
Finding conversations
GET /v1/conversations filters by creatorId, status, unread, and a text search q (fan names), sorts by recent (default), spend, unread or name, and pages with limit (1 to 50, default 25) and cursor. GET /v1/conversations/counts returns the numbers for each status at once, handy for a dashboard (it has its own limit of 30 calls per 60 seconds per key):
Related
- Read and send messages: every call on this page, with examples.
- Hand-offs: what the AI hands off and how to resolve it.
- Hugo, the AI chatter: how the AI decides what to say and sell.