Skip to main content
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.
Swap the connection ID for a GitLab connection and the response has exactly the same fields.

How it works

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: the same authentication, rate limit, retries, token refresh and logging.

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 with the same connection. Or use include_raw to get the provider’s original response alongside the normalized one.

Categories

Not every provider in a category supports every endpoint. Each provider’s page on 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, generated from the API’s OpenAPI spec. Start with Conventions for the rules that apply to all endpoints.