Free every month: 500 minutes on any model, no card needed.Start free

API reference

Everything the dashboard does is available over HTTPS. Authenticate with a workspace API key from the Keys page; keys carry scopes (agents:read, agents:write, calls:read, calls:write, numbers:write). Base URL https://voiceflint.com.

curl -H "Authorization: Bearer vf_live_..." https://voiceflint.com/api/v1/agents

Agents

List agents

GET /api/v1/agents

Returns every agent in the workspace with its stack, region and settings.

Create an agent

POST /api/v1/agents

Start from a preset (balanced, multilingual, lowest-latency, lowest-cost, highest-quality, speech-to-speech) or pass an explicit stack of catalog model ids.
curl -X POST https://voiceflint.com/api/v1/agents \
  -H "Authorization: Bearer vf_live_..." -H "content-type: application/json" \
  -d '{"name":"Front desk","systemPrompt":"You book appointments for Acme Dental.","preset":"balanced","region":"us-east","tools":[{"name":"book","description":"Book a slot","parameters":{"type":"object","properties":{"day":{"type":"string"}},"required":["day"]},"url":"https://example.com/book"}]}'

Calls

Place an outbound call

POST /api/v1/calls

Dials a number from one of your numbers with an outbound trunk. Refused when outbound is off, the number is on your do-not-call list, it is outside the local calling window, or the 24-hour frequency cap is reached.
curl -X POST https://voiceflint.com/api/v1/calls -H "Authorization: Bearer vf_live_..." -H "content-type: application/json" \
  -d '{"agentId":"<uuid>","to":"+14155550123","metadata":{"crmId":"42"}}'

List calls

GET /api/v1/calls?agentId=&limit=

Recent calls with status, duration, cost summary and latency percentiles.

Get a call

GET /api/v1/calls/:id

The full receipt (one line per model at list price, the managed-key fee, telephony, platform), the per-turn latency waterfall and the transcript.

Erase a call

DELETE /api/v1/calls/:id

Deletes transcript, recording and phone numbers for a call (data-subject requests). Billing totals are kept.

Numbers

List numbers

GET /api/v1/numbers

Numbers, their routing agent and whether an outbound trunk exists. Numbers are added under Numbers in the dashboard.

Webhooks

Add an endpoint under Keys. Each delivery is a JSON POST signed with HMAC-SHA256 of the raw body using your signing secret.

POST https://example.com/voiceflint
X-Voiceflint-Event: call.completed
X-Voiceflint-Signature: sha256=<hex hmac>

{"event":"call.completed","createdAt":"2026-09-09T12:00:00Z","data":{"id":"...","status":"completed","durationSec":252,"cost":{"total":0.1867,"charged":0.0},"latency":{"e2eP50":740,"e2eP95":910},"transcript":[{"role":"user","text":"..."}]}}

Web widget

Enable the widget on an agent to get a public key, then drop one script tag on any page. Visitors talk to the agent over WebRTC; calls appear in your dashboard with the same receipt.

<script src="https://voiceflint.com/widget.js" data-agent="pk_..." data-label="Talk to us"></script>

Or mint tokens yourself from a server with POST /api/public/token and connect with livekit-client.