---
description: Learn about the configuration, best practices and use cases for implementing the HTTP Request Step.
title: Step: HTTP Request
image: https://assets1-proxy.respond.io/api/v1/image/assets%2F11f7a662b80a4675973850b067c01fa5%2F3f43c48b21b24f4e8b02b100c0c8fab0
---

[New🌍 WhatsApp API Calling is now available globally! Start making calls with respond.io today. Learn more![arrow-icon](https://assets1-proxy.respond.io/api/v1/image/assets%2F11f7a662b80a4675973850b067c01fa5%2Fe43213a7a9314673bd8d2060c25f9b87)](/whatsapp-business-calling-api)

Help me with... ⌘ 

1. [All Collections >](/help)
2. [ Product >](/help/product)
3. [ Workflows >](/help/workflows)
4. Step: HTTP Request

# Step: HTTP Request

![Avatar](https://assets2-proxy.respond.io/ph8r57dk1q9w/2Y6LIr15mC1nj8MgftMVT5/6ffeea71593277f0fc29dafd1c1de9b9/Serene_Avatar.svg)

Shing-Yi Tan

· 14 Nov 2025

3 min read

This Step enables sending HTTP Requests and saving their responses as Variables.

> This Step is only available for Advanced plan and above.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/52zPgVAtr2qgx4FfqzlKqm/604956637e429cb5cda47126bc1d7eb4/image.png?fm=jpg&q=80&w=640)

## Configuration

There are two key configurations in the HTTP Request Step:

### HTTP Request Method

The specific method required for the request. Choose the appropriate method from the dropdown list.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/2My1u8mQq4mH1wOWVIYVnw/f99b32d02508cc494cac9bbb7890b5eb/image.png?fm=jpg&q=80&w=640)

### URL

In the URL field, enter the URL endpoint of the external API to retrieve data. To include Variables, use the "$" prefix to support the interpolation of static text and Variables.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/6YWo3zridgVXpA8JfP90zw/0a3467d7dfa3b413e7e6cfff7d080952/image.png?fm=jpg&q=80&w=640)

> You can now use IP addresses and port numbers in the HTTP request step, giving you direct access to servers and flexibility to access services on non-standard ports.

> Please note that the respond.io domain is blacklisted. Sending an API call to this domain is not allowed, as it could cause looping issues.

### Body

To ensure correct decoding by the request recipient, expand the Body section and include a body along with the Content-Type Header.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/3B0mUp2JtdW7vUlYyCVArw/a4f1820a284987cd1ef24de4f00a4859/image.png?fm=jpg&q=80&w=640)

### Headers

In the Header section, you can add headers to the HTTP request in pairs. The key represents the header name, and the value represents the header value. You can use Variables as headers by adding the prefix "$". However, remember that only up to 10 headers are allowed.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/7JuKvuOYCr6Fhm9sPwmYwb/d26f9f508db44babfe9854fd0b16387c/image.png?fm=jpg&q=80&w=640)

### Response Mapping

For JSON API responses with key-value pairs, you can save specific response elements as Variables. In the Response Mapping section, input the key of the JSON object on the left and assign a name to the variable on the right. Keep in mind that only JSON responses can be saved, and you can have a maximum of 10 response mapping settings.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/3W05k18A8pZSVefQKQYypO/172ca1193fb77d1ca7e41a80895885b3/image.png?fm=jpg&q=80&w=640)

**Examples:**

To save a response in different formats, fill in the JSON key corresponding to the data you want to save.

```
{  
    "name": "Jason",  
    "zip_codes": "12345",  
    "phone": "123123"  
}
```

To save the phone number from the above response, use **$.phone** as the JSON key.

```
{ 
    "custom_fields": {  
        "firstName": "John",  
        "lastName": "Doe",  
        "locale": "en_GB",  
        "timezone": "5",  
        "gender": "male",  
        "phone": "123123",  
        "email": "zy@respond.io",  
        "customerid": "1"  
    },  
    "created_at": 1575618542  
}
```

To save the phone number from the above response, use **$.custom\_fields.phone**

```
{  
        "data": {  
            "id":"1776025372480910",  
            "contacts" : [  
                {  
                    "firstName":"John",  
                    "lastName":"Doe",  
		    "locale": "en_GB"  
                },  
                {  
                    "firstName":"Jane",  
                    "lastName":"Doe",  
		    "locale": "en_GB"  
                }  
	    ]  
        }  
    }
```

To save the first name 'Jane' from the above response, use **$.data.contacts\[1\].firstName**.

### Save Response Status as Variable

To save the response status from the HTTP request as a Variable, turn ON the _Save Response Status as Variable_ toggle. Then, name the Variable in the field provided.

![](https://assets2-proxy.respond.io/ph8r57dk1q9w/3TEyjVW4gRMKjuhnxTMLlT/49dc79cb2d060ef5037a402c366a54b9/image.gif?w=326&fm=avif)

## How It Works

When activated, this step will send an HTTP request to the specified URL, using the defined body and header.

You can guide the Workflow based on the response status. For instance, you can create a Branch for "status code is equal to 200". If any other response status code is received, a Jump Step could return Contacts to the HTTP Request Step. Alternatively, the Contact could be directed to the Failure Branch if the branch conditions are not met. If there are no steps set up under the Failure Branch, the Workflow will conclude.

> If your HTTP request exceeds 10 seconds, it will result in a timeout, causing the request to fail.

## Potential Failure

To avoid potential failures in executing HTTP requests, ensure the following conditions are met:

* Use the correct HTTP method and Content-Type Header.
* Ensure to include the required protocol `http://` or `https://` in your URL based on what your system supports to avoid request failure.
* Ensure the Content-Type is valid.
* Exclude the port number from the URL.
* Avoid using a self-signed certificate in the URL.
* Verify that the authorization is valid.
* Ensure our IP addresses (52.74.35.155, 18.138.31.163, 54.169.155.20) are not blocked.

If any of the above conditions are not met, the Contact will skip this step and proceed with the remaining journey.

> When verifying HTTP request outputs with dynamic variables, remember that Variables without a value will return as **null** and **undefined**.

## Best Practices

Here are some best practices for this step you can follow to optimize your workflow:

### When the HTTP Request is Successful

1. **Save Response Status as a Variable:**  
   1. Ensure the first step is to [save Response Status as Variable](https://respond.io/help/workflows/step-http-request#save%5Fresponse%5Fstatus%5Fas%5Fvariable) for further actions.
2. **Branch Step:**  
   1. Add a Branch Step to evaluate the HTTP request status.  
   2. If the status is `200`, the request is successful.  
   3. If not, configure an alert to notify the manager about the unsuccessful request.
3. **Google Sheet** **for Monitoring:**  
   1. Record the Response Status in a Google Sheet for a clear visibility on the success or failure of requests.
4. **Comment:**  
   1. Add a comment in your workflow to document the Response Status. This will help you track and review errors more efficiently.

### When the HTTP Request Fails

1. **Save Response Status as a Variable:**  
   1. Similar to the successful request, [save Response Status as Variable](https://respond.io/help/workflows/step-http-request#save%5Fresponse%5Fstatus%5Fas%5Fvariable) for error handling.
2. **Use Wait or Jump Step for Retries**:  
   1. Implement the Wait Step to pause before retrying an unsuccessful request.  
   2. Alternatively, use the Jump Step to go back to the HTTP Request Step and attempt the request again.
3. **Comment**:  
   1. Document the error by creating a comment to record the HTTP Request error  
   2. Include Contact details and tag the person in charge.
4. **Google Sheet for Monitoring**:  
   1. Utilize the Google Sheet Step to log the Contact information and error details for monitoring and review.
5. **Task Assignment**:  
   1. Assign the task to a specific user to initiate another process within the workflow and try again.

## Suggested Use Cases

Here are some ways you can use the HTTP Request Step:

* [Route VIP Contacts](https://respond.io/help/retain-customers/route-vip-contacts): Utilize the HTTP Request Step to fetch Contact details from a data warehouse like a CRM. This enables you to identify VIP Contacts, allowing for a personalized customer experience and distinguishing them from non-VIP Contacts.

Share this article

[![Telegram](https://assets1-proxy.respond.io/api/v1/image/assets%2F11f7a662b80a4675973850b067c01fa5%2F44daca77a4844f0c8fd29040ddeba057?width=22)](https://api.whatsapp.com/send?text=https://respond.io/help/workflows/step-http-request)[![Facebook](https://assets1-proxy.respond.io/api/v1/image/assets/11f7a662b80a4675973850b067c01fa5/fff57eeb01160bc604392f519b4f3461ca16f0fa1b6a587b20b142cdf1ad0ba7?placeholderIfAbsent=true&width=22)](https://www.facebook.com/sharer/sharer.php?u=https://respond.io/help/workflows/step-http-request)[![Linkedin](https://assets1-proxy.respond.io/api/v1/image/assets/11f7a662b80a4675973850b067c01fa5/7aaf8d87b5410844d83e06a4ed663e4f551b8c5ef51dbb20a8ff064a1eed9a0f?placeholderIfAbsent=true&width=22)](https://www.linkedin.com/sharing/share-offsite/?url=https://respond.io/help/workflows/step-http-request)[![Twitter](https://assets1-proxy.respond.io/api/v1/image/assets%2F11f7a662b80a4675973850b067c01fa5%2F4e03e02422a94e8eab9b8b41457c2371?width=22)](http://twitter.com/share?url=https://respond.io/help/workflows/step-http-request)

## 

Related articles 👩‍💻

* [Step: Update LifecycleLearn about best practices, use cases and how it works when implementing the Update Lifecycle Step. ](/help/workflows/step-update-lifecycle)
* [Step: Send Conversions API EventLearn about the configuration, how it works, best practices and more when implementing the Send Conversions API Event step. ](/help/workflows/step-send-conversions-api-event)
* [How to Avoid Workflow LoopsLearn how to prevent workflow loops that cause unnecessary repetitions, system overload, and delays. ](/help/workflows/how-to-avoid-workflow-loops)
* [Step: Send TikTok Lower Funnel EventLearn about the best practices, use cases and how it works when implementing the Send TikTok Lower Funnel Event Step. ](/help/workflows/step-send-tiktok-lower-funnel-event)
* [Step: Add Google Sheets RowLearn about the configuration, best practices and use cases for implementing the Add Google Sheets Row Step. ](/help/workflows/step-add-google-sheets-row)

Can't find what you're looking for? 🔎

[Contact Support](/contact-us)

2025-12-05T03:58:33.021Z

help

```json
[{"@context":"https://schema.org","@type":"TechArticle","articleBody":"Learn about the configuration, best practices and use cases for implementing the HTTP Request Step.","author":{"@type":"Person","image":"https://assets2-proxy.respond.io/ph8r57dk1q9w/2Y6LIr15mC1nj8MgftMVT5/6ffeea71593277f0fc29dafd1c1de9b9/Serene_Avatar.svg","name":"Shing-Yi Tan","url":"https://respond.io/author"},"dateCreated":"2024-06-12T03:58:58.000Z","dateModified":"2025-11-14T02:19:48.988Z","datePublished":"2024-06-12T03:58:58.000Z","headline":"Step: HTTP Request","image":"https://assets2-proxy.respond.io/ph8r57dk1q9w/52zPgVAtr2qgx4FfqzlKqm/604956637e429cb5cda47126bc1d7eb4/image.png","mainEntityOfPage":"https://respond.io/help/workflows","publisher":{"@type":"Organization","logo":"https://respond.io/favicon/favicon.svg","name":"respondio"},"thumbnailUrl":"https://assets2-proxy.respond.io/ph8r57dk1q9w/52zPgVAtr2qgx4FfqzlKqm/604956637e429cb5cda47126bc1d7eb4/image.png","url":"https://respond.io/help/workflows/step-http-request"},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Help","item":"https://respond.io/help","position":1},{"@type":"ListItem","name":"Product","item":"https://respond.io/help/product","position":2},{"@type":"ListItem","name":"Workflows","item":"https://respond.io/help/workflows","position":3},{"@type":"ListItem","name":"Step: HTTP Request","item":"https://respond.io/help/workflows/step-http-request","position":4}]}]
```
