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

# Execute HTTP request

> Executes HTTP requests to web endpoints.

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Calls a web service over HTTP for each item and brings the response back into your data. Use this when you need to look something up or push something to an external system mid-flow, such as fetching a customer's details from another platform or sending an order to a fulfilment service. You choose the connection, the method and URL, what to send, and how to read the reply; the parsed response then replaces the item so later steps can work with it. The settings are split across a **General** tab and an **Advanced** tab.

This documentation describes: [Schema](/schemas/transformer/http-transformer)

## Fields

### General

<FormField property="client" label="HTTP API connection" diType="http-client">
  The connection that makes the call. It holds the base URL, authentication, and other connection settings. Leave it empty to use the default HTTP API connection.
</FormField>

<FormField property="request.method" label="Request Method">
  The HTTP method to use, such as `GET`, `POST`, `PUT`, or `DELETE`. Defaults to `GET`. Supports placeholders, so you can drive it from the data.
</FormField>

<FormField property="request.uri" label="Request URI" required>
  The address to call. Start it with a slash (for example `/customers/&{customerId}`) when the chosen connection already sets a base URL; otherwise give the full URL. Supports placeholders.
</FormField>

<FormField property="request.querySerializer" label="Request URI encoder" diType="http-query-string-serializer">
  Decides how spaces and special characters in the URL are encoded (`%20` versus `+`). Defaults to form URL encoding.
</FormField>

<FormField property="request.plugins" label="Plugins to use" diType="http-client-plugin-configurator">
  Extra behaviour applied to this request, such as retries, rate limiting, or added headers.
</FormField>

<FormField property="request.authentications" label="Authentications to use" diType="http-authentication-configurator">
  Authentication applied to this request on top of the connection's own settings.
</FormField>

<FormField property="request.enableLogging" label="Enable logging">
  Whether this request is logged. Choose `Inherit from connection` to follow the connection's own setting, `Enabled` to always log it, or `Disabled` to never log it.
</FormField>

<FormField property="request.loggerFormatter" label="Log formatter" diType="http-message-formatter">
  How much of the request and response is written to the log. Shown only when Enable logging is set to `Enabled`.
</FormField>

<FormField property="request.payloadType" label="Payload type">
  How the request body is built: `Encoded data` (turn the data into a format like JSON, the default), `Plain text` (send a literal string you write), or `Multipart/form-data` (send form fields and file uploads). The fields below change to match your choice.
</FormField>

<FormField property="request.payload" label="Request Parameters">
  The data to send as the request body. Shown when Payload type is `Encoded data`. Defaults to `&{@}`, the whole current item. Supports placeholders.
</FormField>

<FormField property="request.serializer" label="Request formatter" diType="serializer">
  The format the request body is sent in. Shown when Payload type is `Encoded data`. Defaults to JSON.
</FormField>

<FormField property="request.plainPayload" label="Payload">
  A literal request body that you type out. Shown when Payload type is `Plain text`.
</FormField>

<FormField property="request.multipartFormData" label="Multipart/form-data">
  The form fields and file uploads to send. Shown when Payload type is `Multipart/form-data`. Each row has a **Key** and **Value** (both support placeholders) and a **Type** of either `Text` or `File`. A `File` row adds a **Filename**, an optional **Content type** (for example `image/jpeg`), and a **Base64 decode value** toggle for content that arrives Base64-encoded.
</FormField>

<FormField property="request.sendBodyPayloadWithGet" label="Send payload as request body with GET requests">
  Sends the payload as the body of a GET request. Off by default, since most GET requests carry no body.
</FormField>

<FormField property="request.sendPayload" label="Send payload as request body with DELETE requests">
  Sends the payload as the body of a DELETE request. Off by default.
</FormField>

<FormField property="deserializer" label="Response parser" diType="stream-deserializer">
  How the response body is read back into data. Defaults to JSON.
</FormField>

### Advanced

<FormField property="addHeaders" label="Add headers to response body">
  Keeps the response headers alongside the body. The parsed body moves under a `data` key and the headers appear under a `headers` key.
</FormField>

<FormField property="addHttpStatus" label="Add HTTP status to the response">
  Keeps the HTTP status alongside the body. The parsed body moves under a `data` key and the status appears under an `httpStatus` key with its code and reason, for example `{ "httpStatus": { "code": 200, "reasonPhrase": "OK" }, "data": { ... } }`.
</FormField>

<FormField property="includeAllItems" label="Include all items">
  When the response parser returns a list, keep every item instead of only the first. Leave it off to bring back just the first item.
</FormField>

## Sample data

This example looks up a customer by id from an external API and brings the record back into the item.

| Field          | Value                                                      |
| -------------- | ---------------------------------------------------------- |
| Request Method | `GET`                                                      |
| Request URI    | `https://jsonplaceholder.typicode.com/users/&{customerId}` |

Input:

```json theme={null}
{ "customerId": "1" }
```

Output:

```json theme={null}
{
    "id": 1,
    "name": "Leanne Graham",
    "email": "Sincere@april.biz",
    "address": {
        "street": "Kulas Light",
        "city": "Gwenborough",
        "zipcode": "92998-3874"
    },
    "company": { "name": "Romaguera-Crona" }
}
```

```json Configuration theme={null}
{
  "prototype": "http-transformer",
  "parameters": {
    "request": {
      "method": "GET",
      "uri": "https://jsonplaceholder.typicode.com/users/&{customerId}"
    }
  }
}
```
