Skip to main content

Installation

Install the SDK using your preferred package manager: npm:
yarn:
pnpm:

Requirements

  • Node.js: 16.0.0 or higher
  • TypeScript: 5.0+ (for TypeScript projects)
  • Fetch API: Native fetch support (Node.js 18+) or polyfill for older versions

Node.js Compatibility

For Node.js versions below 18, you’ll need to install a fetch polyfill:
Then import it before using the SDK:

Features

  • 🚀 TypeScript First - Built with TypeScript, includes comprehensive type definitions
  • 📦 Modern JavaScript - ESM and CommonJS support for maximum compatibility
  • Promise-based API - Async/await support using native fetch
  • 🔌 100+ Integrations - Connect to Slack, GitHub, Jira, Linear, and many more
  • 🎯 Unified API - Consistent interface across all integrations via Unify API
  • 🔑 Proxy API - Direct access to underlying integration APIs
  • 🪶 Lightweight - Zero dependencies beyond native fetch API
  • 🛡️ Error Handling - Comprehensive error messages and validation
  • 📚 Well Documented - Extensive documentation and examples

Quick Start

Get started with BundleUp in just a few lines of code:

Authentication

The BundleUp SDK uses API keys for authentication. You can obtain your API key from the BundleUp Dashboard.

Getting Your API Key

  1. Sign in to your BundleUp Dashboard
  2. Navigate to API Keys
  3. Click Create API Key
  4. Copy your API key and store it securely

Initializing the SDK

Security Best Practices

  • DO store API keys in environment variables
  • DO use a secrets management service in production
  • DO rotate API keys regularly
  • DON’T commit API keys to version control
  • DON’T hardcode API keys in your source code
  • DON’T share API keys in public channels
Example .env file:
Loading environment variables:

Core Concepts

Platform API

The Platform API provides access to core BundleUp features like managing connections and integrations. Use this API to list, retrieve, and delete connections, as well as discover available integrations.

Proxy API

The Proxy API allows you to make direct HTTP requests to the underlying integration’s API through BundleUp. This is useful when you need access to integration-specific features not covered by the Unify API.

Unify API

The Unify API provides a standardized, normalized interface across different integrations. For example, you can fetch chat channels from Slack, Discord, or Microsoft Teams using the same API call.

API Reference

Connections

Manage your integration connections.

List Connections

Retrieve a list of all connections in your account.
With query parameters:
Query Parameters:
  • integration_id (string): Filter by integration ID
  • integration_identifier (string): Filter by integration identifier (e.g., ‘slack’, ‘github’)
  • external_id (string): Filter by external user/account ID
  • limit (number): Maximum number of results (default: 50, max: 100)
  • offset (number): Number of results to skip for pagination
Response:

Retrieve a Connection

Get details of a specific connection by ID.
Response:

Delete a Connection

Remove a connection from your account.
Note: Deleting a connection will revoke access to the integration and cannot be undone.

Integrations

Discover and work with available integrations.

List Integrations

Get a list of all available integrations.
With query parameters:
Query Parameters:
  • status (string): Filter by status (‘active’, ‘inactive’, ‘beta’)
  • limit (number): Maximum number of results
  • offset (number): Number of results to skip for pagination
Response:

Retrieve an Integration

Get details of a specific integration.
Response:

Webhooks

Manage webhook subscriptions for real-time event notifications.

List Webhooks

Get all registered webhooks.
With pagination:
Response:

Create a Webhook

Register a new webhook endpoint.
Webhook Events:
  • connection.created - Triggered when a new connection is established
  • connection.deleted - Triggered when a connection is removed
  • connection.updated - Triggered when a connection is modified
Request Body:
Response:

Retrieve a Webhook

Get details of a specific webhook.

Update a Webhook

Modify an existing webhook.

Delete a Webhook

Remove a webhook subscription.

Webhook Payload Example

When an event occurs, BundleUp sends a POST request to your webhook URL with the following payload:

Webhook Security

To verify webhook signatures:

Proxy API

Make direct HTTP requests to integration APIs through BundleUp.

Creating a Proxy Instance

GET Request

With custom headers:

POST Request

With custom headers:

PUT Request

PATCH Request

DELETE Request

Working with Different Content Types

Sending form data:
Uploading files:

Handling Binary Data

Unify API

Access unified, normalized data across different integrations with a consistent interface.

Creating a Unify Instance

Chat API

The Chat API provides a unified interface for chat platforms like Slack, Discord, and Microsoft Teams.
List Channels
Retrieve a list of channels from the connected chat platform.
Parameters:
  • limit (number, optional): Maximum number of channels to return (default: 100, max: 1000)
  • after (string, optional): Pagination cursor from previous response
  • include_raw (boolean, optional): Include raw API response from the integration (default: false)
Response:
Pagination example:

Git API

The Git API provides a unified interface for version control platforms like GitHub, GitLab, and Bitbucket.
List Repositories
Response:
List Pull Requests
Parameters:
  • repoName (string, required): Repository name in the format ‘owner/repo’
  • limit (number, optional): Maximum number of PRs to return
  • after (string, optional): Pagination cursor
  • include_raw (boolean, optional): Include raw API response
Response:
List Tags
Response:
List Releases
Response:

Ticketing API

The Ticketing API provides a unified interface for ticketing and project management platforms like Jira, Linear, Asana, and Trello.
List Tickets
Response:
Note: Trello has no endpoint that lists every card, so it returns the cards the connected member is on. To list every card on a board instead, send the board id through the params passthrough parameter as {"board": "5abbe4b7ddc1b351ef961414"}. Trello also returns its collections in a single page, so metadata.next is always null for Trello connections. Filtering and sorting:
List Projects
Response:
Note: Not every platform returns every field. Jira does not expose creation or update timestamps for projects, so created_at and updated_at are null for Jira connections, and status is only set when Jira reports whether the project is archived.

Error Handling

The SDK throws standard JavaScript errors with descriptive messages. Always wrap SDK calls in try-catch blocks for proper error handling.