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 ParameterMapped 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:

ModeHow It WorksBest For
StaticSpeaks a fixed text you define (e.g., "One moment please")Short, predictable waits
PromptLLM 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

HandlePositionColorPurpose
InputTopBlueReceives connections
OutputRightStandardNext node after execution completes
AsyncBottomYellowNodes 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

FieldDescription
methodHTTP method: GET, POST, PUT, PATCH, DELETE
urlFull URL — supports {{variable}} substitution
contentTypeContent-Type header value
authorizationAuthorization header (e.g., Bearer {{api_token}})
headers[]Additional headers as key-value pairs
queryParams[]URL query parameters as key-value pairs
bodyModekey-value (form params) or raw (JSON/text body)
bodyParams[]Body parameters when using key-value mode
bodyRaw body content when using raw mode
responseVariableVariable name to store the response
awaitWhether 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:

VariableContains
{{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

HandlePositionColorPurpose
InputTopBlueReceives connections
OutputRightStandardNext node after request completes
AsyncBottomYellowNodes to run in parallel

Choosing Between Tool/Function and Request Nodes

Use CaseRecommended Node
Reusable integrations used across flowsTool/Function
One-off API calls specific to a flowRequest
Need speak-during-execution fillerTool/Function
Need fine-grained HTTP controlRequest
Dynamic URL / header constructionRequest

Was this article helpful?