Automations 6 min

How to Send HTTP Requests in Power Automate

Short answer

Power Automate's HTTP action sends requests to any REST API using GET, POST, PUT, PATCH, or DELETE methods. You configure the URL, headers, and body in the action settings, then use a Parse JSON action to extract fields from the response. The HTTP action is a premium connector, meaning it requires a Power Automate Premium license. Use environment variables for API keys rather than hardcoding them in the flow.

Power Automate's HTTP action lets you call any REST API directly from a flow, enabling integrations beyond the built-in connectors.

Before you start: licensing requirements

The HTTP action is a premium connector in Power Automate. You need either a Power Automate Premium per-user license or a Power Automate Process license assigned to the flow. Standard Microsoft 365 licenses do not include premium connectors.

If you are building this in a work environment, confirm with your administrator that the premium license is available before designing the flow. For context on how HTTP requests and APIs work, see our article on error handling in Power Automate and scheduled flows.

Step 1: Add the HTTP action to your flow

Open your flow in Power Automate, click New step, and search for HTTP. Select the HTTP action from the results. Be careful not to confuse it with the HTTP + Swagger (OpenAPI) action, which is a different action designed for APIs with a published Swagger specification.

The HTTP action appears as a configurable block in your flow. You will see fields for Method, URI, Headers, Body, Cookie, and Authentication.

Step 2: Set the method and URI

Select the HTTP method from the Method dropdown: GET, POST, PUT, PATCH, or DELETE. Use GET when reading data and POST or PUT when sending data to create or update records.

Enter the full URL of the API endpoint in the URI field. You can use dynamic content here, for example building a URL that includes an ID from a previous step: https://api.example.com/v1/contacts/ followed by the ID value from dynamic content.

If the API uses query parameters, you can either append them to the URL directly or use the Queries section to add them as key-value pairs.

Step 3: Add request headers

Expand the Headers section and add key-value pairs. Most REST APIs require at minimum:

  • Content-Type: application/json (when sending a JSON body)
  • Authorization: Bearer YOUR_TOKEN (for token-based authentication)

Do not paste API tokens directly into the flow. Instead, store them in your environment’s custom settings or use a connection reference. This prevents tokens from being exposed in flow exports.

Step 4: Set the request body

For POST and PUT requests, enter your JSON payload in the Body field. Use the dynamic content panel to insert values from earlier steps. For example, if a previous step retrieved a name from a form submission, you can insert that name into the body of your API call.

Make sure the body is valid JSON. A common mistake is leaving a trailing comma after the last property or forgetting to wrap string values in quotes.

Step 5: Parse the API response

After the HTTP action, add a Parse JSON action. Set the Content field to the Body output of the HTTP action. Click Generate from sample, paste an example response from the API’s documentation, and click Done. Power Automate generates a schema that lets you reference individual fields from the response in subsequent steps.

Step 6: Handle errors

The HTTP action returns a Status code output. A status code in the 200-299 range indicates success. 400-499 indicates a client error (bad request, authentication failure). 500-599 indicates a server error.

Configure Run after settings on the steps that follow the HTTP action to handle failure cases. A simple approach is to add a Condition that checks whether the status code equals 200, then branch to a success path and an error path. On the error path, send an alert with the status code and response body to help diagnose what went wrong.

Our tip: Always test the HTTP action with a tool like Postman or curl before building the flow. Verify the headers, authentication, and body format work correctly against the API first. Debugging authentication issues inside a flow is significantly slower than doing it in a dedicated API client.

Frequently asked questions

Is the HTTP action free in Power Automate?

No. The HTTP action is classified as a premium connector in Power Automate. You need a Power Automate Premium license (per user) or a Power Automate Process license (per flow) to use it. Standard Microsoft 365 plans include access to standard connectors only. If you need HTTP requests without a premium license, one alternative is to use an Azure Logic Apps flow, which has a different pricing model based on execution count.

How do I pass authentication in the HTTP action?

The HTTP action has a built-in Authentication field that supports None, Basic, Client Credentials (OAuth), Raw, Certificate, and Active Directory OAuth options. For APIs that use a Bearer token, select Raw in the Authentication field and enter Bearer followed by your token, or add the Authorization header manually in the Headers section. For API key authentication, add the key as a header (for example, x-api-key) or as a query parameter in the URL, depending on what the API requires.

What is the difference between the HTTP action and the When an HTTP request is received trigger?

The HTTP action sends an outgoing request from your flow to an external API. The When an HTTP request is received trigger creates an incoming webhook URL that other systems can call to start your flow. They are opposite directions: one reaches out, the other listens. Many automations use both: an external system triggers the flow via the HTTP trigger, the flow processes the data, then calls another API using the HTTP action.

Want a dashboard or automation built for you?

Stuurboard BI builds custom Power BI dashboards and workflow automations. Pragmatic, fast, and without the fuss.