> For the complete documentation index, see [llms.txt](https://docs.uncodie.com/1.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.uncodie.com/1.0/agentbase/introduction/use-cases/external-api-consumption.md).

# External API consumption

## Overview

Use a flow that executes any API and send the data to a agent or function.

### External API Consumption

Consuming external APIs involves interacting with APIs provided by third-party services. This typically requires:

1. **Authentication**: Obtain and use API keys or tokens.
2. **Requests**: Send HTTP requests to API endpoints.
3. **Responses**: Handle responses, usually in JSON or XML format.
4. **Error Handling**: Manage errors and exceptions properly.
5. **Rate Limiting**: Respect limits set by the API provider to avoid being blocked.

## Prompt Engineering

Known LLMs indexed API consumpition

```
use twillio to send a sms to the target phone
```

Unknown or specific documentation API consumption

```
use the API in myapi.example.com to create a new object
```

## Usage

Leverage Base to easily design your API and prototype apps, UX, or screens. To experiment with different outcomes, set "`cached`" to `false`

Using `/base` with "`cached`" is equivalent to direclty calling the function after is creation, all none neccesary params will be ignored.

<mark style="color:green;">`POST`</mark> `/base`

Creates a new flow with one or more actions, installs dependencies, builds tests and executes the resulting code.

Actions can be agents, backend functions, or cloud functions.

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**

<table><thead><tr><th width="219">Name</th><th width="101">Type</th><th width="103" data-type="checkbox">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>name</code></td><td>string</td><td>true</td><td>Name of the flow to summarize the actions</td></tr><tr><td><code>prompt</code></td><td>string</td><td>true</td><td>The instructions for AgentBase to transform in to code</td></tr><tr><td><code>data</code></td><td>object</td><td>false</td><td>The data example or parameters for your function to work</td></tr><tr><td><code>schedule</code></td><td>string</td><td>false</td><td>The cron calendar for the function to run automatically</td></tr><tr><td><code>return</code></td><td>object</td><td>false</td><td>The data example of your expected return</td></tr><tr><td><code>model</code></td><td>string</td><td>false</td><td>The model to run for your prompt</td></tr><tr><td><code>errors</code></td><td>array</td><td>false</td><td>List or possible errors your function needs to catch</td></tr><tr><td><code>cached</code></td><td>boolean</td><td>false</td><td>It will use the last version of the function whenever is available to save time and tokens</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "run_id": 1,
  "return": {
    "message_id" : "id"
  },
  "error": null
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

#### Body Example

{% code overflow="wrap" lineNumbers="true" %}

```json

{
    "function": "send_sms",
    "prompt": "use twillio to send a sms to the target phone",
    "data" : {
        "number": "phone example",
        "message": "message example"
    },
    "return" : {
        "message_id":"id"
    }
}
```

{% endcode %}
