---
title: Execute API
description: Interact with external APIs by configuring endpoints, request methods, authentication, headers, pagination, and data handling.
category: Application
tags: [api, integration, rest, request, external service, json]
---

# Execute API

## **Description**

The **Execute API Activity** enables workflows to connect and communicate with any RESTful API by executing configurable HTTP requests such as `GET`, `POST`, `PUT`, or `DELETE`. It allows users to define the request structure including headers, query parameters, body content, pagination rules, response parsing, and authentication.

This activity is highly flexible and supports integration with **third-party systems**, **custom backends**, **public APIs**, and , all without requiring external tools.

> **Use case**:  
> In a logistics automation workflow, use this activity to call a courier tracking API like `https://api.courier.com/track` to fetch live shipment updates. You can pass tracking numbers dynamically using `Form Data`, handle pagination, and export the results as JSON or CSV for audit purposes.

---

## **Input**

| Type | Required | Description                                                                                                                                       |
| ---- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Data | Optional | Used when request parameters, body, or headers need to be constructed using values from previous activities (e.g., row-based input or iteration). |

---

## **Output**

| **Field** | **Required** | **Description**                                                                                                                                               |
| --------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Data`    | Optional     | Used when request parameters, body, or headers need to be dynamically constructed using values from previous activities (e.g., row-based input or iteration). |

---

## **Configuration Fields**

| **Field Name**                     | **Description**                                                                                                   |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Connection**                     | Authentication configuration for the API. Supports OAuth, Basic Auth, API Keys, etc.                              |
| **Request Type**                   | HTTP method used for the API call (e.g., `GET`, `POST`, `PUT`, `DELETE`).                                         |
| **Request URL**                    | Full endpoint URL for the API call. Variables can be injected using replacers like `{{args.param}}`.              |
| **Content Type**                   | MIME type of the request body (e.g., `application/json`, `application/x-www-form-urlencoded`, `application/xml`). |
| **Headers**                        | Custom HTTP headers as key-value pairs (e.g., `Authorization`, `X-API-KEY`, `Accept`).                            |
| **Form Data**                      | Used for submitting form-encoded data. Typically used with `application/x-www-form-urlencoded`.                   |
| **URL Params**                     | Key-value pairs appended as query parameters to the endpoint (e.g., `?status=active&page=1`).                     |
| **Parameters**                     | Generic key-value inputs, optionally mapped to dynamic values from previous rows.                                 |
| **Body**                           | Body of the request, in raw JSON/XML format. Required for `POST`/`PUT` operations.                                |
| **Continue Execution on Failure**  | If enabled, the workflow continues even if the API request fails (useful for optional services or retries).       |
| **Replacer for All Rows**          | Enables replacing placeholders with input values from each row (useful for batch processing or iterations).       |
| **Next Page Key Path**             | JSON path to locate the next page token from the response for paginated APIs (e.g., `data.pagination.next`).      |
| **Next Page Key**                  | Initial value of the pagination token (if available).                                                             |
| **Next Page Key Behaviour**        | Determines where the next page key is used (`URL`, `Params`, or `Header`).                                        |
| **Include Headers in Response**    | If enabled, response headers are returned along with the data.                                                    |
| **Read Next Page Key from Header** | Enable to extract the pagination token directly from a response header.                                           |
| **Replace Next Page Key With**     | Specifies the placeholder in the URL or body to be replaced with the next page key (e.g., `{{nextPageToken}}`).   |
| **Search Key to Replace**          | Field key in the response body whose value should be replaced dynamically.                                        |
| **Root of Response**               | JSON path to the array/object that holds the main response content (e.g., `results`, `data.items`).               |
| **File Type**                      | Desired export format from API response (e.g., `CSV`, `JSON`, `XML`).                                             |
| **JSON Field**                     | Field inside the API response that holds the array to be exported.                                                |
| **Delay**                          | Optional delay (in milliseconds) between paginated requests or retries.                                           |
| **Accept Encoding**                | Content encoding expected in the response (e.g., `gzip`, `deflate`).                                              |

---

## **Sample Input**

_Not applicable_

---

## **Sample Configuration**

| Field                      | Value                                          |
| -------------------------- | ---------------------------------------------- |
| `connection.id`            | `public-api-oauth`                             |
| `requestType`              | `GET`                                          |
| `requestUrl`               | `https://api.example.com/customers`            |
| `contentType`              | `application/json`                             |
| `headers`                  | `{ "Authorization": "Bearer {{args.token}}" }` |
| `urlParams`                | `{ "status": "active", "limit": 100 }`         |
| `nextPageKeyPath`          | `pagination.nextPageToken`                     |
| `replaceNextPageKeyWith`   | `{{nextPageToken}}`                            |
| `nextPageKeyBehaviour`     | `URL`                                          |
| `rootOfResponse`           | `data.customers`                               |
| `includeHeadersInResponse` | `true`                                         |
| `fileType`                 | `JSON`                                         |

---

## **Sample Output**

| Customer ID | Name       | Email                  | Status |
| ----------- | ---------- | ---------------------- | ------ |
| 1001        | John Smith | john.smith@example.com | Active |
| 1002        | Jane Doe   | jane.doe@example.com   | Active |

> If `Include Headers in Response` is enabled, the output will also include an `_headers` field containing all HTTP response headers.

---
