Source Code
Vapi (vapi.ai) β OpenClaw Skill
Use this skill when you need to manage Vapi voice agents (assistants), calls, phone numbers, tools, and webhooks from an OpenClaw agent.
This skill is API-first (Vapi REST) and optionally integrates with the Vapi CLI for MCP docs / local workflows.
What you can do
- Create/update/list assistants
- Start/inspect/end calls
- Manage phone numbers
- Create/manage tools (function calling)
- Configure webhooks and inspect events
Required secrets
Set one of:
VAPI_API_KEY(recommended) β Vapi dashboard API key.
How to provide the key (recommended)
- Store as a Gateway secret/env var (preferred), or
- Export in your shell before running helper scripts.
Never paste the key into public logs.
Endpoints
Base URL:
https://api.vapi.ai
Auth:
Authorization: Bearer $VAPI_API_KEY
API reference:
- https://api.vapi.ai/api (Swagger)
Tooling options
This skill supports both approaches; you can decide later per deployment.
- Set
VAPI_MODE=apito prefer REST (default) - Set
VAPI_MODE=clito prefer the Vapi CLI (interactive)
Option A β REST via helper script (works everywhere)
This repo includes a tiny Node helper:
skills/vapi/bin/vapi-api.mjs
Examples:
# list assistants
VAPI_API_KEY=... node skills/vapi/bin/vapi-api.mjs assistants:list
# create assistant
VAPI_API_KEY=... node skills/vapi/bin/vapi-api.mjs assistants:create \
--name "Claw Con Concierge" \
--modelProvider openai --model gpt-4o-mini \
--voiceProvider 11labs --voiceId rachel
# start an outbound call (example shape; see swagger for required fields)
VAPI_API_KEY=... node skills/vapi/bin/vapi-api.mjs calls:create \
--assistantId asst_xxx \
--to "+14155551234" \
--from "+14155559876"
Option B β Vapi CLI (good for interactive ops)
If VAPI_MODE=cli, prefer using the CLI for management tasks and fall back to REST if the CLI isnβt installed.
Docs:
Install:
curl -sSL https://vapi.ai/install.sh | bash
vapi login
Option C β MCP docs server for your IDE
This improves IDE assistance (Cursor/Windsurf/VSCode):
vapi mcp setup
Agent usage guidance
When the user asks for Vapi changes:
- Clarify scope: assistants vs phone numbers vs webhooks vs tool calls.
- Prefer read-only queries first (list/get) before destructive changes.
- When creating an assistant, ask for:
- assistant name
- model provider/model
- voice provider/voice id
- tools/function calling needs
- webhook URL (if using server events)
- When initiating calls, confirm:
- to/from numbers
- assistantId
- compliance constraints (recording, consent)
Files in this skill
skills/vapi/SKILL.mdβ this fileskills/vapi/bin/vapi-api.mjsβ minimal REST helper
Sources
- Vapi docs intro: https://docs.vapi.ai/quickstart/introduction
- Vapi CLI: https://github.com/VapiAI/cli
- Vapi MCP: https://docs.vapi.ai/cli/mcp
- Vapi API (Swagger): https://api.vapi.ai/api
- Example server (Node): https://github.com/VapiAI/example-server-javascript-node
- OpenClaw: https://github.com/openclaw/openclaw