Authorization header, since they don’t act on a specific account.
How BundleUp checks a request
Before anything reaches the provider:- The API key is looked up. Missing or unknown →
401(on the Unified API, a missing key is a400validation error). - 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). - The connection’s rate limit is checked. Over the limit →
429.
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:.. 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.

