Skip to main content

DialogueDetailRead

Single-dialogue response wrapper with the dialogue record and optional voice-call metadata.

dialogue objectrequired

A dialogue is a single conversation between an agent and a contact over one messaging channel. It tracks the conversation stage, whether the bot is muted, pending follow-up state, and references to the last user/bot messages.

idIdrequired

Unique numeric identifier of the record.

product_idProduct Idrequired

ID of the product (workspace) that owns this record. Most endpoints scope access by product.

customer_id object

Canonical company-level customer ID used for shared communication context; null for legacy dialogues that have not been resolved.

anyOf
integer
agent_idAgent Idrequired

ID of the agent (a configured AI assistant / bot persona) this record belongs to.

contact_idContact Idrequired

ID of the contact this record relates to.

created_atdate-timerequired

Creation time (UTC, ISO 8601).

channel_idChannel Idrequired

ID of the messaging channel this record relates to.

stageStagerequired

Lifecycle stage of the dialogue. Backend-managed values: "initial" (created), "attempted" (initial message send attempted), "started" (initial send confirmed), "ongoing" (the user has replied at least once). Other values: "pending" (awaiting a scheduled follow-up), "failed" (delivery failed), "redirected" (conversation moved to another contact), "finished" (reached a final state-tree node). The values "refused", "success", "disqualified" and "escalated" are deprecated.

Possible values: [initial, attempted, started, ongoing, pending, failed, redirected, finished, refused, success, disqualified, escalated]

chat_idChat Idrequired

The channel-specific chat identifier this dialogue maps to.

last_user_msg_id objectrequired
anyOf
integer
last_user_msg_at objectrequired
anyOf
date-time
last_bot_msg_id objectrequired
anyOf
integer
is_mainIs Mainrequired

Whether this is the active (primary) dialogue for the agent/contact pair; superseded dialogues are set to false.

bot_mutedBot Mutedrequired

When true, the bot will not auto-respond in this dialogue (e.g. after a human takeover).

pending_until objectrequired

When a pending dialogue should be resumed (UTC).

anyOf
date-time
pending_type object

Why the dialogue is pending (e.g. follow_up, human_clarification, n8n_async_tool, custom_follow_up).

anyOf
PendingType

Possible values: [follow_up, human_clarification, n8n_async_tool, custom_follow_up, future_meeting]

pending_ref object

Opaque reference associated with the pending state.

anyOf
string
started_at objectrequired

When the dialogue stage first became "started" (UTC).

anyOf
date-time
ext_id objectrequired

External identifier of the conversation in the channel/provider, if any.

anyOf
string
waba_opener_sent_after_window_num objectrequired
anyOf
integer
is_sub_outreachIs Sub Outreachrequired

Whether this outreach was sent into an existing chat with the contact rather than as a cold outreach. Set when an outreach campaign reuses a channel the contact was already messaged on (the agent's persist_channel_in_outreach option): to the contact it is the same conversation, but the platform counts it against a separate "sub-outreach" daily limit, since messaging platforms (WhatsApp, Telegram, …) are less restrictive inside existing dialogues than for cold outreach.

warmup_pair_id objectrequired

For phone-warmup conversations, the warmup pair this dialogue belongs to.

anyOf
integer
is_incomingIs Incomingrequired

Whether the dialogue was started by an inbound message from the contact.

is_group_chatIs Group Chatrequired

Whether the conversation is a group chat.

skip_response_for_user_msg_id objectrequired
anyOf
integer
skip_response_until objectrequired
anyOf
date-time
last_tree_node_id objectrequired

ID of the state-tree node the dialogue currently sits on.

anyOf
integer
subject objectrequired

Email subject line, for email channels.

anyOf
string
voice_call object

Voice-call metadata for this dialogue, or null when the dialogue is not a voice call.

anyOf
dialogue_idDialogue Idrequired

ID of the dialogue (conversation) this record relates to.

external_call_idExternal Call Idrequired

Stable call identifier assigned by the voice runtime.

providerProviderrequired

Voice provider identifier. Public API value is voice.

Constant value: voice
sip_call_id objectrequired

Optional SIP-side call identifier, when the call used SIP.

anyOf
string
sip_code objectrequired

Optional SIP status or termination code reported by the voice runtime.

anyOf
integer
statusStatusrequired

Voice call lifecycle status — active, completed, or failed.

Possible values: [active, completed, failed]

direction objectrequired

Whether the call is inbound or outbound.

anyOf
string

Possible values: [inbound, outbound]

started_atdate-timerequired

When the voice call started (UTC).

ended_at objectrequired

When the voice call ended (UTC), if it has ended.

anyOf
date-time
duration_seconds objectrequired

Total call duration in seconds, if known.

anyOf
integer
recording_s3_key objectrequired

S3 object key for the call recording, if one was produced.

anyOf
string
usage_metadata objectrequired

Free-form usage metrics reported by the voice runtime, for example token, audio, or provider usage counters.

property name*any

Free-form usage metrics reported by the voice runtime, for example token, audio, or provider usage counters.

latency_metadata objectrequired

Free-form latency metrics reported by the voice runtime, for example STT, LLM, TTS, or end-to-end timing.

property name*any

Free-form latency metrics reported by the voice runtime, for example STT, LLM, TTS, or end-to-end timing.

created_atdate-timerequired

Creation time (UTC, ISO 8601).

updated_atdate-timerequired

Last modification time (UTC, ISO 8601).

DialogueDetailRead
{
"dialogue": {
"id": 0,
"product_id": 0,
"customer_id": 0,
"agent_id": 0,
"contact_id": 0,
"created_at": "2024-07-29T15:51:28.071Z",
"channel_id": 0,
"stage": "initial",
"chat_id": "string",
"last_user_msg_id": 0,
"last_user_msg_at": "2024-07-29T15:51:28.071Z",
"last_bot_msg_id": 0,
"is_main": true,
"bot_muted": true,
"pending_until": "2024-07-29T15:51:28.071Z",
"pending_type": "follow_up",
"pending_ref": "string",
"started_at": "2024-07-29T15:51:28.071Z",
"ext_id": "string",
"waba_opener_sent_after_window_num": 0,
"is_sub_outreach": true,
"warmup_pair_id": 0,
"is_incoming": true,
"is_group_chat": true,
"skip_response_for_user_msg_id": 0,
"skip_response_until": "2024-07-29T15:51:28.071Z",
"last_tree_node_id": 0,
"subject": "string"
},
"voice_call": {
"dialogue_id": 0,
"external_call_id": "string",
"provider": "voice",
"sip_call_id": "string",
"sip_code": 0,
"status": "active",
"direction": "inbound",
"started_at": "2024-07-29T15:51:28.071Z",
"ended_at": "2024-07-29T15:51:28.071Z",
"duration_seconds": 0,
"recording_s3_key": "string",
"usage_metadata": {},
"latency_metadata": {},
"created_at": "2024-07-29T15:51:28.071Z",
"updated_at": "2024-07-29T15:51:28.071Z"
}
}