curl --request POST 'https://api.brightalk.ai/calls' \
--header "Authorization: Bearer $BRIGHTALK_API_KEY" \
--header "Brightalk-Version: 2026-07-16" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: createCall-example-001" \
--data '{"agent_id":"agt_demo_001","contact_id":"con_demo_001"}'const response = await fetch("https://api.brightalk.ai/calls", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BRIGHTALK_API_KEY}`,
"Brightalk-Version": "2026-07-16",
"Content-Type": "application/json",
"Idempotency-Key": "createCall-example-001",
},
body: JSON.stringify({"agent_id":"agt_demo_001","contact_id":"con_demo_001"}),
});
console.log(response.status, await response.json());import os
import requests
response = requests.request(
"POST",
"https://api.brightalk.ai/calls",
headers={
"Authorization": f"Bearer {os.environ['BRIGHTALK_API_KEY']}",
"Brightalk-Version": "2026-07-16",
"Content-Type": "application/json",
"Idempotency-Key": "createCall-example-001",
},
json={"agent_id":"agt_demo_001","contact_id":"con_demo_001"},
)
print(response.status_code, response.json())Queue one immediate AI call
Durably queues one AI call for immediate eligibility. Capacity may leave an accepted call queued. An Idempotency-Key is required and the raw JSON body is limited to 1 MiB. Every response includes Brightalk-Version and X-Request-Id; rate-limited responses also expose the effective bucket counters.
curl --request POST 'https://api.brightalk.ai/calls' \
--header "Authorization: Bearer $BRIGHTALK_API_KEY" \
--header "Brightalk-Version: 2026-07-16" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: createCall-example-001" \
--data '{"agent_id":"agt_demo_001","contact_id":"con_demo_001"}'const response = await fetch("https://api.brightalk.ai/calls", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BRIGHTALK_API_KEY}`,
"Brightalk-Version": "2026-07-16",
"Content-Type": "application/json",
"Idempotency-Key": "createCall-example-001",
},
body: JSON.stringify({"agent_id":"agt_demo_001","contact_id":"con_demo_001"}),
});
console.log(response.status, await response.json());import os
import requests
response = requests.request(
"POST",
"https://api.brightalk.ai/calls",
headers={
"Authorization": f"Bearer {os.environ['BRIGHTALK_API_KEY']}",
"Brightalk-Version": "2026-07-16",
"Content-Type": "application/json",
"Idempotency-Key": "createCall-example-001",
},
json={"agent_id":"agt_demo_001","contact_id":"con_demo_001"},
)
print(response.status_code, response.json())Authorizations
Use a server-side Brightalk API key in the Authorization header.
Headers
Selects the date-based API version. Omission uses the organization’s pinned default.
"2026-07-16"A caller-generated correlation value matching [A-Za-z0-9._:-]{1,64}. Invalid values are replaced.
64^[A-Za-z0-9._:-]{1,64}$A nonsecret key retained for 24 hours. Reuse only for a semantically identical request.
1 - 255^(?=.{1,255}$)[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$Body
JSON request body. The raw encoded body is limited to 1 MiB and unknown fields are rejected.
Response
Call accepted into the durable queue.
An opaque resource identifier.
1 - 255"11111111-1111-4111-8111-111111111111"
queued, dialing, in_progress, completed, failed, cancelled answered, no_answer, busy, voicemail, unknown An opaque resource identifier.
1 - 255"con_demo_001"
An opaque resource identifier.
1 - 255"agt_demo_001"
When the call entered the durable queue.
"2026-07-20T01:00:00Z"
When the public Call resource was created.
"2026-07-20T01:00:00Z"
When the Call resource was last updated.
"2026-07-20T01:00:00Z"
An opaque resource identifier.
1 - 255"bat_demo_001"
An opaque resource identifier.
1 - 255"run_demo_001"
A normalized or configured business outcome.
"qualified"
A concise reason for the outcome.
"Requested a follow-up."
A concise call summary.
"Customer requested a follow-up next week."
x >= 092
When dialing began.
"2026-07-20T01:00:00Z"
When the call connected.
"2026-07-20T01:00:00Z"
When the call ended.
"2026-07-20T01:00:00Z"
When cancellation was requested.
"2026-07-20T01:00:00Z"
When cancellation won the terminal-state race.
"2026-07-20T01:00:00Z"