Skip to main content
POST
Start an outbound conversation with a Contact as a given Agent

Authorizations

x-api-key
string
header
required

Copy the API key as provided by the Bridge Console.

Path Parameters

workspaceId
string<uuid>
required

Unique identifier of the workspace (UUID v4).

Example:

"b6cf1c4a-2b1e-4e63-8f3e-0f9d1a2a1234"

agentId
string<uuid>
required

Unique identifier of the Agent (UUID v4), as listed by GET /agents.

Example:

"4e362e2b-67b2-4a7e-a9df-e9ecf9141be8"

Body

application/json

Request body for starting an outbound conversation answered by a given Agent.

contact
Contact · object
required

The Contact this outbound conversation targets. Must already exist in the workspace.

template
Template · object
required

The opening template to send.

additionalMessages
AgentOutboundFollowUp · object[]

Up to five text follow-ups stored on the conversation right after the opening template, in the order given, and sent like the template. Attachments (mediaIds) are not sent yet.

Maximum array length: 5
agentContext
AgentOutboundContext · object | null

Notes and media stored on the conversation as context for the Agent and for Bridge Users.

Tenant-affirmed opt-in evidence recorded verbatim on the conversation.

handoffOverride
AgentOutboundHandoffOverride · object | null

Pre-assigns the Bridge User who receives the handoff of the outbound conversation.

brandId
string | null

Optional brand id. When given, only the Agent's lines linked to this brand are eligible; if none is, the request fails with 404. Omit to consider every line of the Agent.

Example:

null

campaignId
string | null

Optional campaign reference stored on the conversation for audit and reporting.

Example:

null

forceSend
boolean
default:false

Controls what happens when no line of the Agent is free or recoverable. A free line always wins, then a line holding a released conversation with this Contact that can be recovered, whatever this flag says. When neither exists: with false (default) the request fails with 409 BRIDGE_AI_LEADSCOUT_0008; with true, a line occupied by an active conversation with this Contact is reused, preferring one this Agent controls. If the chosen conversation is held by another Agent or a Bridge User the request fails with 409 BRIDGE_AI_AGENT_OUTBOUND_0006 and nothing is written; release it first, then retry. Lines whose conversation is blocked or was released without recovery are never used, so with no line occupied by an active conversation the request fails with 409 BRIDGE_AI_LEADSCOUT_0008 even with true.

Examples:

false

true

Response

Successful Response

Response body for a successful Agent outbound initiation.

conversation
Conversation · object
required

The conversation the Agent now controls: newly created, reused (alreadyInitiated) or recovered (recovered).

contact
Contact · object
required

The contact the conversation was initiated with.

templateSent
AgentTemplateSent · object | null

Summary of the template stored to open the conversation.

additionalMessagesPersisted
integer
default:0

Count of follow-up messages persisted on the conversation.

Examples:

0

3

alreadyInitiated
boolean
default:false

True when this request landed on a pre-existing conversation (forceSend=true reuse path); false when a fresh conversation was created. Informational only — the new template and follow-ups are persisted either way.

Examples:

false

true

recovered
boolean
default:false

True when a released conversation the Contact had on the line was recovered instead of creating a new one. Recovery replaces the previous outbound context and agentContext. Recoverable lines are used even with forceSend=false.

Examples:

false

true