Resolido Docs
Conversations

Reply to customer

POST
/conversations/{conversationId}/reply

Send a reply to the customer (chat widget, WhatsApp or email), optionally then hand the conversation to AI or resolve it.

Authorization

bearer conversations:reply
headerAuthorizationBearer <token>

API key (rsl_live_…) from Settings → Developers.

Scope: conversations:reply

Path Parameters

conversationId*string

Conversation id with channel prefix, e.g. chat_k57… or email_j97….

Match^(chat|email)_[a-z0-9]+$

Request Body

application/json
  1. body
text*string

Plain-text reply. Email replies get the agent signature and quoted history automatically.

Length1 <= length <= 20000
then?string

What happens after sending: keep it with you, let AI continue, or resolve.

Default"none"
Value in"none""handoff_to_ai""resolve"
ifLastCustomerMessageId?string

Safety check: id of the newest customer message you answered. If the customer wrote again since, the reply is not sent (409).

viaEmail?boolean

Chat only: send the reply to the customer's email instead of the chat. It stays part of the chat conversation; it is sent from the chat agent's mailbox unless email.fromMailboxId is set.

Defaultfalse
email?

Response Body

Success

application/json
  1. response
conversationId*string

The conversation you replied in (also for viaEmail – then applies to it).

channel*string

How the reply was delivered.

Value in"chat""email"
messageId*string
emailConversationId*string

viaEmail: the internal email thread that carries the chat's emails (not shown in the inbox).

then*string
Value in"none""handoff_to_ai""resolve"
curl -X POST "https://example.com/conversations/string/reply" \  -H "Content-Type: application/json" \  -d '{    "text": "string"  }'
{  "conversationId": "string",  "channel": "chat",  "messageId": "string",  "emailConversationId": "string",  "then": "none"}