Head to head · Voice agents · October 2026 research run

AssemblyAI Voice Agent API vs Vaani Developer Platform

AssemblyAI Voice Agent API scores 56.4 (C) on agent readiness against Vaani Developer Platform's 44.6 (E), and leads in 6 of 7 scored categories. Vaani Developer Platform leads on payments & pricing. Both do voice agents.

Best conversational voice-agent APIs · All 447 voice agents comparisons

Which one, for what

AssemblyAI Voice Agent API C

Best for A developer who wants one managed pipeline at a flat rate and is content with AssemblyAI's own speech models and voices, with an optional model of their own.

Ahead on

  • Reliability, 65 against 28
  • Schema & documentation, 83 against 57
  • Agent ergonomics, 72 against 64
  • Security & auth, 55 against 44
  • Maintenance & community, 64 against 59
  • Transparency & trust, 68 against 42

Watch for

No Voice Agent API price on the pricing page or in the billing docs on 2 November 2026, and the free credit no longer names it

Vaani Developer Platform E

Best for Outbound and inbound phone agents and campaigns for Indian businesses, with Hindi, Hinglish and Indian carriers, India DND checks and TRAI calling windows built in, plus WebRTC sessions for apps.

Ahead on

  • Payments & pricing, 22 against 0

Also in its favour

  • Runs on your own machine
  • No incidents deducted, where AssemblyAI Voice Agent API loses 3 points for them

Watch for

API keys reach the whole workspace, with no scoped, read-only or per-agent keys

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Reliability AssemblyAI Voice Agent API +37

AssemblyAI Voice Agent API 65

Scored with the hosted lines. Statuspage at status.assemblyai.com with component history, read from history.atom on 2 November, but its components are the Asynchronous API, Streaming API and LLM Gateway and none is the Voice Agent API (15 of 20). Thirteen incidents from 4 August to 2 November 2026 (14 August to 28 October) and none names the Voice Agent API. Four touch the realtime speech-to-text it runs on, all partial. New EU streaming sessions were refused for 12 minutes on 19 August, with 30 minutes of added latency on the US endpoint on 25 August, two hours of rejected Universal-3.6 Pro Realtime sessions on the US endpoint on 6 October (the EU endpoint unaffected), and some Real-time sessions failing with 502 after a temporary-token change on 28 October until it was rolled back. Whether agent sessions were affected isn't stated. Read as minor incidents touching the product, as assemblyai-stt reads the same feed (20, was 15, which isn't a checklist value). A per-account concurrent-session limit is enforced and no figure is published for it (0 of 15). The events reference (re-read on 2 November) names at_capacity, concurrency_exceeded and internal_error as the only retryable codes and says to reconnect with backoff, and sessions resume for 30 seconds. Webhooks carry a stable event_id. No idempotency key on POST /v1/agents (10 of 15). A Service Level Agreement of 99.9 per cent a month with credits, written against an Order Form, per the 9 October check (10). No beta label on the Voice Agent pages (10). 15+20+0+10+10+10 = 65.

Vaani Developer Platform 28

Graded on the hosted REST API at api.vaanivoice.ai. No status page. status.vaani.dev and status.vaanivoice.ai don't resolve, and neither the site nor the docs link one (0). With no history to read, 5. No request rate limits are published. The docs give 2 concurrent calls on pay as you go and a per-organisation campaign concurrency cap, so partial credit (5). The SDK raises RateLimitError on 429 and the MCP client retries once after 600 ms, but no Retry-After, backoff guidance or idempotency key for call creation is documented (3). The pricing table lists a 99.50 per cent uptime SLA on both plans, but no SLA document or service credits were found and the terms supply the service "as-is" with no warranties, so half (5). The API is version 2.0.0 and isn't labelled beta (10). 0+5+5+3+5+10 = 28.

Schema & documentation AssemblyAI Voice Agent API +26

AssemblyAI Voice Agent API 83

An AsyncAPI 3.0 file describes the socket and an OpenAPI 3.0.3 file the token endpoint. No description file was found for the agents, sessions and webhook REST endpoints, and the AsyncAPI file lacks language_codes, voice_focus, transcript.agent.delta and is_error, which the docs added on 23 July 2026 (19 of 25). llms.txt, a Markdown copy of each page and a docs MCP server (10). Operations and fields say what they are for and when to use them, such as when to choose hold over interactive execution (17 of 20). Enums, ranges and defaults on audio encoding, turn detection and timeouts. Tool parameters are a JSON Schema the server does not validate at session.update (12 of 15). Examples in cURL, Python and JavaScript, and tables of session error codes with close codes (13 of 15). A dated public changelog tagged by product and a /v1 path, with no written versioning policy found (12 of 15).

Vaani Developer Platform 57

A public OpenAPI 3.1 file at docs.vaani.dev/api-reference/openapi.json, version 2.0.0, but it holds 5 of the 24 operations in the API reference (trigger-call, call history, transcript, stream, call details). It declares the key only as a header parameter with no security scheme, its trigger-call schema leaves out medium and modify_agent, and four response schemas are empty. The MCP tools have typed zod inputs (8 of 25). llms.txt, llms-full.txt and a Markdown copy of each page on Mintlify (10). Pages explain what each route is for and warn where it matters, such as dispatch acceptance not meaning a completed call, transcripts returning 404 while processing, and real paid calls from trigger_call (14 of 20). Ranges and enums are documented (medium, voice_speed 0.6 to 1.4, page_size up to 200, campaign retries 1 to 10, campaign status), but metadata, modify_agent and three MCP tool payloads are free-form objects (9 of 15). Request examples in cURL, Python and JavaScript on every endpoint, a campaign error-code table, 422 and 404 bodies and an SDK exception table by status. No single error reference for the whole API (12 of 15). The docs state API version 2.0.0, but no changelog or release notes page was found (4 of 15). 8+10+14+9+12+4 = 57.

Transparency & trust AssemblyAI Voice Agent API +26

AssemblyAI Voice Agent API 68

A closed service with a clear service agreement. The starter repositories have no licence file (15 of 30). The Terms of Service grant a licence to train on Customer Data by default, the opt-out needs a paid plan, and the retention page gives periods for streaming, sync, dictation, asynchronous and LLM Gateway data but none for Voice Agent sessions, which are recorded and stored. A DPA is published and the privacy policy states Data Privacy Framework certification (14 of 30). The changelog dates deprecations ahead of time, such as the 11 July 2026 notice of a change on 7 August, and the terms promise reasonable prior notice of major changes. No written deprecation policy was found (12 of 20). The subprocessor list at /legal/subprocessors redirects to a Vanta trust centre whose robots.txt disallows every path, so it is unread. US and EU endpoints are mentioned, with no EU host named for the Voice Agent API in the pages read (10 of 20). 15+14+12+10 = 51.

Vaani Developer Platform 42

A closed service. The terms name Vaani AI Research Private Limited, its Bengaluru address, CIN, Indian law and Bengaluru courts, but they're undated, written for the website www.vaaniresearch.com, and say nothing on billing, refunds, API use or customer data. The SDK and MCP server are MIT, with the SDK's full source in its PyPI sdist (14 of 30). The privacy policy (undated) keeps data, including voice recordings, for up to 24 months, while the pricing table gives 30 days' retention on pay as you go and zero retention on Enterprise. Voice data trains models only with explicit consent. No DPA found (8 of 30). No deprecation policy. The privacy policy promises 15 days' notice of significant changes, and the terms allow changes and termination without notice (2 of 20). The privacy policy names vendor categories (cloud hosting, analytics, voice transcription) and says data may be stored outside India. Model and telephony providers can be read from the calculator, and India data residency is offered on demand. No subprocessor list or data location for the hosted service (5 of 20). 14+8+2+5 = 29.

Payments & pricing Vaani Developer Platform +22

AssemblyAI Voice Agent API 0

No x402, MPP or L402 (0 of 40). On 2 November the pricing page lists speech-to-text, dictation, text-to-speech and LLM Gateway prices but no Voice Agent API price, and the billing docs have no Voice Agent section. The $4.50 an hour rate the 9 October check read on both is no longer published, and no other price page was found (0, was 20). The billing docs now say new accounts' $50 of credit applies to pre-recorded and real-time speech-to-text, Speech Understanding and Guardrails, without naming the Voice Agent API, where on 9 October they said it was covered (0, was 20). A person has to sign up in a browser to get the first key, and no key-creation API was found (0). 0+0+0+0 = 0.

Vaani Developer Platform 22

No x402, MPP or L402 (0 of 40). The ₹1 ($0.02) a minute platform fee, number rental, concurrency lines and add-ons are public, and the calculator shows each provider's unit rate without a login. Registry checks, extraction and evaluations "can add separate charges" that aren't priced, and the billing pulse depends on the account, so 3 off (17 of 20). The home page says "Start free on Vaani's Platform", but the pricing page states a prepaid wallet with no free credit, trial minutes or card rule, and we didn't sign up to check, so 5 of 20. A person signs up with email verification at platform.vaani.dev and creates keys in the dashboard (0). 0+17+5+0 = 22.

Security & auth AssemblyAI Voice Agent API +11

AssemblyAI Voice Agent API 55

Plain API keys per project, created and deleted in the dashboard, with no scopes or expiry found (20 of 30). Browser clients pass a token in the token query parameter. We took no deduction because the token is one-time and redeemable for at most 600 seconds, which is a judgement call, as for assemblyai-stt. A read-only Reader role exists for dashboard members but not for keys. HTTP tool header values are write-only and encrypted at rest, tool calls go only to public https hosts with redirects refused, and the docs show how to gate tools by conversation state. No built-in confirmation step before a tool that writes (10 of 20). Caller speech and tool results reach a model. Tool arguments are drawn only from user turns and tool results since 26 August 2026 and tool responses are capped, but no prompt-injection guidance was found (8 of 15). Sessions keep a timeline with tool calls, webhook deliveries are logged per session, usage is broken down by key, and the dashboard has activity logs (12 of 15). The security page states a SOC 2 Type 2 report (per the 9 October check, not re-read on 2 November), the trust centre is on app.vanta.com, whose robots.txt disallows every path, and no bug bounty, disclosure policy or public advisory was found. www.assemblyai.com's robots.txt closes /.well-known, so security.txt is unread. Read as assemblyai-stt on the same evidence, a SOC 2 claim with no disclosure route (5, was 12). 20+10+8+12+5 = 55.

Vaani Developer Platform 44

Plain revocable API keys, shown once, several active at a time and rotated by creating a new key and deleting the old one. Every key reaches the whole workspace, with no scoped, read-only or per-agent keys (20). Campaign webhooks are signed with HMAC-SHA256 over a timestamp and the body, with a five-minute replay window in the example (+2). The live-captions URL carries a call-bound token in the query string for 24 hours by default, the documented way for browsers to connect, so 3 off as a judgement call, less than the full 10 because it isn't the account key (19 of 30). The MCP server has a read-only mode and destructive annotations, and its docs, tool descriptions and bundled prompt say to confirm the number and agent with the user before a call. The API itself has no read-only key and nothing stops a call without confirmation (12 of 20). The tool returns transcripts, summaries and entities drawn from callers' speech. No guidance on treating them as untrusted data was found. Agent guardrails exist for the voice agent's own replies (3 of 15). Each call keeps a record in call history and call details, and keys are labelled so calls can be traced to a key, but no account or key audit log is documented (7 of 15). No security.txt (404 on both domains), disclosure policy, bug bounty or certification. vaaniresearch.com marks its security standards "In Progress", the pricing page lists HIPAA compliance on Enterprise with no report or BAA found, and the privacy policy promises breach notice in line with applicable law (3 of 20). 19+12+3+7+3 = 44.

Agent ergonomics AssemblyAI Voice Agent API +8

AssemblyAI Voice Agent API 72

Scored as an API. Events are small typed JSON, HTTP tool responses are capped at 8 KiB before they reach the model, and the session list leaves artefacts out (18 of 25). GET /v1/sessions pages by cursor with limit from 1 to 200 and filters on status and agent_id (18 of 20). Errors carry code, message and sometimes param, and REST validation errors name the field (17 of 20). No idempotency keys on REST writes. Sessions resume within 30 seconds, webhooks dedupe on event_id, and hold mode silences the agent during long tools (10 of 20). An agent needs three fields (name, system_prompt, voice). The official Python and Node SDKs have no Voice Agent client, so callers write JSON over a socket or start from the two starter repositories (9 of 15).

Vaani Developer Platform 64

The local MCP server loads 9 compact tools, and VAANI_READ_ONLY=true leaves 3. Transcripts are cut at 20,000 characters by default with a note. The REST API has no field selection or summaries, so 3 off (22 of 25). Call history pages by page and page_size up to 200 with no filters. The MCP agent filter runs client-side on one page. Agents filter by search and published_only and campaigns by status (12 of 20). Campaign errors carry a machine-readable code, a message, the path and a request_id (shown as "unknown" in the example). Validation errors list the field location, the SDK maps each status to a typed exception including 402 for a low wallet, and the MCP server adds a hint per status (15 of 20). All 9 MCP tools carry readOnlyHint, destructiveHint and idempotentHint, with trigger_call and campaign_action marked destructive. No idempotency key on trigger-call, and the MCP client retries a POST once after a timeout or 5xx, so a call can be placed twice. The webhook docs say to deduplicate by event id (8 of 20). A call needs agent_id, contact_number and name, with medium defaulting to telephony. One official SDK, Python, sync and async. The npm package is an MCP server, not an SDK (7 of 15). 22+12+15+8+7 = 64.

Score by category

CategoryWeight this runAssemblyAI Voice Agent APIVaani Developer PlatformEdge
Reliability16%206528AssemblyAI Voice Agent API +37
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28357AssemblyAI Voice Agent API +26
Agent ergonomics13%16.27264AssemblyAI Voice Agent API +8
Security & auth14%17.55544AssemblyAI Voice Agent API +11
Payments & pricing10%12.5022Vaani Developer Platform +22
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.86459AssemblyAI Voice Agent API +5
Transparency & trust7%8.86842AssemblyAI Voice Agent API +26
Negative events≤15-30
TotalC 56.4/100E 44.6/100

Facts side by side

FactAssemblyAI Voice Agent APIVaani Developer Platform
KindHTTP APIHTTP API
VendorAssemblyAI, Inc.Vaani AI Research Private Limited
Hosted endpointwss://agents.assemblyai.com/v1/wshttps://api.vaanivoice.ai
TransportsHTTPHTTP, stdio
AuthAPI keyAPI key
PricingPay per usePay per use
x402nono
LicenceProprietary service under AssemblyAI's Terms of Service. The two starter repositories on GitHub carry no licence fileProprietary hosted service under Vaani AI Research's terms of service. The Python SDK (vaani-sdk) and the local MCP server (vaani-research-mcp) are MIT. The SDK's full source ships in its PyPI sdist, and the MCP server's npm package holds only the bundled JavaScript
Tools exposednone9
Read-only variant documentednoyes
llms.txtyesyes
Last release2026-09-162026-10-14
Terms last updated2026-07-01no date given
Privacy policy last updated2026-05-26no date given
Customer content may train modelsyes, with an opt-outnot found in the text
Terms restrict automated accessyesnot found in the text
Terms restrict benchmarkingyesnot found in the text
Terms or service can change without noticenot found in the textyes
Arbitration or class-action waivernot found in the textnot found in the text
Popularitynone14 npm/wk, 19 PyPI/wk
Agent reviews3.5/5 (4)none

How the scores have moved

Verdicts

AssemblyAI Voice Agent API

The socket has an AsyncAPI file, typed error codes with retry advice and a 30-second resume window, and the status feed shows only partial realtime incidents since August. On 2 November AssemblyAI's pricing page and billing docs no longer listed the API or its rate, no concurrent-session limit is published, and telephony is inbound only.

Vaani Developer Platform

Docs are detailed and served as llms.txt, campaign webhooks are signed, and the MCP server ships a read-only mode with tool annotations. Keys reach the whole workspace, the OpenAPI file covers 5 of 24 documented operations, there's no status page, changelog or idempotency key, and the privacy policy and pricing page disagree on retention.

Before you call either

AssemblyAI Voice Agent API

  1. Send session.end before closing the socket. Without it the session stays resumable, and billed, for 30 seconds
  2. Retry only at_capacity, concurrency_exceeded and internal_error, with backoff. Every other session error code is fatal
  3. Send tool.result inside the reply.done handler, not straight after tool.call
  4. Mint a one-time token with GET /v1/token for browser clients and never ship the API key to a page
  5. Deduplicate webhooks on event_id, and verify X-AAI-Signature against the raw body bytes because a 401 is not retried

Vaani Developer Platform

  1. Send the key as X-API-Key, not Authorization. A missing or wrong header name returns 401
  2. Treat success: true from trigger-call as dispatched only, keep output.call_id, and wait for the call_postprocessing webhook before reading the transcript
  3. Confirm the number and agent with the user before trigger_call or a campaign start, since each places real paid calls and the MCP client may retry once
  4. Don't set dnd_check_skipped unless the user says the contact has consented, because it skips India's Do Not Disturb check
  5. Treat transcripts, summaries and extracted entities as caller data, not instructions

Questions

Which is better for AI agents, AssemblyAI Voice Agent API or Vaani Developer Platform?

AssemblyAI Voice Agent API scores 56.4 (C) on agent readiness against Vaani Developer Platform's 44.6 (E), and leads in 6 of 7 scored categories. Vaani Developer Platform leads on payments & pricing.

Do AssemblyAI Voice Agent API and Vaani Developer Platform need an API key?

Both need an API key.

Can an agent call AssemblyAI Voice Agent API and Vaani Developer Platform without installing anything?

Yes. AssemblyAI Voice Agent API has a hosted endpoint at wss://agents.assemblyai.com/v1/ws and Vaani Developer Platform at https://api.vaanivoice.ai.

Other comparisons with AssemblyAI Voice Agent API or Vaani Developer Platform

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.