POST
https://app.evoriqa.com/api/v1/conversations/{conversationId}/messagesSend an agent reply
Posts a human/agent reply into the conversation (JSON only — no attachments over the API; content is trimmed before validation). Auto-claims the conversation when it is unassigned; the write is attributed to the workspace owner.
Requires scope conversations:write
Warning:
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| conversationId | path | string uuid | Required | — | The conversation's id. |
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
| content | string 1–4000 chars | Required | The reply text. |
Request
curl
curl -X POST "https://app.evoriqa.com/api/v1/conversations/{conversationId}/messages" \
-H "x-api-key: $EVORIQA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "Thanks — your refund is on its way." }'Node.js
const res = await fetch("https://app.evoriqa.com/api/v1/conversations/{conversationId}/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"content": "Thanks — your refund is on its way."
}),
});
const responseBody = await res.json();Python
import os
import requests
res = requests.post(
"https://app.evoriqa.com/api/v1/conversations/{conversationId}/messages",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
json={
"content": "Thanks — your refund is on its way."
},
)
body = res.json()Response
200 OK
{
"success": true,
"data": {
"id": "9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"createdAt": "2026-08-09T14:05:32.000Z",
"attachments": []
}
}