http
Perform an HTTP request and capture status, body, headers, and timing
Sends an HTTP request. URL, headers, and body support templates.
The previous node’s JSON is available as execute input but is not sent unless you template it into url / headers / body. Typical teaching chain: start → input → http → extract (How flows work).
Header merge order (later wins, header names compared case-insensitively):
- Workspace / flow
settings.http.defaultHeaders - In-run auth vars from
bearer/basicAuth/apiKey(httpAuthHeaders) — applied on every HTTP hop after the helper until overwritten, unless this node setsskipInheritedAuth: true - This node’s
headers
Query: httpAuthQuery is applied to the resolved URL; query keys already on the URL win. Auth helpers do not copy the previous node’s headers (HTTP responses also have headers).
subflow runs start with empty vars, so parent-flow auth is not inherited.
| Need in this node | Use |
|---|---|
Run panel / --input field | {{input.username}} |
| Field from an earlier named node | {{nodes.login.body.token}} |
| In a later extract/json on this response | JMESPath body.id (wire root) |
Data
| Field | Type | Default | Description |
|---|---|---|---|
label | string | Optional UI label | |
method | enum | "GET" | GET · POST · PUT · PATCH · DELETE · HEAD · OPTIONS |
url | string | required | Must resolve to http: or https: |
headers | object | {} | Header name → string (templated) |
skipInheritedAuth | boolean | false | If true, do not apply helper auth headers/query on this request. Later HTTP hops still inherit. Workspace default headers still apply. |
body | string | object | Omitted for GET/HEAD at send time |
Input / output
| Value | |
|---|---|
| Execute input | Previous node output (not sent unless you template it) |
| Output | See below |
Output shape
{
status: number;
statusText: string;
headers: Record<string, string>;
body: unknown; // parsed JSON, or raw text if not JSON
text: string; // raw response body
request: {
method: string;
url: string;
headers: Record<string, string>;
body?: string;
};
timing: {
startedAt: number;
endedAt: number;
durationMs: number;
};
size: number; // response body byte length
}
Common template paths:
{{nodes.login.status}}{{nodes.login.body.id}}{{nodes.login.body.token}}
Examples
GET with env base URL
{
"id": "profile",
"type": "http",
"data": {
"label": "Profile",
"method": "GET",
"url": "{{env.API_BASE}}/users/{{nodes.userId}}",
"headers": {}
}
}
POST JSON body
{
"id": "login",
"type": "http",
"data": {
"label": "Login",
"method": "POST",
"url": "{{env.API_BASE}}/users",
"headers": { "Content-Type": "application/json" },
"body": "{\"username\": \"{{input.username}}\", \"email\": \"{{input.email}}\"}"
}
}
Bearer token from secrets
{
"id": "secure",
"type": "http",
"data": {
"method": "GET",
"url": "{{env.API_BASE}}/me",
"headers": {
"Authorization": "Bearer {{secrets.API_TOKEN}}"
}
}
}
Skip inherited helper auth
Use after a bearer (or other helper) when this hop should be unauthenticated. Later HTTP nodes still inherit unless they also skip.
{
"id": "listProducts",
"type": "http",
"data": {
"method": "GET",
"url": "{{env.API_BASE}}/products?limit=3",
"headers": {},
"skipInheritedAuth": true
}
}
Object body (templated after stringify)
{
"method": "POST",
"url": "{{env.API_BASE}}/items",
"headers": { "Content-Type": "application/json" },
"body": {
"name": "{{input.name}}",
"owner": "{{input.username}}"
}
}
Errors
- Non-
http/httpsURLs throw at execute time. - Network failures throw with a request snapshot attached.
Standalone request files use a similar shape — see Collections & requests.