Tool & Function Nodes
Overview
Flow Builder provides two node types for interacting with external services: the Tool/Function node for executing pre-defined tools, and the Request (API Call) node for making raw HTTP requests. Both let you integrate your flow with CRMs, booking systems, databases, and any external API.
Tool / Function Node
The Tool/Function node executes an external tool that's been defined at the flow level. Tools are reusable API integrations with defined parameters — think of them as pre-configured API calls that you can drop into any flow.
Parameter Mapping
Each tool has defined parameters (e.g., customer_name, appointment_date). In the node configuration, you map these parameters to flow variables:
| Tool Parameter | Mapped To |
|---|---|
customer_name | {{caller_name}} |
appointment_date | {{selected_date}} |
location_id | {{office_id}} |
When the node executes, the variable values are substituted into the tool parameters before the API call is made.
Speak During Execution
API calls take time. On a voice call, silence is death. The Speak During Execution feature fills dead air while the tool runs:
| Mode | How It Works | Best For |
|---|---|---|
| Static | Speaks a fixed text you define (e.g., "One moment please") | Short, predictable waits |
| Prompt | LLM generates contextual filler based on a prompt (e.g., "Let me look up those appointment times for you, Sarah!") | Natural, personalized filler |
Tip: Prompt-mode filler adds a small LLM call, but the result sounds much more natural on voice. Use static mode when speed is more important than personality.
Sync vs Async Execution
By default, Tool/Function nodes execute synchronously — the flow waits for the result before continuing. Enable the async flag to run the tool in the background while the conversation continues.
Use async for non-blocking tasks like:
- Logging data to a CRM
- Sending confirmation emails
- Updating external databases
Use sync when the next node needs the tool's result (e.g., looking up appointment availability before presenting options).
Edge Handles
| Handle | Position | Color | Purpose |
|---|---|---|---|
| Input | Top | Blue | Receives connections |
| Output | Right | Standard | Next node after execution completes |
| Async | Bottom | Yellow | Nodes to run in parallel |
Request (API Call) Node
The Request node gives you full control over an HTTP request — method, URL, headers, authentication, query parameters, and body. Use it when you need precise control over an API call that doesn't fit a pre-defined tool.
Configuration
| Field | Description |
|---|---|
method | HTTP method: GET, POST, PUT, PATCH, DELETE |
url | Full URL — supports {{variable}} substitution |
contentType | Content-Type header value |
authorization | Authorization header (e.g., Bearer {{api_token}}) |
headers[] | Additional headers as key-value pairs |
queryParams[] | URL query parameters as key-value pairs |
bodyMode | key-value (form params) or raw (JSON/text body) |
bodyParams[] | Body parameters when using key-value mode |
body | Raw body content when using raw mode |
responseVariable | Variable name to store the response |
await | Whether to wait for the response before continuing |
All fields that accept text also support {{variable}} substitution — URLs, headers, body, query params, everything.
Response Variables
When you set a responseVariable (e.g., booking_result), the node creates three variables:
| Variable | Contains |
|---|---|
{{booking_result}} | The response body (parsed JSON or text) |
{{booking_result_status}} | HTTP status code (e.g., 200, 404) |
{{booking_result_error}} | Error message if the request failed |
Timeout
Request nodes have a 10-second timeout. If the external API doesn't respond in time, the request fails and the error variable is populated.
Edge Handles
| Handle | Position | Color | Purpose |
|---|---|---|---|
| Input | Top | Blue | Receives connections |
| Output | Right | Standard | Next node after request completes |
| Async | Bottom | Yellow | Nodes to run in parallel |
Choosing Between Tool/Function and Request Nodes
| Use Case | Recommended Node |
|---|---|
| Reusable integrations used across flows | Tool/Function |
| One-off API calls specific to a flow | Request |
| Need speak-during-execution filler | Tool/Function |
| Need fine-grained HTTP control | Request |
| Dynamic URL / header construction | Request |