Skip to main content

HTTP Node

The HTTP node calls any external web API directly from your flow. Use it to fetch data, post updates, or trigger another system when there isn't a ready-made tool for it — a custom backend, a partner API, a webhook receiver, and so on. You control the method, URL, headers, query parameters, and body.

Adding it to a flow

Drag an HTTP node onto the canvas and connect the previous node to it. Set the method and URL, then add any headers, query params, or body the API needs.

HTTP node with GET method and a URL

Inputs

ParameterDescriptionRequired
MethodThe HTTP method: GET, POST, PUT, DELETE, or PATCH. Default: GET.Yes
URLThe endpoint to call. This field takes a literal string{{ }} variables in the URL are not resolved and would be sent as-is. To put dynamic data into a request, use Query Params or the Body (both resolve variables).Yes
HeadersKey/value header pairs (for example an Authorization or Content-Type header). Values can use variables.No
Query ParamsKey/value pairs appended to the URL as query string parameters. Values can use variables.No
Body TypeThe format of the request body: JSON, Raw, Form Data, or x-www-form-urlencoded.No
BodyThe request body. A text field for JSON/Raw, or key/value rows for form types. Shown based on the Body Type.No
Response TypeHow to read the response: JSON, Text, Array Buffer, or Raw (Base64).No
Show Output in ChatWhether this node's output appears in the chat history. Off by default.No
Max RetriesIf a request fails from a temporary issue, how many times to retry automatically (0 disables retries). Default 3.No
Retry Delay (ms)How long to wait before the first retry; the wait doubles after each failed attempt. Default 1000.No

An HTTP Credential (Basic Auth, Bearer Token, or API Key) can be attached to the node to handle authentication automatically instead of building the header by hand.

Outputs

The HTTP node has a single output: the API's response. Read it in later nodes, or capture parts of it into Flow Variables. If you set Response Type to JSON, the response is parsed so you can reference its fields.

Method, headers, and body

  • Method + URL define the request. Use GET to read, POST/PUT/PATCH to send data, DELETE to remove.
  • Headers carry things like authentication tokens and content type. For example, Content-Type: application/json.
  • Query Params add filters to the URL, like ?status=open.
  • Body holds the data you send. Choose JSON for most APIs and write the payload in the body field. For file uploads or classic web forms, use Form Data or x-www-form-urlencoded and fill in key/value rows.

Template variables

The Headers, Query Params, and Body fields support {{ }} variables, so you can build requests from live conversation data:

  • Header value: Bearer {{$vars.apiToken}}
  • Query param value: {{$flow.state.customerId}}
  • JSON body: { "message": "{{$question}}", "session": "{{$flow.sessionId}}" }

The URL field is the exception — it is sent literally, so a variable belongs in a query param, not in the path. To look up a specific record, pass its id as a query param (?id={{$flow.state.customerId}}) rather than embedding it in the URL path.

See Variables for the full list you can insert.

HTTP node configured as a POST with a JSON body

Example

Send a captured lead to an external CRM:

  • Method: POST
  • URL: https://api.mycrm.com/v1/leads
  • Headers: AuthorizationBearer {{$vars.crmToken}}, Content-Typeapplication/json
  • Body Type: JSON
  • Body: { "name": "{{$flow.state.name}}", "email": "{{$flow.state.email}}" }
  • Response Type: JSON

Tips

  • Keep secrets out of plain text — store API tokens as Custom Variables ({{$vars.myToken}}) or use an HTTP Credential.
  • Set Response Type to JSON when the API returns JSON so later nodes can read individual fields.
  • Leave Max Retries on for flaky endpoints, but set it to 0 for actions that must not run twice (like a payment).
  • If a request fails, open the execution trace to see the exact URL, status code, and response.