> ## 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.

# Unified API Overview

> One request and response shape per category, across every provider in that category.

The Unified API gives you **one endpoint per common operation**, with the same request parameters and the same response shape whichever provider the connection belongs to. List repositories from GitHub, GitLab or Bitbucket with one call; list tickets from Jira, Linear or Asana with another.

```bash theme={null}
curl https://unify.bundleup.io/v1/git/repos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "BU-Connection-Id: conn_abc123"
```

```json theme={null}
{
  "data": [
    {
      "id": 1296269,
      "name": "hello-world",
      "full_name": "octocat/hello-world",
      "description": "My first repository",
      "url": "https://github.com/octocat/hello-world",
      "created_at": "2011-01-26T19:01:12Z",
      "updated_at": "2026-09-01T10:12:44Z",
      "pushed_at": "2026-09-01T10:12:40Z"
    }
  ],
  "metadata": { "next": "Mg==" }
}
```

Swap the connection ID for a GitLab connection and the response has exactly the same fields.

## How it works

```mermaid theme={null}
flowchart LR
    B[Your backend] -->|"GET /v1/git/repos<br/>+ connection ID"| U[unify.bundleup.io]
    U -->|GitHub connection| GH["GET api.github.com/user/repos"]
    U -->|GitLab connection| GL["GET gitlab.com/api/v4/projects"]
    U -->|Bitbucket connection| BB["GET api.bitbucket.org/2.0/repositories"]
    GH --> N[Normalize]
    GL --> N
    BB --> N
    N -->|"{ data, metadata }"| B
```

BundleUp looks at the connection to see which provider it belongs to, translates your request into that provider’s API call, and converts the provider’s response into the common shape. Errors from the provider aren’t converted: they come back as the provider sent them.

Unified API requests go through the same steps as the [Proxy](/docs/guides/proxy/overview): the same [authentication](/docs/guides/auth/authenticating-requests), [rate limit](/docs/guides/proxy/rate-limits), [retries](/docs/guides/proxy/retries), token refresh and [logging](/docs/guides/operations/logs).

## When to use it

* A feature in your product should work with **whichever provider a customer uses** in a category, without per-provider code.
* You need the **common fields** (names, titles, statuses, dates, URLs) more than provider-specific detail.

When you need something the Unified API doesn’t model, call the provider through the [Proxy](/docs/guides/proxy/overview) with the same connection. Or use [`include_raw`](/docs/guides/unified/conventions#include-the-raw-response) to get the provider’s original response alongside the normalized one.

## Categories

| Category | Endpoints |
| - | - |
| [Account](/docs/guides/unified/account) | `GET /v1/me`: who the connection is authenticated as. Every integration supports it. |
| [Chat](/docs/guides/unified/chat) | Users, channels, messages, and sending a message |
| [Git](/docs/guides/unified/git) | Repositories, pull requests, issues, tags, releases, branches, commits |
| [Tasks](/docs/guides/unified/tasks) | Tasks, a single task, projects |
| [Helpdesk](/docs/guides/unified/helpdesk) | Support tickets, a single ticket |
| [CRM](/docs/guides/unified/crm) | Companies, contacts |
| [Drive](/docs/guides/unified/drive) | Files and folders |
| [Calendar](/docs/guides/unified/calendar) | Events in a time window |

Not every provider in a category supports every endpoint. Each provider’s page on [bundleup.io/integrations](https://www.bundleup.io/integrations) lists the Unified API endpoints it supports. Calling an endpoint the connection’s provider doesn’t support returns `404`.

## What it isn’t

The Unified API isn’t a complete replacement for each provider’s API. It covers the operations most products need across a category, mostly reads. It doesn’t try to model every field or edge case. That’s by design: a smaller, consistent surface is what makes it work the same everywhere.

## Reference

Every endpoint, with its parameters and response schema, is in the [Unified API reference](/docs/api-reference/unified-api), generated from the API’s OpenAPI spec. Start with [Conventions](/docs/guides/unified/conventions) for the rules that apply to all endpoints.


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