skills$openclaw/vapi-calls
cmorillas99-cyber8.8k

by cmorillas99-cyber

vapi-calls – OpenClaw Skill

vapi-calls is an OpenClaw Skills integration for ai ml workflows. Advanced AI voice assistant for phone calls. Capable of persuasion, sales, restaurant bookings, reminders, and notifications.

8.8k stars5.3k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026ai ml

Skill Snapshot

namevapi-calls
descriptionAdvanced AI voice assistant for phone calls. Capable of persuasion, sales, restaurant bookings, reminders, and notifications. OpenClaw Skills integration.
ownercmorillas99-cyber
repositorycmorillas99-cyber/vapi-calls
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @cmorillas99-cyber/vapi-calls
last updatedFeb 7, 2026

Maintainer

cmorillas99-cyber

cmorillas99-cyber

Maintains vapi-calls in the OpenClaw Skills directory.

View GitHub profile
File Explorer
5 files
.
scripts
vapi_calls.py
8.6 KB
_meta.json
283 B
package.json
628 B
SKILL.md
3.2 KB
SKILL.md

name: vapi-calls description: Advanced AI voice assistant for phone calls. Capable of persuasion, sales, restaurant bookings, reminders, and notifications. emoji: 📞 author: César Morillas version: 1.0.0 license: MIT repository: https://github.com/vapi-ai/openclaw-vapi-calls requires: env: - VAPI_API_KEY - VAPI_ASSISTANT_ID - VAPI_PHONE_NUMBER_ID - WEBHOOK_BASE_URL bins: - python3 pip: - requests tools:

  • name: make_vapi_call description: Triggers an autonomous AI phone call with a specific mission and waits for the final report. parameters: type: object properties: phone_number: type: string description: "Recipient's phone number (E.164 format, e.g., +34669000000)." first_message: type: string description: "Initial greeting. Use 'DEFAULT' to use the agent's configured greeting." system_prompt: type: string description: "AI instructions. Use 'DEFAULT' to use the agent's configured model/prompt. If custom text is provided, the call will force GPT-4o Mini + endCall tool." end_message: type: string description: "Optional. Final phrase. Use 'DEFAULT' to skip override." required: [phone_number, first_message, system_prompt]

Vapi Calls - Agent Instructions

Use this skill to perform any task that requires voice interaction over the phone.

Configuration & Network Requirements

⚠️ IMPORTANT: This skill requires your machine to be reachable from the internet to receive real-time call updates.

1. Environment Variables

Configure these in your OpenClaw config.json (or Gateway env):

  • VAPI_API_KEY: Your Vapi Private API Key.
  • VAPI_ASSISTANT_ID: The ID of the Vapi Assistant to use as a base.
  • VAPI_PHONE_NUMBER_ID: The ID of the Vapi Phone Number.
  • WEBHOOK_BASE_URL: Crucial. The public HTTPS URL where this agent is reachable (e.g., https://my-claw.com or https://xyz.ngrok-free.app). Do not include a trailing slash.
  • WEBHOOK_PORT (Optional): The local port to listen on (Default: 4430).
  • VAPI_LLM_PROVIDER: (Optional) Provider for Custom Mode (Default: openai).
  • VAPI_LLM_MODEL: (Optional) Model for Custom Mode (Default: gpt-4o-mini).

2. Connectivity Setup

You must expose the WEBHOOK_PORT (default 4430) to the internet.

Option A: Cloudflare Tunnel (Recommended) cloudflared tunnel --url http://localhost:4430

Option B: Ngrok ngrok http 4430

Set WEBHOOK_BASE_URL to the generated URL (e.g., https://random-name.trycloudflare.com).

Usage

Custom Mission (Dynamic)

Provide a specific system_prompt. The system will automatically use GPT-4o Mini and enable the endCall tool. The AI will be able to hang up autonomously.

Native Agent (Static)

Pass "DEFAULT" for first_message, system_prompt, and end_message. The system will use the exact configuration (Model, Voice, Prompt) defined in the Vapi Dashboard.

Troubleshooting

  • Call hangs / No report: Check if WEBHOOK_BASE_URL is reachable from the internet. The Python script spins up a temporary server on WEBHOOK_PORT only during the call.
  • API 400 Error: Check your VAPI_PHONE_NUMBER_ID and VAPI_ASSISTANT_ID.
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

⚠️ **IMPORTANT:** This skill requires your machine to be reachable from the internet to receive real-time call updates. ### 1. Environment Variables Configure these in your OpenClaw `config.json` (or Gateway env): - `VAPI_API_KEY`: Your Vapi Private API Key. - `VAPI_ASSISTANT_ID`: The ID of the Vapi Assistant to use as a base. - `VAPI_PHONE_NUMBER_ID`: The ID of the Vapi Phone Number. - `WEBHOOK_BASE_URL`: **Crucial.** The public HTTPS URL where this agent is reachable (e.g., `https://my-claw.com` or `https://xyz.ngrok-free.app`). **Do not include a trailing slash.** - `WEBHOOK_PORT` (Optional): The local port to listen on (Default: `4430`). - `VAPI_LLM_PROVIDER`: (Optional) Provider for Custom Mode (Default: `openai`). - `VAPI_LLM_MODEL`: (Optional) Model for Custom Mode (Default: `gpt-4o-mini`). ### 2. Connectivity Setup You must expose the `WEBHOOK_PORT` (default 4430) to the internet. **Option A: Cloudflare Tunnel (Recommended)** `cloudflared tunnel --url http://localhost:4430` **Option B: Ngrok** `ngrok http 4430` Set `WEBHOOK_BASE_URL` to the generated URL (e.g., `https://random-name.trycloudflare.com`).

Configuration

⚠️ **IMPORTANT:** This skill requires your machine to be reachable from the internet to receive real-time call updates. ### 1. Environment Variables Configure these in your OpenClaw `config.json` (or Gateway env): - `VAPI_API_KEY`: Your Vapi Private API Key. - `VAPI_ASSISTANT_ID`: The ID of the Vapi Assistant to use as a base. - `VAPI_PHONE_NUMBER_ID`: The ID of the Vapi Phone Number. - `WEBHOOK_BASE_URL`: **Crucial.** The public HTTPS URL where this agent is reachable (e.g., `https://my-claw.com` or `https://xyz.ngrok-free.app`). **Do not include a trailing slash.** - `WEBHOOK_PORT` (Optional): The local port to listen on (Default: `4430`). - `VAPI_LLM_PROVIDER`: (Optional) Provider for Custom Mode (Default: `openai`). - `VAPI_LLM_MODEL`: (Optional) Model for Custom Mode (Default: `gpt-4o-mini`). ### 2. Connectivity Setup You must expose the `WEBHOOK_PORT` (default 4430) to the internet. **Option A: Cloudflare Tunnel (Recommended)** `cloudflared tunnel --url http://localhost:4430` **Option B: Ngrok** `ngrok http 4430` Set `WEBHOOK_BASE_URL` to the generated URL (e.g., `https://random-name.trycloudflare.com`).

FAQ

How do I install vapi-calls?

Run openclaw add @cmorillas99-cyber/vapi-calls in your terminal. This installs vapi-calls into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/cmorillas99-cyber/vapi-calls. Review commits and README documentation before installing.