> For the complete documentation index, see [llms.txt](https://docs.diaflow.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.diaflow.io/workflow-builder/nodes/built-in-tools/http-request-api.md).

# HTTP Request (API)

## HTTP Request (API)

### What does it do?

The **HTTP Request (API)** node sends data to another app or service. It then brings the reply back into your workflow.

Think of it like a courier. You prepare the message, send it out, and receive the response.

#### Smart features

* **Fills in dynamic values automatically**. Variables like `{{trigger.email}}` are resolved before the request runs.
* **Cleans up blank rows**. Empty header, parameter, and body rows are ignored.
* **Understands structured body values**. If a body value looks structured, Diaflow converts it for you.
* **Returns the cleanest possible response**. Structured replies stay structured. Other replies return as plain text.
* **Can try again after a failure**. You can add extra attempts and a delay between them.

<figure><img src="/files/wyHzQxXe9v4HrvfMugq3" alt=""><figcaption></figcaption></figure>

### Import cURL

Paste a cURL command to fill the request faster and avoid manual setup mistakes.

<figure><img src="/files/wzK4pggANTLEgbsa4Zy0" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Send new leads from a form into your CRM automatically.
* Push approved orders into finance or fulfillment tools.
* Pull live account or ticket data before the next step runs.

### Step-by-Step Setup

* In **Method**, choose the action you need, such as **GET** or **POST**.
* In **URL**, paste the full address of the app or service.
* In **Headers**, add each required item as one **Key** and one **Value**.
* In **Parameters**, add any filters you want attached to the address.
* In **Payload (Body)**, add the fields you want to send.
* If you send a body, add **Content-Type** = `application/json` in **Headers**.
* In **Failure handling strategy**, choose whether to continue, stop, or retry.
* If you use retries, set **Max retry attempts** and **Delay**.

### The Transformation: Before & After

**Before**

<figure><img src="/files/HU0jZ4r7bzKySWe0FGHP" alt=""><figcaption></figcaption></figure>

**After**

<figure><img src="/files/hA1IY5ZLU29rhqAE5eko" alt=""><figcaption></figcaption></figure>

The actual reply from the other service is inside the inner **data** value. Use that value in later nodes.

### Tips & Warnings for First-Timers

#### Best practices

* Add **Content-Type** = `application/json` whenever you send a body.
* Keep requests focused. Smaller replies are faster and easier to reuse.
* Insert tokens and keys with variables instead of typing them into every flow.

#### Warnings

* Do not expect retries when **Failure handling** is set to **Skip** or **Stop flow**. Those modes return after the first failure.
* Do not use this node for file uploads or very large downloads. It is built for standard request and response data.
* Do not rely on this node for very slow services, self-signed certificates, or response-header based logic.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works.md)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow.md)
* Browse related nodes in [Component List](/workflow-builder/component-list.md)
