List Channels
Use channels to discover the connected accounts your integration can work with.id when you need to send WhatsApp templates from a specific number.
List Conversations
Example:
M2M v1 currently exposes the first live conversation window. Even if a response contains
nextCursor, the list endpoint does not currently accept a continuation cursor. Use filters and a limit up to 200 to define the working set your integration needs.Get Conversation Detail
conversation.needsReply is the authoritative signal that operator action is required. lastMessageRole describes chronology only; do not use it as a substitute for needsReply.
List Conversation Messages
cursor as opaque and pass nextCursor unchanged to retrieve older messages. hasMore=true means older external messages remain; nextCursor is null when hasMore=false.
Example response:
messages[].eventId to correlate a queued requestEventId. Delivery information can appear in messages[].status, messages[].statusReason, and messages[].deliveries.
status is always one of received, queued, sent, delivered, read, failed, blocked, partial_sent, or unknown. A dispatcher publish failure is normalized to failed.
Message direction describes chronology only. Use conversation.needsReply, not the latest message direction, to decide whether operator action is required.
Send a Reply
Replies are queued asynchronously. Delivery results are reconciled into Visito conversation history after the channel dispatcher sends the message.
Reconcile an Outbound Reply
- Persist the
conversationId,replyId,requestEventId,correlationId, andIdempotency-Keyfrom the202response. - Read
GET /m2m/v1/conversations/{conversationId}/messages. - Match
requestEventIdtomessages[].eventId. - Treat
queuedas pending,sentas handed to the provider, andfailedorblockedas unsuccessful. - If the original send request times out, retry the exact same body with the same idempotency key before deciding to create new outbound work.
409 REPLY_WINDOW_CLOSED. For WhatsApp, use an approved template to reopen the conversation instead of retrying the reply.