Skip to main content
POST
Send a message in a test conversation
Continues a test conversation you started by API or in Playground. You send what the lead writes next, and you get the agent’s answer for that turn.

Before you start

  • It runs on the channel you chose when you started the conversation.
  • Same rules as starting a conversation: secret API key only, workflows:write on MCP keys, always simulated.
  • Send one message at a time. While a turn is running, another message to the same conversation returns turn_in_progress. Wait for the answer, then send the next one.
  • If the agent refuses the turn on purpose, for example because the lead was escalated to a person or the AI is off for it, you get 409 turn_refused with the cause in reason, such as lead_in_support, human_takeover, or ai_not_enabled. Sending the same message again gets the same answer. A real failure returns turn_failed instead.
  • Only test conversations of your account are accepted. A real lead, or a conversation from another account, returns conversation_not_found.

What you send

What you get back

The same fields as when you start a conversation: conversation_id, channel, reply, messages, tool_calls, status, and no_reply_reason when the agent stayed silent on purpose.

Read a turn in detail

With the Nexor MCP, pass conversation_id as the lead ID to list_lead_turns and get_lead_turn to see the full reasoning of a turn.

Limits

  • 30 turns per minute per API key, shared with starting conversations.
  • A turn that takes more than 90 seconds returns turn_failed with reason timeout.

Authorizations

X-API-Key
string
header
required

API key for authentication. Keys are prefixed with nxr_live_.

Path Parameters

conversation_id
string<uuid>
required

The conversation_id you got when you started the conversation. Conversations started in Playground also work.

Body

application/json
message
string
required

What the simulated lead writes.

Required string length: 1 - 4000

Response

The agent answered.

conversation_id
string<uuid>
required

ID of the test conversation. It is the test lead's ID, so it also works with GET /test-conversations and GET /leads/{id}/turns.

lead_id
string<uuid>
required

Same value as conversation_id.

workflow_id
string<uuid>
required

Task ID (workflow in the API) the conversation runs on.

channel
enum<string>
required

Simulated channel the conversation runs on. The agent writes as it would on that channel; nothing is sent.

Available options:
whatsapp,
webchat,
sms,
imessage,
unsupervised-whatsapp,
email,
instagram,
messenger
reply
string | null
required

The agent's text for this turn, bubbles joined by a blank line. null when the agent stayed silent on purpose.

messages
object[]
required

Every message the agent sent in this turn, in order, as the lead would receive them.

tool_calls
object[]
required

Tools the agent called in this turn, in order. API keys and tokens in the arguments are masked.

status
string | null
required

Key of the lead's stage in the task after this turn.

no_reply_reason
string

Only when the agent stayed silent on purpose, for example terminal_tool (it reacted with an emoji) or status_paused (the stage pauses the agent).

Last modified on October 9, 2026