SYSTEM INTEGRATIONS

Connect a service when you need automation.

Use the Kazitel panel for day-to-day setup. Add an API connection only when another business system needs to exchange data with your account.

ACCESS TOKENS

One token for each service

Loading…

CHOOSE HOW TO WORK

Everyday setup or system integration

01

Service workspace

Use the top service tabs to open the guided view for carriers, DIDs, AI, calling teams, messaging, leads, or meetings.

Browse service areas →
02

Server integration

Connect from a trusted backend with a tenant-scoped credential and the verified customer API contract.

View API setup →
Advanced API setupAuthentication, examples, and technical referenceDEVELOPER

ACCESS AND AUTHENTICATION

Use credentials made for the customer and service.

Create one access token per service under Access tokens above. A token reaches only its own service, with the access of the account that made it.

Panel resources

Use a service access token. Keep it in your backend secret manager.

Authorization: Bearer $KAZITEL_API_TOKEN
Accept: application/json

SMS send API

Use the tenant’s dedicated SMS key. Account activation, allowed IPs, rate limits, balance, and recipient limits still apply.

X-Api-Key: $KAZITEL_SMS_API_KEY
Content-Type: application/json

Lead capture

The capture source is separate from an administrator token and has its own origin controls.

POST /tenant-api/leads/capture/{key}
Node.js example

Set the verified HTTPS panel origin and tenant token in server-side environment settings.

const baseUrl = process.env.KAZITEL_API_BASE_URL;
const token = process.env.KAZITEL_API_TOKEN;

if (!baseUrl || !token) throw new Error('Set API base URL and tenant token');

const response = await fetch(new URL('/tenant-api/pbx/call-center-queues', baseUrl), {
  headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' },
});

if (!response.ok) {
  const detail = await response.text();
  throw new Error('Kazitel API ' + response.status + ': ' + detail.slice(0, 500));
}

const queues = await response.json();
console.log(queues);
SMS send example

Use the exact payload fields accepted for the tenant account.

const response = await fetch(new URL('/tenant-api/broadcast/sms/send', process.env.KAZITEL_API_BASE_URL), {
  method: 'POST',
  headers: {
    'X-Api-Key': process.env.KAZITEL_SMS_API_KEY,
    'Content-Type': 'application/json',
    Accept: 'application/json',
  },
  body: JSON.stringify({ /* use the tenant's validated SMS payload */ }),
});

if (!response.ok) throw new Error('SMS API returned ' + response.status);

LIVE UPDATES

REST is available today.

The deployed app does not publish customer-authorized WebSocket events for calls, agent presence, or campaign delivery yet. Use the supported REST resources while tenant event access is prepared.

REST availableCustomer WebSocket events are not active
API coverage by service
GET /api/v1/dids/catalog

Customer REST API for IVR, dialplans, recordings, extensions, and ring groups; DID inventory remains panel-managed.

SERVICE 03

AI receptionist

GET /tenant-api/pbx/ivr-menus

Customer IVR REST API; AI runtime bridge is internal-only.

SERVICE 04

Contact center

GET /tenant-api/pbx/call-center-queues

Customer REST API

SERVICE 06

Campaign dialer

GET /api/v1/portal/crm/tasks/domains

Tenant CRM task REST API; call-control bridge remains internal.

POST /api/lead-gen/capture/{key}

Lead capture and contacts are available; no native store connector API was verified.

GET /tenant-api/pbx/ivr-menus

Customer REST API for IVR menus, recordings, extensions, and ring groups; AI runtime bridge is internal.

MACHINE-READABLE REFERENCE

OpenAPI document

Verified customer routes only; internal bridge routes are excluded.

Download OpenAPI

Schema format: OpenAPI 3.2.1.