API reference

Partner API

Drive your account programmatically over HTTPS with a server-side API key.

Authentication

All requests use a bearer API key. Generate one in your dashboard under API keys — it looks like pk_live_… and is shown only once. Send it in the Authorization header:

Authorization header
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Keep keys server-side

API keys grant access to all of your clients' data. Never expose them in a browser or mobile app. Use them only from your backend.

Base URL

https://<your-app-domain>/api/v1

All responses are JSON. Requests scoped automatically to your partner account.

Endpoints

GET/api/v1/companiesList your clients and their connections
GET/api/v1/walletCredit balance and pricing

List companies

Returns every client you've onboarded, each with its WhatsApp connections.

Request
curl https://<your-app-domain>/api/v1/companies \
  -H "Authorization: Bearer pk_live_xxx"
Response 200
{
  "data": [
    {
      "id": "clx123...",
      "name": "Acme Coffee",
      "onboardedAt": "2026-06-01T10:12:00.000Z",
      "connections": [
        {
          "id": "clx456...",
          "wabaId": "102290129340398",
          "phoneNumberId": "106540352242922",
          "displayPhoneNumber": "+237 6 90 00 00 00",
          "qualityRating": "GREEN",
          "status": "connected"
        }
      ],
      "_count": { "templates": 4 }
    }
  ]
}

Get wallet

Returns your current credit balance and pricing.

Request
curl https://<your-app-domain>/api/v1/wallet \
  -H "Authorization: Bearer pk_live_xxx"
Response 200
{
  "balance": 8450,
  "currency": "XAF",
  "creditUnitPrice": "25.0000",
  "costPerMessage": 1
}

Errors

Authentication failures return 401 with an error code:

Response 401
{ "error": "missing_bearer_token" }   // no Authorization header
{ "error": "invalid_token" }          // unknown, revoked, or inactive partner

Roadmap

Additional endpoints are planned: template CRUD & submission, campaign create/launch, per-recipient status, single-message send, and stats. The shapes follow the same conventions shown above.