Skip to main content
Every request to the Proxy, Unified API or MCP needs two values:
The Platform API and the code exchange only need the Authorization header, since they don’t act on a specific account.

How BundleUp checks a request

Before anything reaches the provider:
  1. The API key is looked up. Missing or unknown → 401 (on the Unified API, a missing key is a 400 validation error).
  2. The connection is looked up and must belong to the same workspace as the API key. Missing, unknown, deleted or from another workspace → 400 connection_invalid (on the Unified API, 404).
  3. The connection’s rate limit is checked. Over the limit → 429.
If a check fails, nothing is sent to the provider. There’s no separate permission per connection: any API key in a workspace can use any connection in that workspace. Keep your connection-to-user mapping in your own database, and make sure your code only uses the connection that belongs to the current user.

Your Authorization header is replaced

BundleUp removes your Authorization header and sets the provider’s one, containing the user’s access token, before forwarding. Your API key is never sent to the provider. BU- headers are also removed.

Single-token form

Some clients can only send one credential and can’t add a second header. Model-hosted MCP (OpenAI’s and Anthropic’s MCP connectors) is the common case. For those, join the API key and connection ID with a dot:
BundleUp splits the value on the first .. API keys and connection IDs never contain a dot, so this is unambiguous. If you also send BU-Connection-Id, the header wins. This form works on the Proxy and MCP. The Unified API always requires the BU-Connection-Id header. See Using MCP clients.

With the SDKs

The SDKs take the API key once and the connection ID per call:

Errors

The Unified API uses a different error envelope. See the errors reference.