Skip to main content
POST
Send Message to Conversation Channel

Example — plain text recovery message

Example — labeled recovery send

Example — dry run (validate only)

This endpoint delivers to the conversation’s channel. It is the opposite of Update Conversation Messages, which only rewrites stored history and does not push to WhatsApp/Messenger/etc.
The message is sent as-is (agent-initiated). No LLM turn runs. The conversation origin decides the channel — you do not need to pass WhatsApp vs Messenger yourself.
Meta channels enforce a 24-hour messaging window after the last customer message. Outside that window, free-form WhatsApp text will fail (use an approved template / campaign). Messenger may allow a limited HUMAN_AGENT retry depending on page permissions.
Use options.dryRun: true to confirm the conversation exists and whether its origin is channel-deliverable before scheduling recovery jobs.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

agentId
string
required

Agent ID that owns the conversation.

Minimum string length: 1
convoId
string
required

Existing conversation ID (same as interact userID).

Minimum string length: 1

Body

application/json
message
string

Convenience plain-text body. Required unless messages is provided.

Minimum string length: 1
messages
object[]

Optional rich ChatMessage array. All messages are forced to from=bot and delivered as agent-initiated turns (no AI generation).

Minimum array length: 1
sourceLabel
string

Optional label stored on the message(s), e.g. "api", "recovery", "campaign". Defaults to "api".

options
object

Response

Successful response

success
boolean
required
message
string
required
data
object
required