vapi

n8n community node for VAPI - Voice AI Platform. Create and manage voice AI assistants, calls, phone numbers and more.

Package Information

Downloads: 0 weekly / 0 monthly
Latest Version: 1.0.1
Author: Community

Documentation

n8n-nodes-vapi

n8n community node
npm version
license

This is an n8n community node for VAPI — the developer platform for building voice AI agents.

Create and manage voice assistants, make outbound phone calls, handle inbound call webhooks, and automate your entire voice AI pipeline directly from n8n.

n8n is a fair-code licensed workflow automation platform.


Table of Contents


Installation

Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to Settings > Community Nodes
  3. Select Install
  4. Enter n8n-nodes-vapi in the input field
  5. Agree to the risks and click Install

Manual Installation

# Navigate to your n8n user directory (usually ~/.n8n)
cd ~/.n8n

# Install the package
npm install n8n-nodes-vapi

# Restart n8n

Docker

If you're running n8n with Docker, add this to your Dockerfile:

RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-vapi

Or mount as a volume with a custom package.json that includes the dependency.


Credentials

You need a VAPI API Key to use this node.

How to get your API Key

  1. Go to dashboard.vapi.ai
  2. Navigate to Organization Settings (or your profile)
  3. Copy your API Key (Private Key)

Configure in n8n

  1. In any VAPI node, click on Credentials > Create New
  2. Enter your API Key
  3. Click Save
  4. The credential will automatically be tested by listing your assistants

Nodes

This package includes two nodes:

VAPI Node

The main node for interacting with the VAPI API. Supports full CRUD operations on assistants, calls, phone numbers, and squads.

Resource Available Operations
Assistant Create, Get, Get Many, Update, Delete
Call Create Outbound, Create Web Call, Get, Get Many, Delete
Phone Number Get, Get Many, Delete
Squad Get, Get Many, Delete

VAPI Trigger Node

A webhook trigger node that receives events from VAPI's Server URL. Use this to react to call events in real-time.

Event Filter Description
All Events Triggers on any webhook event
Assistant Request VAPI needs assistant configuration dynamically
End of Call Report A call has ended — includes transcript, cost, duration
Function Call The assistant is calling a custom function
Hang A hang event was detected during the call
Speech Update Speech status changed (started/stopped speaking)
Status Update Call status changed (ringing, in-progress, ended)
Tool Calls The assistant invoked one or more tools
Transcript Real-time transcript update
Transfer Destination Request A call transfer was requested

Operations Reference

Assistant

Create

Creates a new voice assistant.

Parameter Type Required Description
Name string Yes Name of the assistant
First Message string No What the assistant says when the call starts
System Prompt string No Instructions for the assistant LLM
LLM Provider select No OpenAI, Anthropic, Google, Custom LLM
LLM Model select No gpt-4o, gpt-4o-mini, claude-3.5-sonnet, etc.
TTS Provider select No ElevenLabs, Azure, Deepgram, OpenAI, etc.
Voice ID string No Voice ID from the TTS provider
Max Duration (s) number No Maximum call duration in seconds
Silence Timeout (s) number No Silence threshold before ending the call
End Call Message string No Message to say before ending
Server URL string No Webhook URL for this assistant's events

Get

Retrieves a single assistant by its ID.

Parameter Type Required Description
Assistant ID string Yes The unique ID of the assistant

Get Many

Lists all assistants in your account.

Parameter Type Required Description
Limit number No Max results to return (default: 50, max: 100)

Update

Updates an existing assistant.

Parameter Type Required Description
Assistant ID string Yes The unique ID of the assistant
Name string No New name
First Message string No New first message
System Prompt string No New system prompt
Server URL string No New webhook URL

Delete

Deletes an assistant by ID.


Call

Create (Outbound)

Creates an outbound phone call using a VAPI phone number.

Parameter Type Required Description
Phone Number ID string Yes Your VAPI phone number ID
Customer Phone Number string Yes Target number in E.164 format (e.g. +5511999999999)
Assistant Configuration select Yes "Use Existing Assistant" or "Inline (Transient)"
Assistant ID string Conditional Required if using existing assistant
First Message string Conditional Required if using inline assistant
System Prompt string Conditional Required if using inline assistant
Customer Name string No Name of the customer (context)
Max Duration (s) number No Max call duration
Server URL string No Webhook URL for this call
Squad ID string No Use a squad instead of single assistant
Metadata (JSON) json No Custom metadata for the call
Assistant Overrides (JSON) json No Override assistant settings for this call

Create (Web)

Creates a web-based call (browser-to-browser or browser-to-phone).

Same parameters as Outbound but without Phone Number ID and Customer Phone Number.

Get

Retrieves a call by ID. Returns full details including transcript, cost breakdown, messages, duration, and status.

Get Many

Lists calls with optional filters.

Parameter Type Required Description
Limit number No Max results (default: 50)
Assistant ID string No Filter by assistant
Phone Number ID string No Filter by phone number

Delete

Deletes a call record by ID.


Phone Number

Get

Retrieves a phone number by ID.

Get Many

Lists all phone numbers in your account.

Parameter Type Required Description
Limit number No Max results (default: 50)

Delete

Deletes a phone number by ID.


Squad

Get

Retrieves a squad by ID.

Get Many

Lists all squads in your account.

Delete

Deletes a squad by ID.


Usage Examples

Example 1 — Outbound Call from a Webhook

Trigger a phone call when an external event occurs (e.g. form submission, CRM update).

[Webhook] → [VAPI: Call > Create Outbound]
  1. Add a Webhook node as the trigger
  2. Add a VAPI node with:
    • Resource: Call
    • Operation: Create (Outbound)
    • Phone Number ID: your VAPI phone number
    • Customer Phone Number: {{ $json.phone }}
    • Assistant Configuration: Use Existing Assistant
    • Assistant ID: your assistant ID

Example 2 — Create an Assistant with Custom Prompt

Dynamically create assistants based on data from another system.

[Trigger] → [VAPI: Assistant > Create]
  1. Add any trigger node
  2. Add a VAPI node with:
    • Resource: Assistant
    • Operation: Create
    • Name: {{ $json.agentName }}
    • System Prompt: {{ $json.instructions }}
    • First Message: Hello! How can I help you today?

Example 3 — Receive End of Call Reports

Process call reports after each call ends (e.g., save to database, send notification).

[VAPI Trigger: End of Call Report] → [IF: call.cost > 0.5] → [Slack: Send Message]
  1. Add a VAPI Trigger node
    • Event Filter: End of Call Report
  2. Copy the webhook URL from the node
  3. Set this URL as the Server URL in your VAPI assistant or call configuration
  4. Connect downstream nodes to process the report data

The trigger receives data including:

  • message.call — full call object with status, duration, cost
  • message.transcript — complete conversation transcript
  • message.summary — AI-generated summary of the call
  • message.recordingUrl — URL of the call recording

Example 4 — Handle Function Calls from the Assistant

Let your voice assistant trigger n8n workflows (e.g., look up order status, book appointments).

[VAPI Trigger: Function Call] → [Switch: functionName] → [HTTP Request: CRM API] → [Respond to Webhook]
  1. Add a VAPI Trigger node
    • Event Filter: Function Call
  2. Use a Switch node to route based on {{ $json.message.functionCall.name }}
  3. Process the function (query database, call API, etc.)
  4. Use Respond to Webhook to return the result back to VAPI

Compatibility

Requirement Version
n8n >= 0.200.0
Node.js >= 18.0.0

Tested with n8n versions 1.x.


Resources


License

MIT

Discussion