All nodes/Integrations/HTTP & Web

HTTP Request

Performs an HTTP request (GET/POST/PUT/PATCH/DELETE/HEAD) and returns the response status, headers and body. Supports JSON/text/form body, bearer/basic/custom-header auth, and templating of URL/headers/body via Jinja. SSRF protection — requests to private networks are blocked.

HTTP Request
RunResponse

Type in the graph: http_request

Exec

An error branch can be enabled (expose_error_output) to handle failures on their own path.

Try it

Minimal working workflow

Entry
HTTP Request
Exit
  • Execute + Data
  • Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

The general-purpose step to any HTTP API that has no node of its own. When a dedicated node exists — Telegram, amoCRM, Bitrix24, calendar, email — use it: authentication, pagination and error shapes are already handled there. To read a web page as text for a model there is Fetch Webpage; for an MCP server there is MCP Tool.

This node is a graph step, not an agent tool: it has no tool_out port, so a model cannot call it. To hand an agent an HTTP call of your own, wrap it in a WF tool.

How it works

The URL, headers, query parameters, body and the auth fields are all rendered through Jinja, so {{ inputs.input.id }}, {{ variables.token }} and {{ secret.API_KEY }} work in any of them.

Headers, Query Parameters and a form body are a JSON object written as text. Invalid JSON fails the node with a direct message. For GET and HEAD no body is sent, whatever the field contains.

The node has two outputs: Success carries execution onward, and Response returns the response object — status_code, ok, headers, body, text, url, elapsed_ms. text is always the raw string; body is parsed as JSON only when Parse JSON Response is on and the server sent a Content-Type containing json, otherwise it holds the same string.

Requests to private networks and loopback are blocked, and every redirect hop is validated again. The response is truncated at Max Response Bytes (1,000,000 by default, 10,000,000 ceiling). The timeout defaults to 30 seconds with a maximum of 120; a plan may lower both.

Common mistakes

  • Expecting the response on Success. The value comes out of the Response port — wire a data edge from it, or read {{ nodes.<id>.output.body }}.
  • Forgetting how 4xx/5xx is handled. Fail on 4xx/5xx is on by default, so anything outside 2xx goes to the Error output. To inspect the status yourself, turn it off: then Success fires and you decide from ok and status_code.
  • Reading body when the response was not JSON. A server sending JSON as text/plain leaves you a string to parse.
  • Mistaking a truncated response for the server’s answer. A large JSON stops parsing once it is cut — raise the byte limit.

Inputs

PortWirePayloadNotes
RuninputExecute + Dataexecute_data

Execution trigger and optional payload available in templates

Outputs

PortWirePayloadNotes
ResponseoutputDatadataobject

Configuration

FieldTypeDefaultDescription
Custom Header Nameauth_header_namestringAuthorization

Header name for custom_header auth type

shown when auth_type = custom_header

Auth Token / Passwordauth_tokenstring""

Bearer token, basic-auth password, or custom-header value

secret

shown when auth_type = bearer | basic | custom_header

Auth Typeauth_typestringnone

none, bearer (token), basic (username+password), custom_header

Options: none, bearer, basic, custom_header

Basic Usernameauth_usernamestring""

Username for basic auth

shown when auth_type = basic

Bodybodystring""

Request body. For 'json' — JSON string; for 'form' — JSON object of key/value pairs.

supports templates

shown when body_type = json | text | form

Body Typebody_typestringnone

none — no body; json — JSON payload; text — raw text; form — application/x-www-form-urlencoded

Options: none, json, text, form

Fail on 4xx/5xxfail_on_statusbooleantrue

Route to Error output on non-2xx responses (otherwise always Success with ok=False)

Follow Redirectsfollow_redirectsbooleantrue

Headersheadersstring""

JSON object of request headers, e.g. {"X-Foo": "bar"}

supports templates

Max Response Bytesmax_response_bytesinteger1000000

Truncate response body if it exceeds this size

MethodmethodstringGET

HTTP method

Options: GET, POST, PUT, PATCH, DELETE, HEAD

Parse JSON Responseparse_jsonbooleantrue

Decode response body as JSON when Content-Type is application/json

Query Parametersquery_paramsstring""

JSON object of URL query parameters, e.g. {"page": 1}

supports templates

Timeout (seconds)timeout_secondsnumber30

Request timeout

URLurlstring""

Target URL (http/https). Jinja templating supported.

supports templates

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.