{"_id":"@adhirajhangal/n8n-nodes-vapi","name":"@adhirajhangal/n8n-nodes-vapi","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@adhirajhangal/n8n-nodes-vapi","version":"0.1.0","description":"n8n community node for Vapi. Manage AI voice assistants, fire outbound calls, and wire voice AI into any workflow.","license":"MIT","homepage":"https://github.com/adhirajhangal/n8n-nodes-vapi","keywords":["n8n-community-node-package","vapi","voice-ai","ai-agent","voice-automation","outbound-calls","ai-phone-agent","ai-sdr","vapi-integration"],"author":{"name":"Adhiraj","email":"vacationadhi@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/adhirajhangal/n8n-nodes-vapi.git"},"scripts":{"build":"n8n-node build","build:watch":"tsc --watch","dev":"n8n-node dev","lint":"n8n-node lint","lint:fix":"n8n-node lint --fix","release":"n8n-node release","prepublishOnly":"n8n-node prerelease"},"n8n":{"n8nNodesApiVersion":1,"strict":true,"credentials":["dist/credentials/VapiApi.credentials.js"],"nodes":["dist/nodes/Vapi/Vapi.node.js"]},"devDependencies":{"@n8n/node-cli":"*","eslint":"9.39.4","prettier":"3.8.1","typescript":"5.9.3"},"peerDependencies":{"n8n-workflow":"*"},"_id":"@adhirajhangal/n8n-nodes-vapi@0.1.0","gitHead":"d260a5ac3efeef345c41fbb2acc57b3c2fc7d932","bugs":{"url":"https://github.com/adhirajhangal/n8n-nodes-vapi/issues"},"_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-0Es1c3HomByfbaU5NEWrIdLO/8X0iTXgegagw6AZqsfaQdi4QwVjE4BvZrqy7gwQxYUR2ICqj/076qQ8z6wu7g==","shasum":"bd752b538a403c1c0f3cea43c8f66775206fd320","tarball":"https://registry.npmjs.org/@adhirajhangal/n8n-nodes-vapi/-/n8n-nodes-vapi-0.1.0.tgz","fileCount":73,"unpackedSize":156739,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDJzT5bAUDvcOI9+ZFv6Pt7ERjESG7R4HevnaNAJF1cdAIgVPWnds9LJOboZx3WDx1L4HSRMNCW/6+djdQ45KnV0+4="}]},"_npmUser":{"name":"adhirajhangal","email":"adhiraj@kingstonesystems.com"},"directories":{},"maintainers":[{"name":"adhirajhangal","email":"adhiraj@kingstonesystems.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-vapi_0.1.0_1776614229141_0.5369299967801167"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-19T15:57:09.005Z","0.1.0":"2026-04-19T15:57:09.288Z","modified":"2026-04-19T15:57:09.502Z"},"maintainers":[{"name":"adhirajhangal","email":"adhiraj@kingstonesystems.com"}],"description":"n8n community node for Vapi. Manage AI voice assistants, fire outbound calls, and wire voice AI into any workflow.","homepage":"https://github.com/adhirajhangal/n8n-nodes-vapi","keywords":["n8n-community-node-package","vapi","voice-ai","ai-agent","voice-automation","outbound-calls","ai-phone-agent","ai-sdr","vapi-integration"],"repository":{"type":"git","url":"git+https://github.com/adhirajhangal/n8n-nodes-vapi.git"},"author":{"name":"Adhiraj","email":"vacationadhi@gmail.com"},"bugs":{"url":"https://github.com/adhirajhangal/n8n-nodes-vapi/issues"},"license":"MIT","readme":"# n8n-nodes-vapi\n\nAn n8n community node for [Vapi](https://vapi.ai). Wire your AI phone agents directly into your n8n workflows without touching the API.\n\nBuilt by someone who actually runs AI agency campaigns with this stuff.\n\n[![npm version](https://img.shields.io/npm/v/@adhirajhangal/n8n-nodes-vapi)](https://www.npmjs.com/package/@adhirajhangal/n8n-nodes-vapi)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## What This Does\n\nAdds a **Vapi** node to n8n with full support for:\n\n| Resource | Operations |\n|---|---|\n| **Assistant** | Create, Get, Get Many, Update, Delete |\n| **Call** | Create Outbound, Get, Get Many, End |\n| **Phone Number** | Get, Get Many |\n| **Squad** | Create, Get, Get Many, Update, Delete |\n\nThe most common use case: fire an outbound call to a lead, pass metadata (like their name, company, CRM ID), and receive the transcript + outcome via webhook, all from an n8n workflow.\n\n---\n\n## Installation\n\n### In n8n (Recommended)\n\n1. Open your n8n instance\n2. Go to **Settings → Community Nodes**\n3. Click **Install**\n4. Enter `@adhirajhangal/n8n-nodes-vapi`\n5. Click **Install** and restart n8n\n\n### Manual (self-hosted)\n\n```bash\ncd ~/.n8n/custom  # or your custom nodes directory\nnpm install @adhirajhangal/n8n-nodes-vapi\n# restart n8n\n```\n\n---\n\n## Credentials\n\nYou'll need a Vapi API key.\n\n1. Go to [dashboard.vapi.ai](https://dashboard.vapi.ai)\n2. Click your account → **API Keys**\n3. Copy your **Private Key** (starts with the long string)\n4. In n8n, go to **Credentials → New** → search for **Vapi API**\n5. Paste the key and save\n\n> Your private key is what you use for server-side API calls. Don't confuse it with the public key (that's for client-side SDKs).\n\n---\n\n## Usage Examples\n\n### Fire an Outbound Call\n\nThe most common workflow: trigger a call to a lead when something happens (form submitted, deal stage changes, etc.).\n\n1. Add the **Vapi** node\n2. Set Resource → **Call**, Operation → **Create (Outbound)**\n3. Fill in:\n   - **Phone Number ID**: your Vapi number (get it from dashboard → Phone Numbers)\n   - **Customer Phone Number**: the lead's number in E.164 format (`+14155550100`)\n   - **Assistant** → pick \"Existing Assistant\" and paste your assistant ID\n4. In **Additional Fields**, add **Metadata** with any data you want back on the webhook:\n   ```json\n   {\n     \"leadId\": \"{{ $json.id }}\",\n     \"campaign\": \"q2-outbound\",\n     \"firstName\": \"{{ $json.firstName }}\"\n   }\n   ```\n\n### Create an Assistant\n\nBuild an assistant programmatically, useful if you're spinning up agents per client.\n\n1. Resource → **Assistant**, Operation → **Create**\n2. Set the name, first message, and system prompt\n3. In Additional Fields, pick your LLM (gpt-4o-mini is the sweet spot for cost/quality) and voice provider\n\n### Get Call Transcript\n\nAfter a call ends, pull the full transcript and outcome:\n\n1. Resource → **Call**, Operation → **Get**\n2. Pass the call ID (comes back from the webhook or from Create Call response)\n3. The response includes `transcript`, `recordingUrl`, `summary`, `cost`, and more\n\n---\n\n## Webhook Setup (Highly Recommended)\n\nVapi sends call events to a webhook URL you define, and that's how you get transcripts, outcomes, and custom function call results back into n8n.\n\n1. Add an **n8n Webhook** node to your workflow\n2. Copy the webhook URL\n3. When creating/updating your Vapi assistant, paste it into **Webhook URL**\n4. Vapi will POST to that URL on events: `call-started`, `call-ended`, `transcript`, `function-call`, etc.\n\nThe `call-ended` event is the one you want, it has the full transcript and call outcome.\n\n---\n\n## Tips From Real Campaigns\n\n**Use `assistantOverrides` for personalization without creating a new assistant per lead.** Pass `firstMessage` and `variableValues` to customize what the agent says per call, saves you from managing hundreds of assistants.\n\n**Always pass metadata.** When a call ends and the webhook fires, that metadata comes right back. Use it to link the call back to your CRM record, campaign, or whatever triggered it.\n\n**E.164 format or it'll 400.** Phone numbers must be formatted as `+[country code][number]`, no dashes, no spaces, no parentheses.\n\n**Vapi pagination is timestamp-based, not page-based.** Use `createdAtGt` / `createdAtLt` to paginate through large call lists.\n\n**Squads are underused.** If you have a complex flow (receptionist → qualifier → closer), use a Squad instead of trying to cram all that logic into one assistant's prompt.\n\n---\n\n## Resources\n\n- [Vapi API Docs](https://docs.vapi.ai/api-reference)\n- [Vapi Dashboard](https://dashboard.vapi.ai)\n- [n8n Community Nodes Docs](https://docs.n8n.io/integrations/community-nodes/)\n\n---\n\n## Contributing\n\nPRs welcome. If Vapi adds new endpoints or you hit a bug, open an issue.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-62a1d8c597d0c0f6e368beb8b8a5f79e"}