Reply in a conversation
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.
apiKeyAuthorizationBearer <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.
id*stringThe conversation id.
idempotency-key?stringA 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.
1 <= length <= 255application/json- 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?stringauto (the default) sends a long text as several messages; refuse answers 422 content_too_long instead.
"auto""auto""refuse"metadata?Your own key/value pairs, up to 4 KB of JSON, repeated in the message's events.
Accepted
application/json- response
message*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?" } }'{ "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" } ] }}