The API node lets you communicate with external services from your conversation flow. You can query data, send information, authenticate against APIs, and process responses — all without writing code.
Think of this node as a messenger: you tell it where to go (URL), what to carry (body), and what to bring back (response).
URL and HTTP method
At the top of the panel you configure the two essential fields:
HTTP Method — defines what type of operation you will perform:
| Method | Purpose | Example |
|---|
| GET | Retrieve data | Query a customer’s balance |
| POST | Create a resource | Register a new order |
| PUT | Replace a complete resource | Update all data in a profile |
| PATCH | Partially update | Change only a user’s email |
| DELETE | Delete a resource | Cancel a subscription |
URL — the address of the service. You can inject variables directly:
https://api.example.com/users/{{$user.id}}/orders/{{$memory.orderId}}
If you paste a URL that already contains parameters (such as ?key=value), the node automatically extracts them and moves them to the Parameters tab.
Import from cURL
If you have a cURL command ready (for example, from an API’s documentation), you can paste it directly into the URL field. The node automatically interprets the method, headers, body, and authentication from the command.
Configuration tabs
The panel has 5 tabs to configure all aspects of the request:
Parameters
Add query string parameters as key-value pairs. Each parameter has a checkbox to enable or disable it without deleting it.
user: {{$user.id}}
date: {{$context.date}}
Parameters are automatically appended to the URL in ?param1=value1¶m2=value2 format.
Authentication
Two authentication methods available:
| Method | Configuration |
|---|
| Basic Auth | Username and password. Automatically encoded in base64 |
| Bearer Token | Access token sent in the Authorization: Bearer <token> header |
Both methods support variables in their fields, allowing the use of dynamically stored credentials.
Credentials are kept in context during workflow execution. You can edit them from the credentials modal if they are already stored.
Add custom HTTP headers as key-value pairs. Each header has a checkbox to enable or disable it.
Content-Type: application/json
X-API-Key: {{$memory.apiKey}}
The Content-Type header is automatically updated when you change the body type.
Body
For methods that send data (POST, PUT, PATCH), configure the request body in different formats:
| Format | Typical use |
|---|
| JSON | The most common for REST APIs. Editor with real-time validation |
| XML | SOAP APIs or legacy services |
| Plain text | Unstructured data |
| Multipart Form | Sending files along with text data |
| Form URL Encoded | Traditional web forms |
The JSON editor validates the structure in real time and supports variables within the content:
{
"user_id": "{{$user.id}}",
"email": "{{$memory.email}}",
"name": "{{$user.names}}"
}
Settings
Advanced settings to control the behavior of the request:
SSL Certificate
Enables SSL/TLS verification for secure connections. Includes a timeout field in milliseconds (default 3000ms).
mTLS Certificates
Mutual TLS authentication with the server. This option only appears if your company has at least one certificate configured.
- When mTLS is enabled, the SSL certificate is automatically disabled (they are mutually exclusive)
- If a primary certificate exists, it is automatically selected
- You can choose any certificate from the available list
View mTLS certificate management
Retries
Configure automatic retries when a request fails:
| Option | Description |
|---|
| Retry condition | Network errors only (default) or always retry |
| Number of retries | Number of additional attempts |
| Wait type | No wait, exponential, or custom (in milliseconds) |
| Reset timeout | Resets the wait time on each retry |
Saving the response
Enable the “Save response” toggle at the top and define a variable name. The complete API response will be stored in that variable.
Accessing the response without manipulation
Use the variable directly in other nodes:
Manipulating the response in a Code node
If you need to extract specific data from the JSON:
let apiResponse = $context.getHttpResponse('apiResponse')
apiResponse = apiResponse.json()
let name = apiResponse.data.user.name
$memory.set('name', name)
The key you use in $context.getHttpResponse('apiResponse') must match exactly the one you specified in the “Save response” field.
Test response
After running a test from the panel, the response is shown in a collapsible section with:
- Status code (for example,
200 OK)
- Body tab — Response formatted as JSON with a copy button
- Headers tab — Response headers from the server