Unipile GitHub: SDKs, Docs & Integration Guide

Explore Unipile's GitHub repos, official SDKs, quick-start examples, and how its unified messaging API compares with alternatives like UnifyPort.

Unipile GitHub: SDKs, Docs, and How to Get Started

If you are evaluating Unipile as a multi-channel messaging and email API, GitHub is the first place most developers look. The Unipile GitHub organization hosts the official developer documentation repository, language-specific SDKs, and issue trackers where the team accepts feedback and bug reports.

This guide explains what lives in the Unipile GitHub ecosystem, how to install and use the official SDKs, what the API covers, and how Unipile compares with a unified messaging platform such as UnifyPort when your channels differ.

What Is in the Unipile GitHub Organization?

The Unipile GitHub profile currently lists six public repositories. The most important ones for integration work are:

  • Developer documentation repository — the central hub for guides, API references, and product resources.
  • Unipile Node.js SDK — a wrapper for the Unipile API covering LinkedIn, WhatsApp, Email, Telegram, Instagram, Messenger, and X (Twitter).
  • Unipile Python SDK — the official Python client for Unipile API v2, currently in beta.
  • Unipile PHP SDK — the official PHP client for teams working in Laravel, Symfony, or other PHP stacks.

The organization page points developers to the official documentation site for comprehensive guides and to the SDK repositories for language-specific installation and usage instructions.

Unipile Node.js SDK: Installation and Quick Start

Unipile GitHub: SDKs, Docs & Integration Guide - Unipile Node.js SDK: Installation and Quick Start

Unipile GitHub: SDKs, Docs & Integration Guide - Unipile Node.js SDK: Installation and Quick Start.

The Node.js SDK is the most mature client and the one most frequently referenced in support threads and integration examples. It requires Node 18 or newer.

Install the SDK

npm install unipile-node-sdk

Authenticate with Your Unipile Credentials

import { UnipileClient } from 'unipile-node-sdk';

const client = new UnipileClient('https://{YOUR_DSN}', '{YOUR_ACCESS_TOKEN}');

The DSN is the endpoint assigned to your Unipile account, and the access token is generated from the dashboard.

Connect a Messaging Account

The SDK supports provider-specific connection methods. For example, to connect a LinkedIn account with username and password:

const response = await client.account.connectLinkedin({
  username: 'your LinkedIn username',
  password: 'your LinkedIn password',
});

Other supported connection methods include:

  • connectWhatsapp()
  • connectInstagram({ username, password })
  • connectMessenger({ username, password })
  • connectTelegram()
  • connectTwitter({ username, password })

For accounts protected by two-factor authentication or one-time passcodes, the SDK exposes a checkpoint solver:

await client.account.solveCodeCheckpoint({
  account_id: 't5XY4yQzR9WVrlNFyzPMhw',
  provider: 'LINKEDIN',
  code: '******',
});

Send a Message

await client.messaging.sendMessage({
  chat_id: 'vISKyHtDUmagrk6vrnlXhw',
  text: 'Hello World',
});

List Chats with Filters

await client.messaging.getAllChats({
  account_type: 'LINKEDIN',
  account_id: 't5XY4yQzR9WVrlNFyzPMhw',
  limit: 50,
  after: '2024-07-22T12:00:00.000Z',
});

Send File Attachments

const fs = require('fs');
const path = './src/unipile.png';
const fileBuffer = await fs.readFile(path);

await client.messaging.sendMessage({
  chat_id: 'vISKyHtDUmagrk6vrnlXhw',
  text: 'Hello World',
  attachments: [['unipile.png', fileBuffer]],
});

Handle Errors by Type

The SDK throws UnsuccessfulRequestError instances with structured error bodies. You can branch on HTTP status or on the API error type:

try {
  const result = await client.messaging.getAllAttendees({ account_id });
} catch (err) {
  if (err instanceof UnsuccessfulRequestError) {
    const { status, type } = err.body;
    switch (type) {
      case 'errors/invalid_credentials':
        // prompt re-authentication
        break;
      case 'errors/disconnected_account':
        // trigger reconnect flow
        break;
      default:
        // log and retry or surface to user
        break;
    }
  }
}

Call Endpoints Not Yet Packaged in the SDK

For routes that the SDK does not yet wrap, the client exposes a raw request method. This is useful for LinkedIn actions such as following a company or profile:

await client.request.send({
  path: ['linkedin'],
  method: 'POST',
  parameters: { account_id: '!!YOURACCOUNTID!!' },
  body: {
    body: { patch: { $set: { following: true } } },
    account_id: 'dfR-rG0tQfGhfeP2l5_Bdw',
    method: 'POST',
    request_url: 'https://www.linkedin.com/voyager/api',
  },
});

Unipile Python SDK: API v2 Beta

The Unipile Python SDK targets Unipile API v2, which is still in beta. Because the package is not yet published on PyPI, install it directly from GitHub:

pip install git+https://github.com/unipile/unipile-python.git

You can pin a specific branch, tag, or commit if your project requires reproducibility:

pip install git+https://github.com/unipile/unipile-python.git@main

Basic usage follows the standard generated-client pattern:

import unipile

configuration = unipile.Configuration()
configuration.api_key["apiKey"] = "apikey"

api_client = unipile.ApiClient(configuration)
messaging_api = unipile.MessagingApi(api_client)

For endpoint details, the repository directs developers to the Unipile v2 API documentation and the dashboard.

Unipile PHP SDK

Unipile GitHub: SDKs, Docs & Integration Guide - Unipile PHP SDK

Unipile GitHub: SDKs, Docs & Integration Guide - Unipile PHP SDK.

The PHP SDK is listed alongside the Node.js client in the main documentation repository. It follows the same design philosophy: a thin wrapper around the REST API that handles authentication, account connection, messaging, attachments, and profile retrieval without requiring developers to manage raw HTTP calls.

What the Unipile API Covers

Across the SDKs, the Unipile API exposes several functional areas:

Account Connection

  • Hosted authentication wizard links for end users
  • Custom authentication flows with provider credentials
  • Cookie and user-agent based connection for LinkedIn
  • Checkpoint and 2FA/OTP resolution
  • Account resync for LinkedIn

Messaging

  • Start new chats
  • Send text messages
  • List and retrieve chats
  • List attendees in a chat
  • Send and retrieve file attachments

User Profiles

  • Retrieve a profile by user ID or provider ID
  • Retrieve the authenticated account's own profile
  • Retrieve LinkedIn company profiles

LinkedIn-Specific Features

  • Send InMail
  • Send and manage connection invitations
  • Create posts and comments
  • Add reactions to posts
  • List contacts and company profiles

Email

  • Retrieve email history
  • Send, reply to, and delete emails

Unipile vs. UnifyPort: Which GitHub-Driven Approach Fits?

Both Unipile and UnifyPort reduce the cost of multi-channel messaging, but they optimize for different channel sets and integration styles.

Capability Unipile UnifyPort
Primary channels LinkedIn, WhatsApp, Email, Telegram, Instagram, Messenger, X Telegram, WhatsApp, LINE, X, Zalo, TikTok
API style REST with official Node.js, PHP, and Python SDKs REST with official Node.js, PHP, and Go SDKs
Event delivery Provider-specific webhooks Standardized JSON event layer with webhook control plane
Reliability features Error types and checkpoint handling Built-in rate limiting, retries with idempotency, failure isolation
Security Access token and API key API keys plus HMAC-SHA256 webhook signatures
Best fit Teams needing deep LinkedIn and email automation AI agents, CRMs, and ops tools needing normalized events across chat apps

If your product depends heavily on LinkedIn automation or email workflows, Unipile's GitHub SDKs are a strong fit. If your stack is built around chat platforms such as Telegram, WhatsApp, LINE, X, Zalo, or TikTok and you need every provider event normalized into one JSON shape, a unified messaging API like UnifyPort removes more provider-specific plumbing.

For teams already running Telegram-heavy workloads, the Telegram bot guide explains how BotFather and the Bot API work, while the Unipile MCP guide shows how to connect AI agents to multi-channel messaging through Model Context Protocol.

Common Integration Pitfalls

1. Ignoring Checkpoint Handling

LinkedIn and other providers frequently trigger 2FA or OTP challenges. A production integration must handle errors/checkpoint_error and errors/invalid_checkpoint_solution gracefully rather than treating them as fatal failures.

2. Not Pinning SDK Versions

The Python SDK is beta and installed directly from Git. Pin a commit or tag in your requirements file to avoid unexpected breakage.

3. Mixing API Versions

The Node.js SDK targets the stable API, while the Python SDK targets API v2 beta. Verify which API version your dashboard credentials belong to before choosing a client.

4. Overlooking Raw Request Fallbacks

Not every provider route is packaged in the SDKs. The raw request method is the escape hatch, but it requires you to understand the underlying provider endpoint and request shape.

Related reading

Sources and further reading

Frequently Asked Questions

Where is the official Unipile GitHub repository?

The organization is at github.com/unipile. It contains the developer documentation repository and the official SDK repositories.

What SDKs does Unipile provide?

Unipile provides official Node.js, PHP, and Python SDKs. The Node.js and PHP SDKs target the stable API, while the Python SDK targets API v2 beta.

How do I install the Unipile Node.js SDK?

Run npm install unipile-node-sdk in a Node 18+ project, then instantiate UnipileClient with your DSN and access token.

Does Unipile support Telegram and WhatsApp?

Yes. The Node.js SDK includes connection methods for both connectTelegram() and connectWhatsapp(), alongside LinkedIn, Instagram, Messenger, X, and email.

Can I use Unipile with Python?

Yes, but the Python SDK is beta and not yet on PyPI. Install it directly from GitHub with pip install git+https://github.com/unipile/unipile-python.git.

How do I report a bug or request a feature?

Open an issue in the relevant GitHub repository or contact the Unipile support team through the documentation repository.

Conclusion

The Unipile GitHub organization is the practical entry point for developers integrating LinkedIn, WhatsApp, email, and other channels through a single API. The Node.js SDK offers the broadest coverage and the most complete examples, while the PHP and Python clients give teams flexibility in their stack. Understanding the account connection flow, checkpoint handling, and error types will save you significant debugging time.

If your channel mix leans toward chat platforms rather than LinkedIn and email, evaluate whether a normalized event layer matters more than deep provider-specific features. In that case, a platform like UnifyPort can complement or replace a provider-heavy SDK approach by giving every message a consistent JSON shape and a managed webhook pipeline.