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

# Send API request

> Send an HTTP request to any external API endpoint from within a Workflow.

Send an HTTP request to any external API from within a [Workflow](/workflows/overview). Use this to connect to services that don't have a native Cassidy integration, or to interact with custom APIs.

<Steps>
  <Step title="Add the action">
    In the Workflow builder, click **+** between blocks and select **Send API Request** from the action library.

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-0.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=fefcf467cba86f1bbe7b0112605a6f1e" alt="Action library with Send API Request selected" width="900" height="542" data-path="images/reference/send-api-request-img-0.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-1.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=88c8a077cc97a71ae57cf275cc12cb6c" alt="Send API Request action added to the Workflow" width="904" height="1762" data-path="images/reference/send-api-request-img-1.png" />
    </Frame>
  </Step>

  <Step title="Enter the URL">
    In the **URL** field, enter the destination for the API request. You can hardcode the URL or use **#** to [insert variables](/guides/prompt-engineering#workflow-prompts) from previous steps or the trigger to build it dynamically.

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-3.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=ec52ae05b1c859f546517059fdbb8e33" alt="URL field with variable reference" width="888" height="210" data-path="images/reference/send-api-request-img-3.png" />
    </Frame>
  </Step>

  <Step title="Select the method">
    Choose the HTTP method that matches your API endpoint's requirements:

    * **GET** — Retrieve data
    * **POST** — Create a new resource
    * **PUT** — Replace an existing resource
    * **PATCH** — Partially update a resource
    * **DELETE** — Remove a resource

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-4.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=36182efab35fab42eda674ee3cbb896b" alt="HTTP method dropdown showing GET, POST, PUT, PATCH, and DELETE" width="898" height="212" data-path="images/reference/send-api-request-img-4.png" />
    </Frame>
  </Step>

  <Step title="Add headers">
    If the API requires specific headers (such as authentication or content type), click **+ Add Header**. Fill in the **Key** and **Value** fields for each header. You can reference variables in header values using **#**.

    For sensitive values like API keys, use [Secret Keys](/workflows/advanced/secret-keys) instead of pasting credentials directly.

    Click the trash icon next to a header to remove it.

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-5.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=46aafac9aaeabde268987d3babc81875" alt="Headers section with Key and Value fields" width="998" height="414" data-path="images/reference/send-api-request-img-5.png" />
    </Frame>
  </Step>

  <Step title="Add a request body">
    Depending on the HTTP method, you may need to include a request body. Click **+ Add Body Field** and fill in **Key** and **Value** pairs. You can reference variables in body values using **#**.

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-6.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=04a1035a80652703f6c7efa3e1161e9f" alt="Body section with Key and Value fields" width="1038" height="722" data-path="images/reference/send-api-request-img-6.png" />
    </Frame>

    If you need full control over the JSON structure, click **Switch to raw body input** to enter your own JSON object directly.

    <Frame>
      <img src="https://mintcdn.com/cassidy/ETDpmcHPDhtRlAWy/images/reference/send-api-request-img-7.png?fit=max&auto=format&n=ETDpmcHPDhtRlAWy&q=85&s=6b87d6a0033c65ff9cc5393a85412273" alt="Raw body input mode with JSON editor" width="1030" height="442" data-path="images/reference/send-api-request-img-7.png" />
    </Frame>
  </Step>

  <Step title="Use the response">
    The response body and status code are available as variables in subsequent steps.
  </Step>
</Steps>

<Tip>For sensitive values like API keys, use [Secret Keys](/workflows/advanced/secret-keys) instead of hardcoding credentials in your Workflow.</Tip>

## Related

* [Secret Keys](/workflows/advanced/secret-keys)
* [Webhooks](/integrations/webhooks)
* [Connect non-native apps](/integrations/connect-non-native-apps)
