Build visual conversation workflows in Vapi with nodes for conversation steps, tool execution, conditional branching, and handoffs. Use when creating structured multi-step voice interactions that need deterministic flow control beyond what a single assistant prompt provides.
---
name: create-workflow
description: Build visual conversation workflows in Vapi with nodes for conversation steps, tool execution, conditional branching, and handoffs. Use when creating structured multi-step voice interactions that need deterministic flow control beyond what a single assistant prompt provides.
license: MIT
compatibility: Requires internet access and a Vapi API key (VAPI_API_KEY).
metadata:
author: vapi
version: "1.0"
---
# Vapi Workflow Creation
Build structured conversation workflows with visual node-based flows. Workflows provide deterministic control over conversation steps, branching logic, and tool execution.
> **Setup:** Ensure `VAPI_API_KEY` is set. See the `setup-api-key` skill if needed.
## When to Use Workflows vs Assistants
| Feature | Assistant | Workflow |
|---------|-----------|----------|
| Simple conversations | Best choice | Over-engineered |
| Multi-step processes | Can work with good prompting | Best choice |
| Deterministic flow | Hard to guarantee | Built-in |
| Conditional branching | Prompt-dependent | Visual nodes |
| Complex state management | Difficult | Native support |
## Quick Start
Workflows are best built in the **Vapi Dashboard** visual editor at https://dashboard.vapi.ai — but they can also be configured via API.
### Dashboard Workflow
1. Go to https://dashboard.vapi.ai
2. Navigate to **Workflows**
3. Click **Create Workflow**
4. Add nodes: Conversation, Tool, Condition, Handoff
5. Connect nodes to define the flow
6. Publish and attach to a phone number or call
### Using a Workflow in a Call
```bash
curl -X POST https://api.vapi.ai/call \
-H "Authorization: Bearer $VAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflowId": "your-workflow-id",
"phoneNumberId": "your-phone-number-id",
"customer": {
"number": "+11234567890"
}
}'
```
## Node Types
### Conversation Node
The core building block — the assistant has a conversation within defined boundaries:
- **System prompt** specific to this step
- **Model and voice** configuration
- **Exit conditions** that trigger transitions to other nodes
- **Variables** to extract and pass between nodes
### Tool Node
Execute a tool (API call, function) and use the result in subsequent nodes.
### Condition Node
Branch the flow based on variables or conversation state.
### Handoff Node
Transfer to another workflow, assistant, or phone number.
## Workflow Patterns
### Appointment Scheduling Flow
```
[Greeting] → [Collect Date] → [Check Availability (Tool)] → [Confirm Booking] → [Goodbye]
↓ (unavailable)
[Suggest Alternatives] → [Confirm Booking]
```
### Lead Qualification Flow
```
[Introduction] → [Ask Budget] → [Ask Timeline] → [Qualify (Condition)]
↓ (qualified)
[Schedule Demo]
↓ (not qualified)
[Send Resources]
```
### Support Triage Flow
```
[Greeting] → [Identify Issue (Condition)]
↓ (billing) ↓ (technical) ↓ (other)
[Billing Flow] [Tech Support Flow] [General Help]
```
## Attaching Workflows
### To a Phone Number
```bash
curl -X PATCH https://api.vapi.ai/phone-number/{id} \
-H "Authorization: Bearer $VAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflowId": "your-workflow-id"
}'
```
### In an Outbound Call
```bash
curl -X POST https://api.vapi.ai/call \
-H "Authorization: Bearer $VAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflowId": "your-workflow-id",
"phoneNumberId": "your-phone-number-id",
"customer": { "number": "+11234567890" }
}'
```
## References
- [Vapi Workflows Docs](https://docs.vapi.ai/workflows/quickstart) — Official guide
- [Workflow Examples](https://docs.vapi.ai/workflows/examples/appointment-scheduling) — Common patterns
## Additional Resources
This skills repository includes a **Vapi documentation MCP server** (`vapi-docs`) that gives your AI agent access to the full Vapi knowledge base. Use the `searchDocs` tool to look up anything beyond what this skill covers — advanced configuration, troubleshooting, SDK details, and more.
**Auto-configured:** If you cloned or installed these skills, the MCP server is already configured via `.mcp.json` (Claude Code), `.cursor/mcp.json` (Cursor), or `.vscode/mcp.json` (VS Code Copilot).
**Manual setup:** If your agent doesn't auto-detect the config, run:
```bash
claude mcp add vapi-docs -- npx -y mcp-remote https://docs.vapi.ai/_mcp/server
```
See the [README](../README.md#vapi-documentation-server-mcp) for full setup instructions across all supported agents.
Creator's repository · vapiai/skills
License: MIT