Reply in a conversation

POST
/v1/conversations/{id}/messages

Sends a message into an existing conversation. The channel, your sender and the recipient come from the conversation, so you only send the content. This is how your code answers someone who wrote to you.

Requires an API key with the messages:send scope.

Authorization

apiKey
headerAuthorizationBearer <token>

A secret API key from the dashboard (Developers → API keys): vl_live_…, or vl_test_… for test mode. Each operation says which scope the key needs.

Path Parameters

id*string

The conversation id.

Header Parameters

idempotency-key?string

A unique value (a UUID works) that makes a retry safe: sending the same key again returns the first result instead of acting twice. 1–255 printable characters.

Length1 <= length <= 255

Request Body

application/json
  1. body
content*||

What to send: { "type": "text", "text" }, { "type": "media", "media": [{ "url" }], "caption" }. Templates ({ "type": "template" }) are not available yet: refused with 422 operation_not_supported.

split?string

auto (the default) sends a long text as several messages; refuse answers 422 content_too_long instead.

Default"auto"
Value in"auto""refuse"
metadata?

Your own key/value pairs, up to 4 KB of JSON, repeated in the message's events.

Response Body

Accepted

application/json
  1. response
message*
Example Request
curl -X POST "https://api.vlayers.ai/v1/conversations/$CONVERSATION_ID/messages" \  -H "Authorization: Bearer $VOICELAYER_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "content": {      "type": "text",      "text": "Yes, we have a table at 7pm. Shall I book it?"    }  }'
Example Response
{  "message": {    "id": "0192f5b0-8d1f-7b62-8c3e-5f9a2b7d4e32",    "conversationId": "0192f5b0-7c3e-7a51-9b2d-4e8f1a6c3d21",    "channel": "sms",    "direction": "outbound",    "status": "queued",    "text": "Yes, we have a table at 7pm. Shall I book it?",    "media": [],    "from": "+14155550100",    "to": "+15550123",    "bindingId": null,    "metadata": {},    "error": null,    "createdAt": "2026-10-20T15:04:05.000Z",    "parts": [      {        "id": "0192f5b0-8d1f-7b62-8c3e-5f9a2b7d4e32",        "status": "queued"      }    ]  }}