Skip to content

API reference

API: Voice calls

Markdown version

MethodPathWhat it doesScope
GET/v1/voice/calls/:id/actionsWhat the voice agent did for the caller on a call: texts, booking confirmations, payment links, catalog answers, price checks and card redactionscalls:read
GET/v1/voice/flows/callsCalls the AI voice agent handled (newest first): who, routing, time to answer, outcomesettings:read
GET/v1/voice/flows/calls/:idOne call: the routing decision, time to answer and to the first audio, disclosure, screening, transcript (withheld when the caller objected to recording), recording, tools, message, booking, outcometranscripts:read
GET/v1/voice/flows/routingInbound routing per number, with who would answer right nowsettings:read
PUT/v1/voice/flows/routingSet how a number is answered (owner): AI always, or business hours to a ring group (all rung at once) with overflow to the AI after N seconds or when nobody is available; after hours and holidays the AI answers. Versionedsettings:write
POST/v1/voice/flows/screening-previewCheck a screening line and hear what a screener would be toldsettings:read
GET/v1/voice/flows/settingsCall-flow settings: outbound AI calls (off by default), speed-to-lead attempts, spacing and target, the screening line and its silence timeout, recordingsettings:read
PUT/v1/voice/flows/settingsChange the call-flow settings (owner). Turning outbound AI calls on covers callbacks to people who consented on a form only; the screening line can be reworded, never made to hide that it's an AIsettings:write
GET/v1/voice/flows/speed-to-leadSpeed-to-lead: submit-to-dial times (p50/p95) against the target, inbound time to answer, and recent leads with their attempts and outcomessettings:read

Examples

GET /v1/voice/calls/$ID/actions

What the voice agent did for the caller on a call: texts, booking confirmations, payment links, catalog answers, price checks and card redactions

curl -s "https://api.closefinch.com/v1/voice/calls/$ID/actions" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/calls/${id}/actions`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/voice/flows/calls

Calls the AI voice agent handled (newest first): who, routing, time to answer, outcome

curl -s "https://api.closefinch.com/v1/voice/flows/calls" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/calls`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/voice/flows/calls/$ID

One call: the routing decision, time to answer and to the first audio, disclosure, screening, transcript (withheld when the caller objected to recording), recording, tools, message, booking, outcome

curl -s "https://api.closefinch.com/v1/voice/flows/calls/$ID" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/calls/${id}`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/voice/flows/routing

Inbound routing per number, with who would answer right now

curl -s "https://api.closefinch.com/v1/voice/flows/routing" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/routing`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

PUT /v1/voice/flows/routing

Set how a number is answered (owner): AI always, or business hours to a ring group (all rung at once) with overflow to the AI after N seconds or when nobody is available; after hours and holidays the AI answers. Versioned

curl -s -X PUT "https://api.closefinch.com/v1/voice/flows/routing" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/routing`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/voice/flows/screening-preview

Check a screening line and hear what a screener would be told

curl -s -X POST "https://api.closefinch.com/v1/voice/flows/screening-preview" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/screening-preview`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/voice/flows/settings

Call-flow settings: outbound AI calls (off by default), speed-to-lead attempts, spacing and target, the screening line and its silence timeout, recording

curl -s "https://api.closefinch.com/v1/voice/flows/settings" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/settings`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

PUT /v1/voice/flows/settings

Change the call-flow settings (owner). Turning outbound AI calls on covers callbacks to people who consented on a form only; the screening line can be reworded, never made to hide that it's an AI

curl -s -X PUT "https://api.closefinch.com/v1/voice/flows/settings" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/settings`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/voice/flows/speed-to-lead

Speed-to-lead: submit-to-dial times (p50/p95) against the target, inbound time to answer, and recent leads with their attempts and outcomes

curl -s "https://api.closefinch.com/v1/voice/flows/speed-to-lead" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/voice/flows/speed-to-lead`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

Request and response schemas: https://www.closefinch.com/openapi.json. All resources: API reference.

Send feedback

Tell us what's broken, confusing or missing on this page, or an idea. It goes to the team that builds the product.

Please don't include passwords or card numbers.
Only to reply about this. Never added to any mailing list.