Official SDKs

Ship faster with production-ready client libraries for JavaScript and PHP. Full coverage of the Tabi API with zero external dependencies.

JavaScript / TypeScript

tabi-sdk on npm

Install

npm install tabi-sdk

Quick start

import { TabiClient } from 'tabi-sdk';

const tabi = new TabiClient({
  apiKey: 'tk_your_api_key',
  baseUrl: 'https://api.tabi.africa/api/v1',
});

// List channels
const channels = await tabi.channels.list();

// Send a WhatsApp message
await tabi.messages.send('channel-id', {
  to: '2348012345678',
  content: 'Hello from Tabi!',
});

The npm package exports TypeScript types for request bodies (for example CreateApiKeyPayload, ChannelSendPayload) and JSDoc on methods for IDE parameter hints. Cross-check the public API docs for full request and response schemas.

PHP

tabi/sdk on Packagist

Install

composer require tabi/sdk

Quick start

<?php

use Tabi\SDK\TabiClient;

$tabi = new TabiClient(
    'tk_your_api_key',
    'https://api.tabi.africa/api/v1'
);

// List channels
$channels = $tabi->channels()->list();

// Send a WhatsApp message
$tabi->messages()->send('channel-id', [
    'to' => '2348012345678',
    'content' => 'Hello from Tabi!',
]);

Install: composer require tabi/sdk. Full method reference: vendor/tabi/sdk/README.md (includes hosted OTP: sendOtp, verifyOtp). Product overview: tabi.africa/sdks.

Python

tabi-sdk on PyPI

Install

pip install tabi-sdk

Quick start

import os
from tabi_sdk import TabiClient

client = TabiClient(
    api_key=os.environ["TABI_API_KEY"],
    base_url="https://api.tabi.africa/api/v1",
)

client.messages.send(
    "channel-id",
    {"to": "2348012345678", "content": "Hello from Python!"},
)

Same REST layout as the JS client (TabiClient resource groups). See the package README for send payloads, webhooks, and OTP helpers.

Laravel

tabi/laravel-sdk on Packagist

Install

composer require tabi/laravel-sdk

Quick start

<?php

use Tabi\Laravel\Facades\Tabi;

// Send (configure TABI_API_KEY in .env; provider auto-discovers)
Tabi::messages()->send('channel-id', [
    'to' => '2348012345678',
    'content' => 'Hello from Laravel!',
]);

Wraps tabi/sdk with a service provider and Tabi facade. Set TABI_API_KEY and optional TABI_BASE_URL in .env.

Dart / Flutter

tabi_sdk on pub.dev

Install

# pubspec.yaml
dependencies:
  tabi_sdk: ^0.1.0

Or run: flutter pub add tabi_sdk

Quick start

import 'package:tabi_sdk/tabi_sdk.dart';

Future<void> main() async {
  final tabi = TabiClient(
    'tk_your_api_key',
    baseUrl: 'https://api.tabi.africa/api/v1',
  );
  await tabi.channels().list();
  await tabi.messages().send('channel-id', {
    'to': '2348012345678',
    'content': 'Hello from Flutter / Dart!',
  });
}

Use the same TabiClient in Flutter mobile apps, CLI, or server-side Dart. See pub.dev for the latest constraint and changelog.

Full API coverage

Auth
Channels
Messages
Contacts
Conversations
Webhooks
API Keys
Files
Campaigns
Automation Templates
Automation Installs
Quick Replies
Analytics
Notifications
Integrations
Workspaces

Every REST path is described in OpenAPI at /api-docs. The dashboard API reference includes Try it out for authenticated sessions.