Skip to content

Connect Vapi

Overview

Vapi integration follows the same pattern as Retell:

  1. Connect your Vapi account in the Powsoo dashboard (paste your Vapi API key).
  2. Add powsoo_show_card to your Vapi assistant configuration.
  3. Create a widget and pick the Vapi assistant.
  4. Embed the snippet.

The key difference from Retell: with Vapi, tool calls are handled client-side via the Vapi Web SDK’s message event. There is no server-side webhook URL. The widget handles the tool call directly and sends the result back via client.send({ type: 'add-message', ... }).

Tool definition

Add this to your Vapi assistant’s tools array:

{
"type": "function",
"async": false,
"function": {
"name": "powsoo_show_card",
"description": "Display an interactive card on the user's screen and wait for their tap response. Use this whenever you want the user to confirm captured data, present choices, or collect structured input visually instead of asking them to spell it back.",
"parameters": {
"type": "object",
"properties": {
"title": { "type": "string" },
"description": { "type": "string" },
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": { "type": "string" },
"value": { "type": "string" },
"type": {
"type": "string",
"enum": ["text", "email", "phone", "address", "date", "select", "multiselect", "consent"]
},
"editable": { "type": "boolean", "default": true },
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string" },
"label": { "type": "string" }
}
}
}
},
"required": ["label"]
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": { "type": "string" },
"value": { "type": "string" },
"style": { "type": "string", "enum": ["primary", "secondary", "danger"] }
},
"required": ["label", "value"]
},
"minItems": 1
}
},
"required": ["title", "actions"]
}
}
}

"async": false is required — it tells the assistant to wait for the result before continuing.

System prompt

Use the same system prompt template as for Retell. The LLM behavior is identical regardless of platform.