HTTP Response
Type key: http_response_node
Group: Integrations
Category: integration
Tier: CORE
The HTTP Response node terminates a workflow execution by returning a complete HTTP response to the caller. It is the counterpart to the Receive Webhook trigger and is used to build synchronous API endpoints and webhook responders directly inside Voodflow.
Handles
| Handle | Direction | Description |
|---|---|---|
input | Input | Data available for template resolution in body and headers |
| — | Output | No output handle — this is a terminal node |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
status_code | integer | 200 | HTTP status code for the response |
content_type | string | application/json | Value of the Content-Type response header |
body | string | "" | Response body; supports {{tags}} for dynamic content |
headers | array | [] | Additional response headers (key-value pairs) |
Terminal Node Behavior
Once this node executes, the workflow immediately halts for that branch. No further nodes are executed after HTTP Response. If the workflow has parallel branches, only the branch reaching HTTP Response is terminated; other branches continue independently.
The response is sent back to the HTTP client that triggered the workflow via the webhook endpoint. This enables the complete request → process → response pattern within a single workflow.
Status Codes
Any valid HTTP status code is accepted:
| Range | Common Use |
|---|---|
200 | Successful operation with body |
201 | Resource created |
204 | Success with no body |
400 | Validation failed (use with body describing the error) |
401 | Unauthorized |
403 | Forbidden |
404 | Resource not found |
422 | Unprocessable entity (validation errors) |
500 | Internal server error |
Content Types
content_type | Use Case |
|---|---|
application/json | REST API responses (default) |
text/html | Rendered HTML pages |
text/plain | Plain text responses |
application/xml | XML / SOAP responses |
text/csv | CSV file downloads |
application/pdf | PDF responses (binary) |
Template Support
The body field and all header values support {{tags}}:
{
"status": "success",
"user_id": "{{input.id}}",
"name": "{{input.name}}",
"token": "{{variables.generated_token}}"
}Examples
Standard JSON Response
Status Code: 200
Content Type: application/json
Body:
{
"ok": true,
"message": "Processed successfully",
"data": { "id": "{{input.id}}", "status": "{{input.status}}" },
}HTML Page Render
Status Code: 200
Content Type: text/html
Body: |
<!DOCTYPE html>
<html>
<body>
<h1>Hello, {{input.name}}!</h1>
<p>Your subscription is {{input.plan}}.</p>
</body>
</html>Validation Error Response
Status Code: 422
Content Type: application/json
Body:
{
"error": "Validation failed",
"message": "{{variables.validation_error}}",
}Custom Response Headers
Status Code: 200
Content Type: application/json
Headers:
X-Request-ID: { { variables.request_id } }
Cache-Control: no-store
X-Voodflow-Node: http_response_node
Body: { "ok": true }Typical Workflow Pattern
Receive Webhook
│
▼
[Processing nodes…]
│
├─ success ──▶ HTTP Response (200, JSON body)
│
└─ failure ──▶ HTTP Response (422, error body)Notes
- Placing HTTP Response on both the success and error branches of a Catch node is the canonical pattern for building reliable API endpoints
- There is no output handle; nothing can be connected downstream of this node
- The
bodyfield is sent as-is, after template interpolation; ensure the content matchescontent_type