LIVEVoice agent API · /api/v1

One POST,
Talkif is on the phone.

POST /accounts/{accountId}/calls → a live AI conversation.

Build and publish a flow, then drive everything over the REST API: start calls, run campaigns, stream call state over server-sent events, and fetch the transcript, recording and per-call metrics when it ends.

POST/accounts/{accountId}/calls
{
  "toNumber": "+90••••4218",
  "fromNumber": "+90••••1101",
  "flowId": "550e84…",
  "providerId": "550e84…"
}
Response
call createdqueued
EYLead · Ece Y.website · pricing form0:02
Talkif AI · 0:02
Hi, this is Talkif calling on behalf of Helena Education. You just left your details on our website — got a moment?
Lead · 0:08
Yes, I want to ask about pricing for the master's programs.
qualifieddemo · 15:30300 ms response
SSE · call-status
in progresslive
SSE · call-ended
completedok
Artifacts
transcript · recording · metrics
02 / Quickstart

From API key to a live call in three steps.

Build and publish a flow in the dashboard, then drive it entirely over the REST API. One POST starts the call; the transcript is a GET away.

01

Create a scoped API key

In the dashboard, create a key with exactly the scopes you need — calls, flows, campaigns, contacts, dnc, analytics. Revoke it any time; usage is tracked per key.

02

POST your first call

Point a published flow at a destination number from a number you own. Talkif queues, assigns a bot, and dials.

03

Read the result

Follow the call live over server-sent events (call-status, call-ended), then fetch the transcript and recording from the calls API.

Test flows from the browser with WebRTC calls — no phone number burned while you iterate.
POST /api/v1/accounts/{accountId}/calls
curl -X POST \
  https://api.talkif.ai/api/v1/accounts/$ACCOUNT_ID/calls \
  -H "Authorization: Bearer $TALKIF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "toNumber":   "+15551234567",
    "fromNumber": "+15559876543",
    "flowId":     "550e8400-e29b-41d4-a716-446655440000",
    "providerId": "550e8400-e29b-41d4-a716-446655440001"
  }'
queuedBearer · scoped API keyfull reference at docs.talkif.ai
03 / The call loop

What happens between your POST and the transcript.

The whole loop streams — transcription, generation and speech run concurrently, so the agent answers like a person, not like a queue.

01
API request
REST
Validated, DNC-checked, callable-hours-checked before anything dials.
02
Queue
priority
Capacity-managed queue; a pre-warmed bot claims the call atomically.
03
Dial
telephony
Platform numbers, your Twilio account, or your SIP carrier.
04
STT
streaming
Streaming transcription with voice-activity and turn detection.
05
LLM
streaming
Your flow drives the prompt, branching and tool calls per node.
06
TTS
streaming
Streaming neural voices; pick the voice per flow.
07
Results
API/SSE
Structured outcome, transcript, recording and per-call metrics.
2 regions
active-active · EU + US
10+ providers
LLM · STT · TTS, switch per flow
100+ languages
per-flow language + voice
per second
usage-based billing, public rates
04 / API + events

Everything the dashboard does, the API does.

Account-scoped REST under /api/v1, authenticated with scoped API keys. Server-sent events stream call, campaign and billing state as it changes.

REST endpoints (selection)full reference in docs
POST/accounts/{accountId}/callsStart an outbound call on a published flow.
GET/accounts/{accountId}/calls/{callId}/transcriptFetch the transcript for a finished call.
POST/accounts/{accountId}/flows/{flowId}/publishPublish a flow version for calling.
POST/accounts/{accountId}/campaignsCreate a bulk outbound campaign.
POST/accounts/{accountId}/campaigns/{campaignId}/startStart, pause and resume campaigns.
POST/accounts/{accountId}/contacts/importImport contacts from CSV.
POST/accounts/{accountId}/dnc/checkCheck a number against your do-not-call list.
GET/accounts/{accountId}/analytics/performance-summaryLatency, talk-ratio and outcome analytics.
Server-sent eventsGET /api/v1/sse/connect
call-createdA call entered the system, with full call data.
call-statusNon-terminal status updates while the call runs.
call-endedTerminal state: completed, failed, busy, no-answer, canceled.
campaign-progressLive progress as a campaign works through its contacts.
schedule-executedA scheduled run fired.
balance-updatedAccount balance changed — billed per second, live.
payment-requiredBalance too low to continue; auto-recharge if configured.
POST/api/v1/accounts/{accountId}/callsAuthorization: Bearer <scoped key>
{
  "toNumber":    "+15551234567",
  "fromNumber":  "+15559876543",
  "flowId":      "550e8400-e29b-41d4-a716-446655440000",
  "flowVersion": "1.0.1",
  "providerId":  "550e8400-e29b-41d4-a716-446655440001",
  "contactId":   null,
  "campaignId":  null,
  "metadata":    { "crm_ref": "opp_4412" }
}
05 / Flows

Build visually. Version explicitly. Call by version.

Flows are built in the visual builder and published as immutable versions. The API pins a call to an exact flowVersion, so a mid-campaign edit never changes calls already in flight.

published flow · runtime shapePOST /flows/{flowId}/publish
{
  "initial_node": "greeting",
  "nodes": {
    "greeting": { "role_message", "task_message", "functions" },
    "qualify":  { …transitions, tool calls, webhooks… }
  },
  "services": {
    "llm", "stt", "tts" // provider + model + voice, per flow
  }
}
06 / Observability

Every call is measured. Nothing is a black box.

Each call carries structured performance metrics, a transcript and a recording. The analytics API aggregates latency, outcomes, talk ratio and cost — the same data the dashboard charts.

per-call metricsGET /analytics/performance-summary
first_speech_mstime to the agent’s first wordper call
turn_countconversation turnsper call
interrupted_turnsbarge-ins handledper call
function_call_counttool/webhook calls made by the flowper call
user/bot_speech_secstalk-time splitper call
prompt/completion_tokensLLM usage behind the cost line itemsper call
p50 / p95 latencyaggregated across callsanalytics
cost line itemsper-component cost of every callbilling
Replay
audio + transcript
0:31/ 1:31
Outcomes
call-outcomes analytics
completedno-answerbusyby flow · by day
Function calls
per-function analytics
countavg durationby function name
07 / Guardrails

Enforced in the platform, not promised in a PDF.

Compliance is code: the DNC check and callable-hours check run before any call dials, and retention runs whether you remember it or not.

Scoped API keys
per-resource scopes
Read/write enforced per scope. Usage and errors tracked per key; revoke instantly.
Do-not-call list
checked before every dial
Account-scoped DNC with bulk import and a pre-dial check endpoint. Hard block.
Callable hours
timezone-aware
Destination timezone detected from the number; calls outside the window are refused.
Webhook signing
shared-secret HMAC
Verify the signature header on everything Talkif sends you. Docs cover the recipe.
Call data retention
configurable per account
PII scrubbed from call records after your retention window.
Recording retention
7–365 days
Recordings deleted on schedule, separate from call-data retention.
Log redaction
phone + email masked
PII never lands in platform logs.
Billing audit
immutable
Charges and cost line items are append-only — auditable to the second.
08 / AI agents

Machine-readable, so LLMs and crawlers classify Talkif correctly.

The public surfaces ship structured entrypoints an agent can read without scraping marketing copy.

GET STARTED$5 starting credit on signup · no subscription

Build the flow. POST the call.

Sign up, create a scoped API key, and make your first call — test it from the browser over WebRTC before you spend a cent on telephony.