⚡ API Action Node¶
Preview — not yet executed by the live assistant
API Action can be placed and configured in the designer and passes publish validation, but the live WhatsApp assistant does not execute it yet. A customer reaching an API Action node sees a polite "not yet supported" message instead of the request being made. Keep it out of published flows until this feature goes Live. Its configuration may also change before release.
Purpose¶
The API Action node makes an HTTP request to an external API when the conversation reaches this point. Use it to integrate your WhatsApp assistant with CRMs, booking systems, payment gateways, or any web service.
Business Scenario¶
Use the API Action node when you need to:
- Create a CRM record — push lead data to Salesforce, HubSpot, or Zoho
- Check availability — query a booking system for open time slots
- Look up information — fetch order status, account details, or pricing from your backend
- Submit forms — send collected data to a Google Form, webhook, or custom endpoint
- Trigger automations — kick off a Zapier/Make workflow
Configuration¶
| Field | Description |
|---|---|
| Title | Internal name (e.g., "Create CRM Lead") |
| URL | The full API endpoint URL (must start with https://) |
| Method | GET (fetch data) or POST (send data) |
| Headers | Key-value pairs for HTTP headers (e.g., Authorization: Bearer xxx) |
| Body | Request body for POST requests. Supports {{variable}} placeholders. |
| Response Variable | Optional. Save the API response to a variable for use in later nodes. |
| Response Scope | conversation or contact — how long to keep the response variable |
Properties¶
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
title |
Text | No | "" |
Internal node name |
url |
URL | Yes | https:// |
Full API endpoint URL |
method |
Select | Yes | GET |
HTTP method |
headers |
Key-value | No | {} |
HTTP request headers |
body |
Text | Only for POST | — | Request body (JSON, form data, etc.) |
responseVariableName |
Text | No | — | Variable to store the API response |
responseScope |
Select | No | conversation |
Response variable persistence |
Inputs¶
| Handle | Type | Description |
|---|---|---|
| Top (↑) | Target | Receives a connection from any preceding node |
Outputs¶
| Handle | Type | Description |
|---|---|---|
| Bottom (↓) | Continue | Connects to the next node (runs after the API call completes) |
Connection Rules¶
- ✅ Can receive connections from any node type
- ✅ Can connect to any node type
- ✅ Commonly placed after Question nodes (to send captured data) and before Message nodes (to display results)
Example Flow Diagram¶
CRM Integration¶
flowchart TD
A["📥 Capture Name → {{name}}"] --> B["📥 Capture Email → {{email}}"]
B --> C["⚡ API Action<br/><em>POST to CRM</em><br/><em>Create lead record</em>"]
C --> D["💬 Confirmation<br/><em>Thanks {{name}}! We've added you to our system.</em>"]
D --> E["📋 Main Menu"]
style C fill:#f1f5f9,stroke:#94a3b8,stroke-width:2px
Example POST Request¶
URL: https://api.yourcrm.com/leads
Headers:
Authorization: Bearer sk_live_abc123
Content-Type: application/json
Body:
{
"name": "{{name}}",
"email": "{{email}}",
"phone": "{{phone}}",
"source": "whatsapp"
}
Best Practices¶
Always use HTTPS — never send data over unencrypted HTTP.
Use variables in the body —
{{name}},{{email}}etc. to send captured data.Set proper headers — most APIs require
Content-Type: application/jsonand anAuthorizationheader.Save the response if you need to display API data to the customer (e.g., order status, booking confirmation number).
Add a fallback — if the API might fail, follow with a Condition to check the response variable.
Test thoroughly — API integrations are the most common source of issues in live flows.
Common Mistakes¶
| Mistake | What Happens | Fix |
|---|---|---|
| HTTP instead of HTTPS | Request may fail or be blocked | Always use https:// URLs |
| Missing auth headers | API returns 401 Unauthorized | Add the required Authorization header |
| Wrong Content-Type | API doesn't parse the body correctly | Set Content-Type: application/json for JSON bodies |
| Typo in variable names | API receives literal {{variable}} text |
Double-check variable names match Question nodes |
| No error handling | Customer sees nothing if API fails | Add a Condition to check response, or a fallback Message |
Related Nodes¶
- 📥 Question — Capture data to send in the API request
- 🔀 Condition — Check the API response and branch accordingly
- 💬 Message — Display API results to the customer
- ✉️ Send Email — Alternative to API for simpler notification use cases