Learn the basics of integrating external APIs into your conversational flows.
The API Call node allows you to integrate your conversational flows with any external REST API. Use it to fetch data, send information, or trigger actions in third-party services.
With API integration, your flows can:
Here's a simple example of fetching user data from an API:
GET
https://api.example.com/users/{{user_id}}
Authorization: Bearer {{api_token}}
user_data)A variable in the path is URL-encoded, so its value stays within that one part of the path. A value of . or .. stops the request.
Triple braces, such as {{{api.body.next_page}}}, insert the value as-is, without encoding. Use them only for trusted values your flow controls, such as a pagination link returned by the API, and never for anything a visitor typed. The request still has to stay on the endpoint's host.
In a JSON body, a variable inside quotes, such as {"name": "{{customer_name}}"}, is sent as text with any quotes in it escaped. A variable outside quotes, such as {"quantity": {{quantity}}}, stands for a whole number, true/false, list or object, and the request is not sent if it holds anything else.
The response from an API call is stored in a variable that you specify. You can access this data in subsequent nodes using Handlebars templates:
Name: {{user_data.body.name}}
Email: {{user_data.body.email}}
Status: {{user_data.status}}
Each API response includes the following properties:
{
"status": "success" | "error" | "failure" | "exception",
"status_code": 200,
"body": { ... }, // Parsed JSON or plain text
"headers": { ... },
"timestamp": "2026-01-06T10:30:00Z",
"raw": "...", // Only if includeRaw is enabled
"error": "..." // Only present on errors
}
status: Indicates the result (success, error, failure, or exception)status_code: HTTP status code from the APIbody: Parsed response body (automatically parsed for JSON responses)headers: Response headers from the APItimestamp: When the request was maderaw: Original response text (only if "Include Raw Response" is enabled)error: Error message (only present when an error occurs)The API Call node can cache successful responses within a conversation, avoiding redundant external requests when the same parameters are used more than once in a flow.
When caching is enabled, the node computes a fingerprint of each request (HTTP method + URL + query params + body). If a previous successful response with the same fingerprint exists and is within the TTL, it is returned immediately without making a network request.
In the API Call node's property panel, open the Response Caching section: