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

# Making API Requests

> Integrate with any API in minutes with Paragon's request step.

## Overview

You can make requests to any HTTP API using Paragon's Request step. This is useful for building workflows that interface with your own internal APIs, or with services that Paragon might not support integration with yet.

<Frame caption="">
  <img src="https://mintcdn.com/paragon/7RZyQGncIlY8Xl4A/assets/Making%20an%20API%20Request%20in%20Paragon.png?fit=max&auto=format&n=7RZyQGncIlY8Xl4A&q=85&s=a4e30430438fd356a273425c1c899f77" width="2358" height="892" data-path="assets/Making an API Request in Paragon.png" />
</Frame>

## Making a Request

To add a request to your workflow, click the "+" button in the workflow canvas and choose the Request step from the sidebar. You can follow familiar specifications to setup requests in Paragon:

* URL
* Request type
  * `POST`
  * `GET`
  * `PATCH`
  * `PUT`
  * `DELETE`
* Request data
  * Query parameters
  * Headers
  * Body parameters
    * `JSON`
    * `multipart/form-data`
    * `x-www-form-urlencoded`
    * `GraphQL`
    * `XML`
    * `Raw`
  * Authorization
    * `Bearer Token`
    * `Basic Auth`
    * `Query Params`
    * `Auth Header`
    * `OAuth 2.0 Client Credentials`
    * `OAuth 2.0 Refresh Token`
    * `ROPC Access Token`

### Configuring your Request URL

You can enter the request URL in the input under "**Request URL"**. You can also include parameters as part of the URL by typing `{{` to invoke the variable menu.

<Frame caption="">
  <img src="https://mintcdn.com/paragon/867oBBVpxd2C3zc4/assets/Using%20the%20variable%20menu%20for%20a%20Request%20in%20Paragon.gif?s=301ed0ae152baa8a4a827762861543fe" width="596" height="447" data-path="assets/Using the variable menu for a Request in Paragon.gif" />
</Frame>

The **variable menu** allows you to reference data from upstream steps in your request URL. For example, we can pass a `userId` from the Trigger into the request URL, which is represented as: `/users/{{1.request.body.userId}}`

### Sending data in the request

Query parameters, headers, and body parameters can be included in the request by adding them in the key-value table under their respective heading.

<Frame caption="">
  <img src="https://mintcdn.com/paragon/HSp5hB8tE4Z6e44m/assets/Sending%20a%20JSON%20request%20in%20Paragon.gif?s=95c72eb253d7bc9c145a67ee00398b17" width="964" height="487" data-path="assets/Sending a JSON request in Paragon.gif" />
</Frame>

When using the key-value table, you can type in **static values** or **reference variables** from upstream steps by invoking the variable menu using the dropdown button.

### Sending JSON in a request

You can easily send JSON in a request by choosing `Raw` in the dropdown to the right of Body. When creating the raw JSON body, you can type in **static values** or **reference variables** from upstream steps by typing `{{` to invoke the variable menu.

<Frame caption="">
  <img src="https://mintcdn.com/paragon/HSp5hB8tE4Z6e44m/assets/Sending%20nested%20JSON%20through%20a%20Request%20step%20in%20Paragon.png?fit=max&auto=format&n=HSp5hB8tE4Z6e44m&q=85&s=8967cc678ff5f24af5c29dcff4d3951f" width="1938" height="736" data-path="assets/Sending nested JSON through a Request step in Paragon.png" />
</Frame>

### Handling request failures

You can choose whether or not the workflow should continue to the next step if the request fails under "Continue workflow if request fails". This option is useful if you want to conditionally handle request failures. You can do this by adding a [Conditional](/automate/building-workflows/using-conditionals) step after the Request step, then referencing the request's response status code in the [Conditional](/automate/building-workflows/using-conditionals).

<Frame caption="">
  <img src="https://mintcdn.com/paragon/7RZyQGncIlY8Xl4A/assets/Handling%20request%20failures%20with%20a%20conditional%20step%20in%20Paragon.png?fit=max&auto=format&n=7RZyQGncIlY8Xl4A&q=85&s=8558443f81b8367c4831a028388f0385" width="2736" height="952" data-path="assets/Handling request failures with a conditional step in Paragon.png" />
</Frame>
