Developer docs
Automation API
Let your CRM, website forms or an automation tool (Zapier, Make, n8n, Zoho Flow…) drive CallBix: put a fresh lead on an agent's phone with a one-tap Call button, feed leads into call lists, or notify the team. For data going the other way — calls into your systems — see Webhooks.
Overview
Base URL: https://api.callbix.app/api/v1/hooks. Requests and responses are JSON. Everything an endpoint sends to a phone also appears under Notifications in the dashboard, with delivery and open counts.
Authentication
Create a key in Automations & API (workspace admins). Send it on every request in either header:
Authorization: Bearer cb_live_…
# or
X-Api-Key: cb_live_…Keys belong to one workspace and act for it. Keep them server-side; revoke one in the dashboard if it leaks.
Ask an agent to call
POST/call-request
The fastest way to work a new lead. The chosen agent gets a notification with Call now and WhatsApp buttons; tapping Call dials immediately. The request stays open until that agent calls the number from their phone, and the time it took is recorded (Speed to lead in the dashboard). If nobody calls in time, an automation nudges the agent and tells their managers.
| Field | Type | |
|---|---|---|
phone | string, required | Any format. Include the country code; numbers without one are read as the server's default country (India unless set otherwise). |
name | string | Shown on the notification: “Call Priya Sharma now”. |
company | string | |
notes | string | Context for the agent, e.g. what they asked for. |
assignTo | string | An agent's email, or round_robin (default): whoever with the app signed in has the fewest open requests. |
listId | string | Also add the person to this call list, so their attempts are tracked there. |
externalId | string | Your reference (e.g. CRM record id); returned when you check the request. |
title | string | Override the notification title. |
curl -X POST https://api.callbix.app/api/v1/hooks/call-request \
-H "Authorization: Bearer cb_live_…" \
-H "Content-Type: application/json" \
-d '{
"phone": "+91 98765 43210",
"name": "Priya Sharma",
"company": "Sharma Interiors",
"notes": "Filled the 3BHK enquiry form",
"externalId": "zoho-lead-48213"
}'{
"id": "6702f0c1a9e1b2c3d4e5f601",
"status": "OPEN",
"assignedTo": { "id": "66f9a2b1c3d4e5f601234567", "name": "Ravi Kumar", "email": "ravi@acme.in" },
"notification": { "id": "…", "stats": { "devices": 1, "delivered": 1, "failed": 0 }, "note": null }
}Check a call request
GET/call-request/:id
{
"id": "6702f0c1a9e1b2c3d4e5f601",
"status": "CALLED",
"phone": "+91 98765 43210",
"externalId": "zoho-lead-48213",
"createdAt": "2026-10-02T06:09:12.000Z",
"calledAt": "2026-10-02T06:11:40.000Z",
"responseSec": 148,
"callId": "6702f1d0a9e1b2c3d4e5f777"
}status is OPEN until the agent calls the number, then CALLED. The call itself (outcome, notes, recording) reaches your CRM through the normal sync or your webhook.
Add leads to a call list
POST/leads
Appends leads to a list (find its id in the list's web address). They're shared between the list's agents just like an Excel import, and each agent is told how many new leads they got. Needs a plan with call lists.
{
"listId": "6702e0b0a9e1b2c3d4e5f500",
"skipDuplicates": true,
"leads": [
{ "phone": "9876500001", "name": "Neha Gupta", "company": "Gupta Traders", "extra": { "Budget": "75L", "Source": "Facebook" } },
{ "phone": "+91 98765 00002", "name": "Om Prakash" }
]
}{ "imported": 2, "duplicates": 0, "invalid": 0 }Up to 5,000 leads per request. extra holds any other columns; agents see them on the dialer screen.
Send a notification
POST/notify
{
"to": { "emails": ["ravi@acme.in"] },
"title": "Site visit confirmed for 4 pm",
"body": "Priya Sharma — 12 MG Road. Call her if you're running late.",
"action": { "kind": "CALL", "phone": "+91 98765 43210", "name": "Priya Sharma" }
}| to | |
|---|---|
{ "all": true } | Everyone active in the workspace. |
{ "emails": [...] } | People by sign-in email. |
{ "userIds": [...] } | People by CallBix id. |
{ "teamIds": [...] } | Everyone in these teams. |
Notification actions
| kind | Extra fields | On the phone |
|---|---|---|
OPEN_APP | — | Opens CallBix (default). |
CALL | phone required, name, company, notes | Call now and WhatsApp buttons; Call dials straight away. |
OPEN_LIST | listId required | Opens that call list's dialer. |
URL | url required, https only | Opens the link. |
Test your key
GET/ping
{ "ok": true, "workspace": { "id": "…", "name": "Acme Homes" }, "push": true }push: false means this CallBix server can't deliver notifications yet; requests still work and are logged.
Errors
| Status | Meaning |
|---|---|
400 | Something in the body is missing or invalid; message says what. |
401 | Missing, unknown or revoked API key. |
402 | The workspace's plan doesn't include this, or its trial/subscription ended. |
403 | The workspace is suspended. |
404 | The list or call request doesn't exist in this workspace. |
{ "error": "bad_request", "message": "No active person with the email ravi@acme.in" }Recipes
- New website or Facebook lead → call within a minute. In Zapier/Make/n8n, on “new lead”, send a Webhooks
POSTto/call-requestwith the lead's phone and name. Turn on Call request not acted on in Automations so managers hear about slow responses. - CRM lead status changes to “Hot” → call it. Zoho Workflow, HubSpot workflow or Salesforce Flow calling
/call-requestwithassignToset to the lead owner's email. - Nightly batch for tomorrow's calling. Push the day's leads to
/leads; agents see them in the app's Lists tab in the morning. - Close the loop. Point a webhook back at your system to receive each call's outcome, notes and recording.