Vapi website screenshot

Vapi

Vapi is a San Francisco-based voice AI platform that lets developers build real-time, low-latency voice agents over phone, web, and SIP. It orchestrates three modular components — a transcriber (STT), an LLM, and a voice (TTS) — into a sub-700ms voice-to-voice pipeline, with first-class support for tools/function calling, multi-agent squads, outbound campaigns, persistent sessions, structured outputs, recording artifacts, evaluation scorecards, and a full REST API plus official SDKs in TypeScript, Python, C#, Ruby, PHP, and client SDKs for Web, React Native, iOS, and Python. Vapi is a Y Combinator company.

15 APIs 16 Features
AIVoice AIVoice AgentsConversational AITelephonyReal-TimeTranscriptionText-to-SpeechLLMAgentsMCP

APIs

Vapi Assistants API

Create and manage Vapi voice assistants. An assistant bundles a transcriber, LLM, voice (TTS), server URL, tools, first message, system prompt, voicemail handling, and call anal...

Vapi Calls API

Create outbound calls, accept inbound calls, list and filter calls, fetch call status and analysis, delete call data, and download per-call artifacts including mono and stereo r...

Vapi Phone Numbers API

Buy, BYO-import, and manage phone numbers from Vapi (vapi.phoneNumber), Twilio, Telnyx, Vonage, and SIP trunks. Attach an assistant or squad to a number for inbound routing and ...

Vapi Squads API

Compose multiple assistants into a Squad — a multi-agent workflow where the active assistant can hand off a live call to another assistant in the squad based on tools, intents, ...

Vapi Tools API

Define and manage Tools (function tools, transfer-call tools, end-call tools, DTMF tools, hangup tools, voicemail tools, MCP tools, query tools, Make/Zapier tools, knowledge-bas...

Vapi Files API

Upload, list, retrieve, update, and delete files used as inputs to knowledge bases and other assistant-side artifacts.

Vapi Chats API

Text-based conversation surface that reuses the same assistant configuration as voice calls, including an OpenAI-compatible /chat/responses endpoint for drop-in replacement of O...

Vapi Sessions API

Stateful sessions that persist conversation history across calls and chats so an assistant can pick up where the customer left off.

Vapi Campaigns API

Outbound calling campaigns — upload a customer list and schedule batched outbound calls against one or more assistants and phone numbers with concurrency and retry policies.

Vapi Analytics API

Run aggregate analytics queries across calls — group by assistant, time bucket, status, end-reason, success evaluation, cost, and duration — for dashboards and chargeback report...

Vapi Insight API

Define and run Insight queries across call data, including preview-before-save and on-demand runs, to extract structured signals from conversation transcripts.

Vapi Observability Scorecard API

Define LLM-graded scorecards that automatically evaluate every call against your defined success criteria and produce structured scores for trend analysis and regression detection.

Vapi Eval API

Create test suites that simulate end-user behavior against an assistant, run them on demand, and inspect per-run pass/fail and judge output for regression testing of voice agents.

Vapi Structured Outputs API

Define JSON-Schema-driven structured outputs that the assistant must populate from a call, plus an on-demand /structured-output/run endpoint to backfill outputs against an exist...

Vapi Provider Resources API

Generic CRUD over provider-side resources (e.g. ElevenLabs voices, Cartesia voices, Deepgram custom models) so they can be created and managed through Vapi without leaving the p...

Collections

Vapi Calls API

POSTMAN

Vapi Chats API

POSTMAN

Vapi Eval API

POSTMAN

Vapi Files API

POSTMAN

Vapi Squads API

POSTMAN

Vapi Tools API

POSTMAN

Arazzo Workflows

Vapi Assistant Outbound Call End to End

Create an assistant, provision a Vapi phone number, place an outbound call, and poll until it ends.

ARAZZO

Vapi Build a Multi-Assistant Squad

Create two specialized assistants and assemble them into a squad that can hand calls between them.

ARAZZO

Vapi Outbound Call Then Cost Analytics

Place an outbound call, poll it to completion, then query call analytics for cost and duration.

ARAZZO

Vapi Create and Verify Assistant

Create a voice AI assistant and read it back to confirm it was provisioned.

ARAZZO

Vapi Create Function Tool and Attach to Assistant

Create a custom function tool and attach it to a freshly created assistant.

ARAZZO

Vapi File-Backed Knowledge Base Assistant

Upload a file, build a query tool knowledge base from it, and create an assistant that uses it.

ARAZZO

Vapi Import Twilio Number and Bind Assistant

Create an assistant and import an existing Twilio number that routes inbound calls to it.

ARAZZO

Vapi Squad Outbound Call

Build a two-assistant squad, place an outbound call to it, and poll until the call ends.

ARAZZO

Pricing Plans

Vapi Ai Plans Pricing

4 plans

PLANS

Rate Limits

Vapi Ai Rate Limits

4 limits

RATE LIMITS

FinOps

Features

Sub-700ms voice-to-voice latency orchestration layer
Transcriber + LLM + voice (TTS) modular pipeline with multi-provider choice
Bring your own provider keys to pay providers at cost
Assistants, Squads (multi-agent handoff), Sessions (persistent state)
Inbound and outbound calling over Twilio, Telnyx, Vonage, vapi.phoneNumber, and SIP
Campaigns for batched outbound calling with concurrency/retry
Tools (function, transfer-call, end-call, DTMF, hangup, voicemail, MCP, query, Make, Zapier, GHL, KB)
Server URL webhooks for real-time call events and function execution
Per-call mono/stereo/customer/assistant/video recordings, PCAP packet captures, call logs
Analytics, Insights, Observability Scorecards, and Evals for production monitoring and regression testing
Structured Outputs for JSON-schema-constrained extraction from calls
Chats API (text channel) and OpenAI-compatible /chat/responses
Official SDKs - server (TS, Python, C#, Ruby, PHP) and client (Web, Python, React Native, iOS, HTML)
Vapi MCP Server for Model Context Protocol integration
HIPAA and Zero Data Retention add-ons; SOC2 and PCI on Scale plan
$0.05/min Vapi orchestration fee on Build plan; model and voice costs passed at cost

Event Specifications

Vapi Realtime API (WebSocket Transport + Server URL Events)

AsyncAPI description of Vapi's realtime surfaces: 1. The WebSocket Transport (`wss://api.vapi.ai/{callId}/transport`) used to stream binary audio and JSON control messages to an...

ASYNCAPI

Semantic Vocabularies

Vapi Ai Context

0 classes · 12 properties

JSON-LD

API Governance Rules

Vapi API Rules

17 rules · 11 errors 6 warnings

SPECTRAL

JSON Structure

Vapi Assistant Structure

30 properties

JSON STRUCTURE

Vapi Call Structure

30 properties

JSON STRUCTURE

Vapi Campaign Structure

20 properties

JSON STRUCTURE

Vapi Chat Structure

18 properties

JSON STRUCTURE

Vapi Eval Structure

8 properties

JSON STRUCTURE

Vapi File Structure

18 properties

JSON STRUCTURE

Vapi Insight Structure

7 properties

JSON STRUCTURE

Vapi Phone Number Structure

16 properties

JSON STRUCTURE

Vapi Scorecard Structure

8 properties

JSON STRUCTURE

Vapi Session Structure

20 properties

JSON STRUCTURE

Vapi Squad Structure

7 properties

JSON STRUCTURE

Vapi Structured Output Structure

13 properties

JSON STRUCTURE

Vapi Tool Structure

12 properties

JSON STRUCTURE

Example Payloads

Vapi Assistant Example

8 fields

EXAMPLE

Vapi Call Example

8 fields

EXAMPLE

Vapi Campaign Example

8 fields

EXAMPLE

Vapi Chat Example

8 fields

EXAMPLE

Vapi Eval Example

8 fields

EXAMPLE

Vapi File Example

8 fields

EXAMPLE

Vapi Insight Example

7 fields

EXAMPLE

Vapi Phone Number Example

8 fields

EXAMPLE

Vapi Scorecard Example

8 fields

EXAMPLE

Vapi Session Example

8 fields

EXAMPLE

Vapi Squad Example

7 fields

EXAMPLE

Vapi Tool Example

8 fields

EXAMPLE

Resources

🔗
PostmanWorkspace
PostmanWorkspace
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
OpenAPI
OpenAPI
🚀
GettingStarted
GettingStarted
📝
Signup
Signup
🟢
StatusPage
StatusPage
💰
Pricing
Pricing
🔗
Forums
Forums
📰
Blog
Blog
📄
ChangeLog
ChangeLog
👥
GitHubOrganization
GitHubOrganization
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
💻
CodeExamples
CodeExamples
🔗
Webhooks
Webhooks
🔗
Webhooks
Webhooks
🔗
AsyncAPI
AsyncAPI
🔗
TrustCenter
TrustCenter
📜
PrivacyPolicy
PrivacyPolicy
📜
TermsOfService
TermsOfService
📜
TermsOfService
TermsOfService
🔗
Twitter
Twitter
🔗
LinkedIn
LinkedIn
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Vapi Tools API
  version: '1.0'
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Tools
    type: folder
  items:
  - info:
      name: List Tools
      type: http
    http:
      method: GET
      url: https://api.vapi.ai/tool
      params:
      - name: limit
        value: ''
        type: query
        description: This is the maximum number of items to return. Defaults to 100.
      - name: createdAtGt
        value: ''
        type: query
        description: This will return items where the createdAt is greater than the specified value.
      - name: createdAtLt
        value: ''
        type: query
        description: This will return items where the createdAt is less than the specified value.
      - name: createdAtGe
        value: ''
        type: query
        description: This will return items where the createdAt is greater than or equal to the specified value.
      - name: createdAtLe
        value: ''
        type: query
        description: This will return items where the createdAt is less than or equal to the specified value.
      - name: updatedAtGt
        value: ''
        type: query
        description: This will return items where the updatedAt is greater than the specified value.
      - name: updatedAtLt
        value: ''
        type: query
        description: This will return items where the updatedAt is less than the specified value.
      - name: updatedAtGe
        value: ''
        type: query
        description: This will return items where the updatedAt is greater than or equal to the specified value.
      - name: updatedAtLe
        value: ''
        type: query
        description: This will return items where the updatedAt is less than or equal to the specified value.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Tools
  - info:
      name: Create Tool
      type: http
    http:
      method: POST
      url: https://api.vapi.ai/tool
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Tool
  - info:
      name: Get Tool
      type: http
    http:
      method: GET
      url: https://api.vapi.ai/tool/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the resource.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Get Tool
  - info:
      name: Update Tool
      type: http
    http:
      method: PATCH
      url: https://api.vapi.ai/tool/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the resource.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Update Tool
  - info:
      name: Delete Tool
      type: http
    http:
      method: DELETE
      url: https://api.vapi.ai/tool/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the resource.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Delete Tool
bundled: true