> ## Documentation Index
> Fetch the complete documentation index at: https://docs.membrane.agency/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP Request

The `http-request` function type makes arbitrary HTTP requests to any endpoint. This function type can be used in both Actions and Flow Nodes.

## Usage

* **Actions** - Use `http-request` action type to make HTTP requests to any external endpoint
* **Flow Nodes** - Use `custom-http-request` node type to make HTTP requests within flows

## Examples

### Action Implementation

```yaml theme={null}
name: Call External API
key: call-external-api
type: http-request
config:
  request:
    uri:
      $var: $.input.endpoint
    method: GET
    headers:
      Authorization:
        $formula: "Bearer " + $.input.apiKey
      Content-Type: application/json
    query:
      limit: 100
  allowNon2xx: false
```

### Flow Node Implementation

```yaml theme={null}
name: Call External API
type: custom-http-request
config:
  url:
    $var: input.apiEndpoint
  method: POST
  headers:
    Authorization:
      $concat:
        - 'Bearer '
        - $var: input.apiToken
    Content-Type: application/json
  body:
    data:
      $var: input.payload
  timeout: 30000
```

## Configuration Parameters

### Action Parameters

* `request.uri` - Request URI (required)
* `request.method` - HTTP method (defaults to GET)
* `request.body` - Request body
* `request.query` - Query parameters
* `request.headers` - HTTP headers
* `responseSchema` - Expected response schema (optional)
* `allowNon2xx` - Allow non-200 responses (optional)

### Flow Node Parameters

* `url` - Request URL (supports formulas)
* `method` - HTTP method (GET, POST, PUT, DELETE, etc.)
* `headers` - HTTP headers (supports formulas)
* `body` - Request body (supports formulas)
* `query` - Query parameters (supports formulas)
* `timeout` - Request timeout in milliseconds (optional)

## Batch Mode

In Flow Nodes, you can enable batch mode to avoid sending dozens or hundreds of HTTP requests. When using Batch Mode, the node's input becomes a list of up to `batchSize` items.
