# HTTP Request
URL: /reference/blocks/system-http-request
Type: reference
Description: Make HTTP requests to any API endpoint
Keywords: http request, system/http-request, system, block, workflow builder
`system/http-request` — Make HTTP requests to any API endpoint.

Where it appears [#where-it-appears]

The **HTTP Request** block lives in the **Logic & control** group of the Workflow Builder.

Fields [#fields]

| Field         | Type                       | Required | Default        | Description                                                                                                                                                                              |
| ------------- | -------------------------- | -------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `httpMethod`  | select                     | Yes      | `GET`          | The HTTP verb used for the request. For GET and DELETE the request body is typically omitted; POST/PUT/PATCH send the configured body. Options: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`. |
| `endpoint`    | text (supports references) | Yes      | —              | Full URL. Any params already in the query string are preserved; the Query Params field below is merged on top.                                                                           |
| `queryParams` | code                       | No       | `&#123;&#125;` | JSON object of query parameters to append to the URL — e.g. \{"page": 1, "limit": 50}. Values can reference upstream outputs via \<NodeName.field>.                                      |
| `httpHeaders` | code                       | No       | `&#123;&#125;` | JSON object of request headers — e.g. \{"Authorization": "Bearer ..."}. Values can reference upstream outputs via \<NodeName.field>.                                                     |
| `httpBody`    | code                       | No       | `&#123;&#125;` | JSON request body sent with POST, PUT, and PATCH requests. Values can reference upstream outputs via \<NodeName.field>.                                                                  |
| `timeout`     | text                       | No       | `30000`        | Request timeout in milliseconds. Default 30000 (30s). Maximum 60000 (60s).                                                                                                               |

Inputs and outputs [#inputs-and-outputs]

Inputs are the configurable fields above. The block produces these outputs:

**Outputs**

Reference an output downstream with `<HTTP Request.field>`.

| Name      | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Whether request succeeded |
| `status`  | number  | HTTP status code          |
| `data`    | any     | Response data             |
| `error`   | string  | Error message if failed   |

Example [#example]

A minimal configuration for this block:

```json
{
  "type": "system/http-request",
  "config": {
    "httpMethod": "GET",
    "endpoint": "<PreviousStep.field>",
    "queryParams": "{}",
    "httpHeaders": "{}",
    "httpBody": "{}",
    "timeout": "30000"
  }
}
```

Limits and failure modes [#limits-and-failure-modes]

* Required fields (`httpMethod`, `endpoint`) must be set, or the block fails validation before it runs.
* On failure the `error` output is populated; downstream blocks that reference other outputs may not receive values.

Related [#related]

* [All workflow blocks](/reference/blocks)
* [Workflow Builder overview](/workflow-builder-overview)