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

# SDKs

> Official BundleUp SDKs for JavaScript/TypeScript, Python and Ruby.

The SDKs wrap every BundleUp API in a single client. They’re optional: everything they do is a plain HTTPS call you can make yourself, as the cURL examples throughout these docs show.

| Language | Package | Install | Reference |
| - | - | - | - |
| JavaScript / TypeScript | [`@bundleup/sdk`](https://www.npmjs.com/package/@bundleup/sdk) | `npm install @bundleup/sdk` | [JavaScript](/docs/sdks/javascript) |
| Python | [`bundleup-sdk`](https://pypi.org/project/bundleup-sdk/) | `pip install bundleup-sdk` | [Python](/docs/sdks/python) |
| Ruby | [`bundleup-sdk`](https://rubygems.org/gems/bundleup-sdk) | `gem install bundleup-sdk` | [Ruby](/docs/sdks/ruby) |

## What’s in each SDK

Create a client with your API key, then use:

| Client | What it wraps | Guide |
| - | - | - |
| `client.auth` | Building the authorization URL and exchanging codes | [Connecting user accounts](/docs/guides/auth/authorization-flow) |
| `client.connections`, `client.integrations`, `client.webhooks` | The Platform API | [Platform API](/docs/api-reference/platform-api) |
| `client.proxy(connectionId)` | The Proxy: `get`, `post`, `put`, `patch`, `delete` | [Proxy](/docs/guides/proxy/overview) |
| `client.unify(connectionId)` | The Unified API, grouped by category | [Unified API](/docs/guides/unified/overview) |
| `client.mcp(connectionId)` | MCP: `hosted()`, `transport()`, raw `post` and `delete` | [MCP](/docs/guides/mcp/overview) |

Python uses `snake_case` method names (`build_authorization_url`) and singular resource names (`client.connection`, `client.integration`, `client.webhook`). See each SDK’s reference for exact signatures.

```typescript theme={null}
import { BundleUp } from '@bundleup/sdk';

const client = new BundleUp(process.env.BUNDLEUP_API_KEY);

// Proxy: the provider's own API
const repos = await (await client.proxy('conn_abc123').get('/user/repos')).json();

// Unified API: a normalized shape
const channels = await client.unify('conn_def456').chat.channels({ limit: 50 });

// MCP: hand a connection to a model provider
const { url, token } = client.mcp('conn_ghi789').hosted();
```

## Error handling

Proxy and MCP calls return the provider’s response as-is, so check the status yourself: a provider error isn’t thrown. Other calls throw errors with descriptive messages; wrap them in your language’s error handling. See [Handling errors](/docs/guides/operations/error-handling).

## Use on the server only

The SDKs need your API key, so use them in backend code only, never in a browser or mobile app.


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