curl --request POST \
--url https://example.com/api/v1/project/{projectSlug}/{env}/outbound-calls \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"channelConnectionId": "cc_01a09438",
"to": {
"type": "phone",
"number": "+14155550123"
},
"idempotencyKey": "order-4821-attempt-1",
"clientReferenceId": "order-4821",
"amdMode": "off"
}
'{
"success": true,
"data": {
"outboundCallId": "<string>",
"phase": "accepted",
"initiationState": "created"
}
}{
"success": true,
"data": {
"outboundCallId": "oc_01a0a4af5a417f5186af",
"phase": "accepted",
"initiationState": "submitted"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}Place outbound calls
Initiate an outbound call.
curl --request POST \
--url https://example.com/api/v1/project/{projectSlug}/{env}/outbound-calls \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"channelConnectionId": "cc_01a09438",
"to": {
"type": "phone",
"number": "+14155550123"
},
"idempotencyKey": "order-4821-attempt-1",
"clientReferenceId": "order-4821",
"amdMode": "off"
}
'{
"success": true,
"data": {
"outboundCallId": "<string>",
"phase": "accepted",
"initiationState": "created"
}
}{
"success": true,
"data": {
"outboundCallId": "oc_01a0a4af5a417f5186af",
"phase": "accepted",
"initiationState": "submitted"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}201 on a genuinely new call. Repeating the exact same idempotencyKey and body returns 200 with the original call instead of placing a duplicate one.Authorizations
Project-bound Platform API key (abl_...). The key must carry outbound_calls.initiate
for write operations (initiate, terminate) or outbound_calls.read for read operations
(lookup, list, summary, search, event stream).
Path Parameters
The project's slug.
1Deployment environment segment the call runs under, e.g. production, staging, dev.
1Body
The outbound-capable channel connection (telephony trunk/app) to place the call through.
1Destination for the call — a phone number or a SIP URI.
- Option 1
- Option 2
Show child attributes
Show child attributes
Caller-supplied key. Repeating this exact request (same key + same body) returns
the original call (200) instead of dialing again. The same key with a
different body is rejected with 409 IDEMPOTENCY_CONFLICT.
1Optional caller correlation id, echoed back on the call record and filterable via clientReferenceId.
1 - 256Answering-machine detection behavior. off=disabled, no AMD processing; continue=detect
and report via amdResult, but let the call proceed regardless; disconnect=detect and
automatically hang up on a machine.
off, continue, disconnect Optional arbitrary key/value metadata attached to the session created once the call connects.
Was this page helpful?