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

# API Reference

> Base URLs, authentication and conventions for every BundleUp API.

BundleUp exposes five HTTP APIs. They share one API key per workspace.

| API | Base URL | Use it to | Reference |
| - | - | - | - |
| **Auth** | `https://auth.bundleup.io` | Start the authorization flow and exchange codes for connection IDs | [Authorize](/docs/api-reference/auth/authorize), [Exchange a code](/docs/api-reference/auth/exchange-code) |
| **Proxy** | `https://proxy.bundleup.io` | Call a provider’s own API as a connected user | [Proxy](/docs/api-reference/proxy) |
| **Unified API** | `https://unify.bundleup.io/v1` | Call normalized endpoints that work across providers | [Unified API](/docs/api-reference/unified-api) |
| **MCP** | `https://mcp.bundleup.io` | Reach a provider’s MCP server as a connected user | [MCP](/docs/api-reference/mcp) |
| **Platform API** | `https://api.bundleup.io/v1` | Manage connections, integrations and webhooks | [Platform API](/docs/api-reference/platform-api) |

All requests must use HTTPS.

## Authentication

Every API except the browser-facing `/authorize` takes your API key as a bearer token:

```http theme={null}
Authorization: Bearer YOUR_API_KEY
```

The Proxy, Unified API and MCP act on a specific connected account, so they also need:

```http theme={null}
BU-Connection-Id: conn_abc123
```

See [Authenticating API requests](/docs/guides/auth/authenticating-requests) and the full [headers reference](/docs/api-reference/headers).

## Formats

* Request and response bodies are JSON, except on the Proxy and MCP, which pass the provider’s formats through unchanged.
* Timestamps are ISO 8601 strings in UTC, except `webhookTimestamp` in webhook payloads, which is milliseconds since the epoch.
* IDs are opaque strings. Don’t parse them.

## Pagination

* **Platform API:** offset-based. `offset` (0 to 1,000) and `limit` (1 to 100, default 10). List endpoints return a JSON array.
* **Unified API:** cursor-based. `limit` (1 to 100, default 100) and `after`, from the previous page’s `metadata.next`. See [Conventions](/docs/guides/unified/conventions#pagination).

## Errors

Each API returns errors in its own format, and the Proxy, Unified API and MCP also pass provider errors through. See the [errors reference](/docs/api-reference/errors).

## Versioning

The Platform API and Unified API are versioned in the path (`/v1`). Backward-incompatible changes get a new major version. New endpoints and new response fields can be added within a version, so ignore fields you don’t recognize.

The Proxy and MCP aren’t versioned: they mirror whatever the provider’s API or MCP server offers.

<Note>
  The Platform API is still evolving. Public endpoints aren’t expected to change much, but treat it as a draft.
</Note>

## OpenAPI specs

The Platform API and Unified API reference pages are generated from their OpenAPI specs, which you can also use to generate clients:

* Platform API: [`https://api.bundleup.io/v1/openapi.yml`](https://api.bundleup.io/v1/openapi.yml)
* Unified API: [`https://unify.bundleup.io/openapi.json`](https://unify.bundleup.io/openapi.json)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.