Vapi
Vapi is a voice AI agents platform for building, testing, and deploying real-time voice agents across phone, web, and SIP. The Vapi REST API exposes assistants, calls, chats, campaigns, phone numbers, tools, files, squads, sessions, structured outputs, and analytics, plus server/client webhook events. A published OpenAPI spec is available at https://api.vapi.ai/api-json.
2 APIs
0 Features
AIVoiceAgentsRealtimeCPaaS
APIs
Vapi Platform API
REST API for managing Vapi voice AI agents. Supports CRUD on Assistants, Squads, Calls, Chats, Campaigns, Sessions, Phone Numbers, Tools, Files, Structured Outputs, Insight, Eva...
Vapi Webhooks API
Server- and client-side webhook events emitted by Vapi during voice sessions, including end-of-call reports, transcripts, function calls, status updates, and tool invocations.
Collections
Vapi API
OPENPricing Plans
Rate Limits
FinOps
Vapi Finops
FINOPSJSON Structure
Resources
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
OpenAPI
OpenAPI
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText
Sources
opencollection: 1.0.0
info:
name: Vapi API
version: '1.0'
items:
- info:
name: Assistants
type: folder
items:
- info:
name: List Assistants
type: http
http:
method: GET
url: https://api.vapi.ai/assistant
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 Assistants
- info:
name: Create Assistant
type: http
http:
method: POST
url: https://api.vapi.ai/assistant
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Assistant
- info:
name: Get Assistant
type: http
http:
method: GET
url: https://api.vapi.ai/assistant/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Assistant
- info:
name: Update Assistant
type: http
http:
method: PATCH
url: https://api.vapi.ai/assistant/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Assistant
- info:
name: Delete Assistant
type: http
http:
method: DELETE
url: https://api.vapi.ai/assistant/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Assistant
- info:
name: Squads
type: folder
items:
- info:
name: List Squads
type: http
http:
method: GET
url: https://api.vapi.ai/squad
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 Squads
- info:
name: Create Squad
type: http
http:
method: POST
url: https://api.vapi.ai/squad
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Squad
- info:
name: Get Squad
type: http
http:
method: GET
url: https://api.vapi.ai/squad/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Squad
- info:
name: Update Squad
type: http
http:
method: PATCH
url: https://api.vapi.ai/squad/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Squad
- info:
name: Delete Squad
type: http
http:
method: DELETE
url: https://api.vapi.ai/squad/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Squad
- info:
name: Calls
type: folder
items:
- info:
name: List Calls
type: http
http:
method: GET
url: https://api.vapi.ai/call
params:
- name: id
value: ''
type: query
description: This is the unique identifier for the call.
- name: assistantId
value: ''
type: query
description: This will return calls with the specified assistantId.
- name: phoneNumberId
value: ''
type: query
description: 'This is the phone number that will be used for the call. To use a transient number, use `phoneNumber`
instead.
Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.'
- 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 Calls
- info:
name: Create Call
type: http
http:
method: POST
url: https://api.vapi.ai/call
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Call
- info:
name: Get Call
type: http
http:
method: GET
url: https://api.vapi.ai/call/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Call
- info:
name: Update Call
type: http
http:
method: PATCH
url: https://api.vapi.ai/call/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Call
- info:
name: Delete Call
type: http
http:
method: DELETE
url: https://api.vapi.ai/call/:id
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Call
- info:
name: Chats
type: folder
items:
- info:
name: List Chats
type: http
http:
method: GET
url: https://api.vapi.ai/chat
params:
- name: id
value: ''
type: query
description: This is the unique identifier for the chat to filter by.
- name: assistantId
value: ''
type: query
description: This is the unique identifier for the assistant that will be used for the chat.
- name: assistantIdAny
value: ''
type: query
description: Filter by multiple assistant IDs. Provide as comma-separated values.
- name: squadId
value: ''
type: query
description: This is the unique identifier for the squad that will be used for the chat.
- name: sessionId
value: ''
type: query
description: This is the unique identifier for the session that will be used for the chat.
- name: previousChatId
value: ''
type: query
description: This is the unique identifier for the previous chat to filter by.
- name: page
value: ''
type: query
description: This is the page number to return. Defaults to 1.
- name: sortOrder
value: ''
type: query
description: This is the sort order for pagination. Defaults to 'DESC'.
- name: sortBy
value: ''
type: query
description: This is the column to sort by. Defaults to 'createdAt'.
- 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 Chats
- info:
name: Create Chat
type: http
http:
method: POST
url: https://api.vapi.ai/chat
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant,
sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS
delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new
session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and
transport fields together. Th'
- info:
name: Get Chat
type: http
http:
method: GET
url: https://api.vapi.ai/chat/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Chat
- info:
name: Delete Chat
type: http
http:
method: DELETE
url: https://api.vapi.ai/chat/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Chat
- info:
name: Create Chat (OpenAI Compatible)
type: http
http:
method: POST
url: https://api.vapi.ai/chat/responses
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Chat (OpenAI Compatible)
- info:
name: Campaigns
type: folder
items:
- info:
name: List Campaigns
type: http
http:
method: GET
url: https://api.vapi.ai/campaign
params:
- name: id
value: ''
type: query
- name: status
value: ''
type: query
- name: page
value: ''
type: query
description: This is the page number to return. Defaults to 1.
- name: sortOrder
value: ''
type: query
description: This is the sort order for pagination. Defaults to 'DESC'.
- name: sortBy
value: ''
type: query
description: This is the column to sort by. Defaults to 'createdAt'.
- 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 Campaigns
- info:
name: Create Campaign
type: http
http:
method: POST
url: https://api.vapi.ai/campaign
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Campaign
- info:
name: Get Campaign
type: http
http:
method: GET
url: https://api.vapi.ai/campaign/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Campaign
- info:
name: Update Campaign
type: http
http:
method: PATCH
url: https://api.vapi.ai/campaign/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Campaign
- info:
name: Delete Campaign
type: http
http:
method: DELETE
url: https://api.vapi.ai/campaign/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Campaign
- info:
name: Sessions
type: folder
items:
- info:
name: List Sessions
type: http
http:
method: GET
url: https://api.vapi.ai/session
params:
- name: id
value: ''
type: query
description: This is the unique identifier for the session to filter by.
- name: name
value: ''
type: query
description: This is the name of the session to filter by.
- name: assistantId
value: ''
type: query
description: This is the ID of the assistant to filter sessions by.
- name: assistantIdAny
value: ''
type: query
description: Filter by multiple assistant IDs. Provide as comma-separated values.
- name: squadId
value: ''
type: query
description: This is the ID of the squad to filter sessions by.
- name: workflowId
value: ''
type: query
description: This is the ID of the workflow to filter sessions by.
- name: numberE164CheckEnabled
value: ''
type: query
description: 'This is the flag to toggle the E164 check for the `number` field. This is an advanced property which
should be used if you know your use case requires it.
Use cases:
- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164
numbers on your SIP trunks.
- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
If `false`, the `number` is still required to only contain alphanumeric characters (regex: `/^\+?[a-zA-Z0-9]+$/`).
@default true (E164 check is enabled)'
- name: extension
value: ''
type: query
description: This is the extension that will be dialed after the call is answered.
- name: assistantOverrides
value: ''
type: query
description: 'These are the overrides for the assistant''s settings and template variables specific to this customer.
This allows customization of the assistant''s behavior for individual customers in batch calls.'
- name: number
value: ''
type: query
description: This is the number of the customer.
- name: sipUri
value: ''
type: query
description: This is the SIP URI of the customer.
- name: email
value: ''
type: query
description: This is the email of the customer.
- name: externalId
value: ''
type: query
description: This is the external ID of the customer.
- name: customerNumberAny
value: ''
type: query
description: Filter by any of the specified customer phone numbers (comma-separated).
- name: phoneNumberId
value: ''
type: query
description: This will return sessions with the specified phoneNumberId.
- name: phoneNumberIdAny
value: ''
type: query
description: This will return sessions with any of the specified phoneNumberIds.
- name: page
value: ''
type: query
description: This is the page number to return. Defaults to 1.
- name: sortOrder
value: ''
type: query
description: This is the sort order for pagination. Defaults to 'DESC'.
- name: sortBy
value: ''
type: query
description: This is the column to sort by. Defaults to 'createdAt'.
- 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 Sessions
- info:
name: Create Session
type: http
http:
method: POST
url: https://api.vapi.ai/session
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Session
- info:
name: Get Session
type: http
http:
method: GET
url: https://api.vapi.ai/session/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Session
- info:
name: Update Session
type: http
http:
method: PATCH
url: https://api.vapi.ai/session/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Session
- info:
name: Delete Session
type: http
http:
method: DELETE
url: https://api.vapi.ai/session/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Session
- info:
name: Phone Numbers
type: folder
items:
- info:
name: List Phone Numbers
type: http
http:
method: GET
url: https://api.vapi.ai/phone-number
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 Phone Numbers
- info:
name: Create Phone Number
type: http
http:
method: POST
url: https://api.vapi.ai/phone-number
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create Phone Number
- info:
name: List Phone Numbers
type: http
http:
method: GET
url: https://api.vapi.ai/v2/phone-number
params:
- name: search
value: ''
type: query
description: This will search phone numbers by name, number, or SIP URI (partial match, case-insensitive).
- name: page
value: ''
type: query
description: This is the page number to return. Defaults to 1.
- name: sortOrder
value: ''
type: query
description: This is the sort order for pagination. Defaults to 'DESC'.
- name: sortBy
value: ''
type: query
description: This is the column to sort by. Defaults to 'createdAt'.
- 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 Phone Numbers
- info:
name: Get Phone Number
type: http
http:
method: GET
url: https://api.vapi.ai/phone-number/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Get Phone Number
- info:
name: Update Phone Number
type: http
http:
method: PATCH
url: https://api.vapi.ai/phone-number/:id
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update Phone Number
- info:
name: Delete Phone Number
type: http
http:
method: DELETE
url: https://api.vapi.ai/phone-number/:id
params:
- name: id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Phone Number
- 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
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
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
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete Tool
- info:
name: Files
type: folder
items:
- info:
name: List Files
type: http
http:
method: GET
url: https://api.vapi.ai/file
auth:
type: bearer
token: '{{bearerToken}}'
docs: List Files
- info:
name: Upload File
type: http
http:
method: POST
url: https://api.vapi.ai/file
body:
type: multipart-form
data: []
auth:
type: bearer
token: '{{bearerToken}}'
docs: Upload File
- info:
name: Get File
type: http
http:
method: GET
url: https://api.vapi.ai/file/:id
params:
- nam
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vapi/refs/heads/main/apis.yml