> For the complete documentation index, see [llms.txt](https://help.exporteo.solvenium.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.exporteo.solvenium.com/destination-settings/http.md).

# HTTP

The HTTP channel is useful for pushing your Shopify orders to a REST API, a GraphQL interface, or a SOAP web service.

### URL

The first step is to specify the target URL.

<figure><img src="/files/PAD5sqzqvcSiyu8N5d0d" alt="HTTP target URL set to https://api.posterflow.de/api/"><figcaption></figcaption></figure>

You can include [Liquid variables](/liquid/liquid-variables.md) in the URL. For example, to pass the order number in the path, set the URL to:

```
https://api.example.com/orders/{{order.order_number}}
```

A special Liquid variable for the URL field is the `{{output}}` variable which stores the entire content generated from the output template. It can be useful in rare cases when a web service accepts data only through the query parameters.

```
https://ecommerce.gardenimpressions.nl/webservices/garden-mkpprod/PutOrder?XMLTEXT={{output | url_encode}}
```

### Method

You can select one of the following HTTP methods: GET, POST, or PUT.

In most cases, the desired method is POST.

For POST and PUT methods, the generated output is passed in the request payload body.

### Headers

HTTP headers are pieces of information that are sent along with the main payload. An HTTP header consist of a key (a fixed name), and value. One of the most popular headers is `Content-Type`. The `Content-Type` header is automatically added by Exporteo, and changes according to the selected output format.

<figure><img src="/files/X2ihD4nV3dLVyDd9mryx" alt="Content-Type header set to text/csv"><figcaption></figcaption></figure>

| Output Format | Content-Type     |
| ------------- | ---------------- |
| CSV           | text/csv         |
| JSON          | application/json |
| XML           | application/xml  |

However, you may need to adjust the `Content-Type` header for the XML output formats, as some web services require `text/xml` instead of `application/xml`.

### Authentication

Exporteo supports four authentication methods:

#### No Auth <a href="#no-auth" id="no-auth"></a>

No authentication is sent with the request. Use this for public endpoints or when authentication is handled in another way — for example, through a custom header or an API key passed directly in the URL as a query parameter (e.g. `https://api.example.com/orders?api_key=YOUR_KEY`).

#### Basic Auth <a href="#basic-auth" id="basic-auth"></a>

Standard HTTP basic authentication. Enter a **username** and **password**, and Exporteo will send them as an `Authorization: Basic ...` header with each request.

#### Bearer Token <a href="#bearer-token" id="bearer-token"></a>

Token-based authentication. Enter the **token** value, and Exporteo will include it as an `Authorization: Bearer ...` header.

#### Request <a href="#request" id="request"></a>

Use this when the API requires a separate authentication step before the main request — for example, when you need to call a login endpoint first to obtain a temporary token.

Configure the authentication request:

1. Choose the **Method** (GET or POST).
2. Enter the **Auth URL** — the endpoint that returns the authentication token.
3. For POST requests, select the **Content Type** and enter the **Body** (e.g. JSON with your API credentials).

After saving, Exporteo will first call the Auth URL, then use the response in the main request. Reference the authentication response in the main request URL or headers using the `{{ auth }}` variable. If the authentication response is JSON, you can reference specific fields — for example, `{{ auth.token }}` or `{{ auth.access_token }}`.

**OAuth2 (Request method)**

OAuth 2.0 is a standard for delegated authorization that allows applications to obtain limited access to an API on behalf of a user or system.

In Exporteo, OAuth2 is handled as a special case of the **Request** authentication method, because it requires an initial request to retrieve an access token before calling the main endpoint.

In a typical setup:

* A **POST** request is sent to the token endpoint (Auth URL)
* The request includes credentials (e.g. `client_id`, `client_secret`)
* The response contains an **access token**

This token is then used in the main request, typically in the Authorization header.

**Example (Client Credentials flow)**

Auth request:

```
POST https://api.example.com/oauth2/token
Content-Type: application/x-www-form-urlencoded

Body:
grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET
```

Response:

```
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}
```

Authorization header used in the main request:

```
Authorization: Bearer {{ auth.access_token }}
```

Setup:

<figure><img src="/files/OlW3R8psLgbnmEhhsKzB" alt="Configuration screen showing OAuth2 authentication settings in Exporteo"><figcaption><p>OAuth2 authentication setup in Exporteo</p></figcaption></figure>

Depending on the specific API, this flow may vary slightly (e.g. different parameters, request format, or authentication method). Always refer to the API documentation for the exact implementation details.
