Request Node (API Calls)
Overview
The Request node in Flow Builder at the Flow Builder lets you make HTTP API calls from within your flow. Use it to send data to external systems, retrieve information, or trigger webhooks. Unlike the Tool/Function node, the Request node gives you full control over every aspect of the HTTP request.
Adding a Request Node
- Open the node palette on the left side of the canvas.
- Drag a Request node onto the canvas.
- Connect it to the preceding node via an edge.
- Click the node to open its configuration panel.
Configuration Fields
| Field | Description |
|---|---|
| Method | HTTP method: GET, POST, PUT, PATCH, or DELETE |
| URL | The endpoint URL. Supports {{variable}} substitution. |
| Content Type | The Content-Type header value (e.g., application/json) |
| Authorization | The Authorization header (e.g., Bearer {{api_token}}) |
| Headers | Additional headers as key-value pairs |
| Query Parameters | URL query parameters as key-value pairs |
| Body Mode | key-value (form parameters) or raw (JSON/text) |
| Body | Request body content (raw mode) or key-value pairs |
| Response Variable | Variable name to store the API response |
| Await | Whether the flow waits for the response before continuing |
Variable Interpolation
Every text field in the Request node supports {{variable}} substitution. This includes the URL, headers, authorization, query parameters, and body. At runtime, the engine replaces each placeholder with its current value.
URL Example
https://api.example.com/customers/{{customer_id}}/appointmentsAuthorization Example
Bearer {{api_token}}Raw Body Example
{
"name": "{{caller_name}}",
"email": "{{caller_email}}",
"appointment_date": "{{selected_date}}",
"notes": "{{conversation_summary}}"
}Use the VariablePicker (click the {x} icon) to browse and insert available variables.
Response Handling
When you set a Response Variable (e.g., booking_result), the node automatically creates three variables after execution:
| Variable | Contains |
|---|---|
{{booking_result}} | The response body (parsed JSON or raw text) |
{{booking_result_status}} | The HTTP status code (e.g., 200, 404, 500) |
{{booking_result_error}} | Error message if the request failed |
Use a Logic node after the Request node to branch based on the status code or check for errors before proceeding.
Sync vs Async
The Await toggle controls whether the flow waits for the API response:
- Await enabled (sync): The flow pauses until the response arrives. Use this when downstream nodes need the response data.
- Await disabled (async): The flow continues immediately. The API call runs in the background. Use this for fire-and-forget operations like logging or notifications.
Timeout
Request nodes have a 10-second timeout. If the external API does not respond within this window, the request fails and the error variable is populated. Design your flows to handle timeout scenarios gracefully with a Logic node that checks the error variable.
Common Patterns
POST Data to a CRM
After extracting caller information, use a Request node to POST the data to your CRM:
- Method:
POST - URL:
https://api.yourcrm.com/leads - Body (raw):
{"name": "{{full_name}}", "phone": "{{phone}}", "email": "{{email}}"} - Response Variable:
crm_result
GET Account Data
Look up a caller's account before the conversation continues:
- Method:
GET - URL:
https://api.yourapp.com/accounts/{{account_id}} - Await: enabled
- Response Variable:
account_data
Then reference {{account_data}} in subsequent Conversation node prompts to personalize the interaction.
Tip: For reusable API integrations that you need across multiple flows, consider using the Tool/Function node instead. The Request node is best for one-off or flow-specific API calls.