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

# Proxy

> Forward any request to the connected provider’s API with the user’s credentials.

Sends your request to the provider of the given connection, at `{provider base URL}/{path}`, with the user’s access token. Any HTTP method is accepted. The query string, body and other headers are forwarded unchanged, and the provider’s response is returned unchanged.

Guide: [Proxy overview](/docs/guides/proxy/overview).

## Path

<ParamField path="path" type="string" required>
  The provider API path, relative to the provider’s base URL. For example `user/repos` for GitHub’s `https://api.github.com/user/repos`. Each provider’s base URL is listed on [bundleup.io/integrations](https://www.bundleup.io/integrations).
</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>
  `Bearer YOUR_API_KEY`, or `Bearer YOUR_API_KEY.CONNECTION_ID`. Replaced with the user’s token before forwarding.
</ParamField>

<ParamField header="BU-Connection-Id" type="string">
  The connection to use. Required unless it’s appended to the API key.
</ParamField>

<ParamField header="BU-Max-Retries" type="integer" default="3">
  Maximum retries for `GET`, `HEAD` and `OPTIONS` on `408`, `429`, `502`, `503` or `504`. `0` to `5`.
</ParamField>

<ParamField header="BU-Auth-Mode" type="string" default="user">
  GitHub App connections only: `user` or `installation`.
</ParamField>

## Response

The provider’s response: status, headers and body, unchanged. If BundleUp rejects the request first, see [errors](/docs/api-reference/errors#proxy-and-mcp-errors).

## Limits

* 100 requests per 60 seconds per connection.
* 20 s provider timeout on the first attempt, 10 s on retries.

<RequestExample>
  ```bash cURL theme={null}
  curl https://proxy.bundleup.io/user/repos?per_page=10 \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "BU-Connection-Id: conn_abc123"
  ```

  ```typescript JavaScript theme={null}
  const response = await client.proxy('conn_abc123').get('/user/repos?per_page=10');
  const repos = await response.json();
  ```

  ```python Python theme={null}
  response = client.proxy("conn_abc123").get("/user/repos", params={"per_page": 10})
  repos = response.json()
  ```

  ```ruby Ruby theme={null}
  response = client.proxy('conn_abc123').get('/user/repos?per_page=10')
  repos = response.body
  ```
</RequestExample>

<ResponseExample>
  ```json 200 (from the provider) theme={null}
  [
    {
      "id": 1296269,
      "full_name": "octocat/hello-world",
      "private": false
    }
  ]
  ```

  ```json 400 theme={null}
  { "status": 400, "code": "connection_invalid", "message": "Missing or invalid connection ID" }
  ```

  ```json 429 theme={null}
  { "status": 429, "code": "rate_limit", "message": "Too many requests" }
  ```
</ResponseExample>


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