npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-vapi

v1.0.1

Published

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

Readme

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