Input & Output
Output ports, input field reference, and complete output data schema for the HTTP Request node.
Output Ports
| Port | Trigger Condition | Description |
|---|---|---|
| success | HTTP 2xx response | The remote server responded with a 200–299 status code. All response data is available in the output object. Workflow continues on this port for normal processing. |
| error | 4xx, 5xx, or network failure | Triggered when the server returns a 4xx or 5xx status, when the connection times out, when DNS resolution fails, or when the SSL certificate is invalid. Error details are available in the output object on this port. |
Both ports carry the same output schema. Even on the
error port, status_code, response_body, and response_headers are populated when the server did respond (e.g. a 404). For network-level failures, status_code will be 0 and error_message will describe the failure.
Input Fields
The HTTP Request node receives context from the workflow engine. These fields are available in expressions during configuration:
| Field | Type | Description |
|---|---|---|
vars.* | any | All workflow variables set by upstream nodes, accessible as vars.variable_name. |
input.* | any | The trigger input payload (webhook body, form submission, etc.). |
env.* | string | Environment-level configuration values such as base URLs and feature flags. |
workflow.id | string | The current workflow execution ID, useful for correlation and logging. |
workflow.started_at | datetime | The timestamp when the current workflow execution started. |
Output Data Schema
On execution, the HTTP Request node writes the following fields into the workflow output, accessible to all downstream nodes:
| Field | Type | Description |
|---|---|---|
status_code | integer | HTTP response status code (e.g. 200, 201, 400, 500). Value is 0 for network-level failures. |
response_body | string or object | The raw response body as a string. When parse_response: true and the response is JSON, this is a parsed object navigable by expressions. |
response_headers | object | Dictionary of response headers returned by the server. Keys are lowercased header names. |
response_time_ms | integer | Round-trip request duration in milliseconds, from connection initiation to full response body received. |
is_success | boolean | Convenience flag. true when status_code is 2xx. |
error_message | string | Human-readable error description. Populated on network failures, timeouts, or SSL errors. Empty on successful responses. |
request_url | string | The final URL used for the request, after expression evaluation and query parameter appending. |
Accessing Response Data Downstream
After the HTTP Request node, downstream nodes can reference any output field using the node's output reference. For example, if this node is named callPaymentApi:
{{ nodes.callPaymentApi.output.status_code }}— The HTTP status code{{ nodes.callPaymentApi.output.response_body.payment_id }}— A field from the parsed JSON response{{ nodes.callPaymentApi.output.response_headers["x-request-id"] }}— A specific response header{{ nodes.callPaymentApi.output.response_time_ms }}— Latency measurement
Example Output: Successful API Call
{
"status_code": 201,
"is_success": true,
"response_time_ms": 284,
"request_url": "https://api.mycrm.com/v2/leads",
"response_headers": {
"content-type": "application/json; charset=utf-8",
"x-request-id": "req_8f3a2c1d9b0e",
"x-rate-limit-remaining": "98"
},
"response_body": {
"id": "lead_74b23c9f",
"status": "created",
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@example.com",
"created_at": "2025-11-14T09:32:11Z"
},
"error_message": ""
}
Example Output: Error Response
{
"status_code": 422,
"is_success": false,
"response_time_ms": 118,
"request_url": "https://api.mycrm.com/v2/leads",
"response_headers": {
"content-type": "application/json; charset=utf-8"
},
"response_body": {
"error": "validation_failed",
"message": "Email address is already registered",
"field": "email"
},
"error_message": ""
}
Example Output: Network Timeout
{
"status_code": 0,
"is_success": false,
"response_time_ms": 30001,
"request_url": "https://api.slowservice.com/data",
"response_headers": {},
"response_body": null,
"error_message": "Request timeout after 30000ms"
}
Large response bodies: If the API returns very large response bodies (>10 MB), consider setting
parse_response: false and processing the raw string with a downstream Transform node to avoid memory pressure.