Developer-first voice platform · 2026

Every call, handled.

Recorded, transcribed, summarized & synced to your CRM — automatically. Or let AI agents make the calls. One API, every channel.

Developer-first

From an API call to a phone call in seconds

One REST API for AI agents, inbound & outbound, browser, bridge and click-to-call. Signed webhooks stream every event to your stack. Built to ship fast and scale.

  • One API for every channel
  • Signed webhooks & real-time events
  • Bring your own telephony, or all-inclusive billing
  • Go live in minutes, scale to millions of calls

1 — Place a call

curl -X POST https://api.phonevoice.ai/api/v1/calls/initiate \
  -H "Authorization: Bearer $PHONEVOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_phone_number": "+33612345678",
    "agent_id": 1533,
    "objective": "Qualify the lead, then book a demo"
  }'
const res = await fetch("https://api.phonevoice.ai/api/v1/calls/initiate", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PHONEVOICE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    recipient_phone_number: "+33612345678",
    agent_id: 1533,
    objective: "Qualify the lead, then book a demo",
  }),
});
const call = await res.json();
console.log(call.phone_call_id);
import os, requests

res = requests.post(
    "https://api.phonevoice.ai/api/v1/calls/initiate",
    headers={"Authorization": f"Bearer {os.environ['PHONEVOICE_API_KEY']}"},
    json={
        "recipient_phone_number": "+33612345678",
        "agent_id": 1533,
        "objective": "Qualify the lead, then book a demo",
    },
)
print(res.json()["phone_call_id"])
require "net/http"
require "json"

uri = URI("https://api.phonevoice.ai/api/v1/calls/initiate")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer #{ENV['PHONEVOICE_API_KEY']}"
req["Content-Type"] = "application/json"
req.body = {
  recipient_phone_number: "+33612345678",
  agent_id: 1533,
  objective: "Qualify the lead, then book a demo",
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts JSON.parse(res.body)["phone_call_id"]

2 — Get the result via signed webhook

{
  "event": "call.completed",
  "phone_call_id": "pc_8f2a91",
  "status": "completed",
  "duration_seconds": 142,
  "recipient_phone_number": "+33612345678",
  "summary": "Lead qualified — demo booked for Thursday at 2pm.",
  "transcript_url": "https://api.phonevoice.ai/api/v1/calls/pc_8f2a91/transcript",
  "structured_data": {
    "qualified": true,
    "appointment": "2026-06-12T14:00:00+02:00"
  }
}

Everything you need
to build voice agents.

A complete toolkit for demanding developers.

Ultra-Low Latency

Fluid conversations with less than 300ms latency thanks to our Speech-to-Speech infrastructure.

Latest Realtime AI Models

Access the latest AI voice models for unmatched understanding and voice generation.

BYO Carrier (Twilio/Vonage)

Connect your own Twilio or Vonage account. Keep your numbers and negotiated rates.

API-First & Webhooks

Integrate voice into your apps in a few lines of code. Full documentation and real-time webhooks.

Dashboard & Reporting

Track your KPIs, call times, costs, and resolution rates from a unified dashboard.

Live Visualization

Watch calls in real-time. See who is speaking, AI status, and actions in progress.

Enhanced Transcription

Access full call transcription with speaker identification and sentiment analysis.

Stereo Audio Export

Download high-quality stereo WAV recordings (User left channel, Agent right channel).

Talk to a live agent

Pick a use case and call an AI voice agent right from your browser — no signup.

Talk to an agent

Live interactive demo

Ready to give your apps a voice?

Create your developer account and place your first call in minutes.

Create Account