REST API
Plain HTTP routes for your backend and scripts. For anything an agent does, the MCP server is the full surface.
Authentication
http
Authorization: Bearer <your key>Base URL: https://api.katacall.com/api. Bodies are JSON, except CSV imports. Errors come back as {"error": "..."} with 400, or 404 when something is not found. Dates are in milliseconds.
Example
bash
curl -s -X POST https://api.katacall.com/api/calls/test \
-H "Authorization: Bearer $KATA_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+14155550142","campaign_id":1}'bash
curl -s -X POST https://api.katacall.com/api/call-campaigns/1/import \
-H "Authorization: Bearer $KATA_KEY" \
--data-binary @leads.csvRoutes
| Method | Path | What it does |
|---|---|---|
| GET | /api/numbers | Your numbers, with today's calls and answer rate |
| POST | /api/numbers | Add numbers: {numbers: [{e164, label?, daily_cap?}]} |
| POST | /api/numbers/update | Pause, resume or retire a number, change its cap or label |
| POST | /api/call-campaigns | Create a call campaign (draft) and its first variant |
| GET | /api/call-campaigns/:id | A call campaign's settings and stats |
| POST | /api/call-campaigns/:id/settings | Change its settings |
| POST | /api/call-campaigns/:id/engine | Change its engine (and its live variants) |
| POST | /api/call-campaigns/:id/import | Import a CSV of leads with a phone column |
| GET | /api/call-campaigns/:id/dry-run | Who would be called now, from which number, with which variant, without calling |
| POST | /api/call-campaigns/:id/evolve | Run the evolve step for this campaign now |
| GET | /api/call-variants?campaign_id= | Variants with their stats and chance to be the best |
| POST | /api/call-variants | Create a variant |
| POST | /api/call-variants/:id | Change or retire a variant |
| GET | /api/calls | Calls, newest first, with filters; page with before_id |
| GET | /api/calls/stats?campaign_id= | Totals, outcomes, engines, numbers, variants, last days |
| GET | /api/calls/:id | One call with its transcript and events |
| GET | /api/calls/:id/recording | The recording (audio) |
| POST | /api/calls/test | A test call to your own phone |
| POST | /api/calls/simulate | Simulated calls (never dials) |
| GET | /api/call-dnc | The do-not-call list |
| POST | /api/call-dnc | Add phones to the do-not-call list |
| POST | /api/campaigns/status | Activate or pause a campaign, email or call |
POST /api/calls/test places a real call once real telephony is on. POST /api/calls/simulate never dials.