Skip to content

HTTP Request

Type key: http_request
Group: Integrations
Category: integration
Tier: CORE

The HTTP Request node sends HTTP requests to any external API or service. It supports all standard HTTP methods, multiple authentication types, custom headers, query parameters, and request bodies in various formats.

Credentials (optional)

If the target API requires authentication, create a credential first in Voodflow → Credentials and select it via credential_id. The node supports API Key, Bearer Token, Basic Auth, and OAuth2 credential types.

How to create credentials

Handles

HandleDirectionDescription
inputInputReceives data used for template resolution in URL, headers, and body
outputOutputEmits the parsed response body

Configuration

FieldTypeDefaultDescription
urlstring""The target URL; supports {{tags}}
methodenumGETHTTP method: GET, POST, PUT, PATCH, DELETE, HEAD
credential_idintegernullReference to a stored Credential
headersarray[]Custom HTTP headers (key-value pairs)
query_paramsarray[]URL query parameters (key-value pairs)
body_typeenumjsonRequest body format: json, form, raw, input
body_dataarray/string[]Request body data
timeoutinteger30Request timeout in seconds
response_typeenumautoResponse parsing: auto, json, text, binary

Authentication

The node resolves credentials in the following priority order:

  1. System Credential (via credential_id) — recommended for production
  2. Inline auth — configured directly in the node (for quick testing)

Supported Credential Types

TypeHTTP Mechanism
bearer_token / api_tokenAuthorization: Bearer <token>
basic_authAuthorization: Basic <base64(user:pass)>
oauth2Authorization: Bearer <oauth_access_token> (auto-refreshed)
api_key_headerCustom header (e.g. X-API-Key: <key>)
api_key_queryQuery parameter (e.g. ?api_key=<key>)

Request Body Types

json

Body is serialized as JSON. Content-Type: application/json is set automatically.

json
{
    "model": "llm-model",
    "messages": [{ "role": "user", "content": "{{input.prompt}}" }]
}

form

Body is URL-encoded form data. Content-Type: application/x-www-form-urlencoded.

input

The body is taken directly from an input field of the execution context (resolved via {{tags}}).

raw

Raw string body. Set Content-Type manually in headers.

Response Handling

ModeBehavior
autoAttempts JSON parse; falls back to raw text
jsonStrict JSON parse; fails if response is not valid JSON
textReturns raw response body as string
binaryReturns base64-encoded binary data

Output Format

Successful response:

json
{
    "status": 200,
    "headers": {
        "content-type": "application/json",
        "x-request-id": "abc123"
    },
    "body": {
        "id": "chatcmpl-123",
        "choices": [{ "message": { "content": "Hello!" } }]
    }
}

On HTTP error (4xx / 5xx), the node returns ExecutionResult::failure() with the status code and body — use a Catch node to handle these gracefully.

Template Support

The url, header values, and body fields all support {{tags}}:

URL:    https://api.example.com/users/{{input.user_id}}/profile
Header: X-Tenant-ID: {{variables.tenant_id}}
Body:   { "query": "{{input.search_term}}" }

Examples

Call LLM Provider

yaml
URL: https://api.your-llm-provider.com/v1/chat/completions
Method: POST
Credential: LLM Provider (bearer_token)
Body Type: json
Body:
    {
        "model": "llm-model",
        "temperature": 0.7,
        "messages":
            [
                { "role": "system", "content": "You are a helpful assistant." },
                { "role": "user", "content": "{{input.user_message}}" },
            ],
    }

Fetch User from REST API

yaml
URL: https://api.example.com/users/{{input.id}}
Method: GET
Credential: Example API (api_token)

POST Form Data

yaml
URL: https://hooks.example.com/submit
Method: POST
Body Type: form
Body:
    name: { { input.name } }
    email: { { input.email } }

Notes

  • The node uses Laravel's Http facade internally (powered by Guzzle)
  • SSL certificate verification is enabled by default; disable only in development via PHP Code node
  • Timeouts default to 30 seconds; increase for slow AI or third-party APIs
  • Response headers are always included in the output for downstream use (e.g. reading pagination headers)

Proprietary software — source-available. All rights reserved.