Call Bullet

Outbound calling API: phone lines and call history

Outbound is Call Bullet's business telephony product: real phone lines your team calls from. The API reports lines and the calls made from them.

Endpoints

  1. GET /workspaces/{id}/phone-lines — business lines with label and caller-ID capability (phone_lines:read)
  2. GET /workspaces/{id}/outbound-calls — outbound call history; filters from, to, updated_since (outbound_calls:read)
  3. GET /workspaces/{id}/usage — minutes used this billing period, inbound vs outbound (usage:read)

How outbound differs from tracked inbound

  1. Phone lines are real business numbers, not marketing tracking numbers.
  2. Outbound calls carry no marketing attribution — they are excluded from source reports by design.
  3. Sync with updated_since and store the call id as your external ID, exactly like inbound calls.

Why the API can't place calls

Outbound dialling is regulated: every contact needs dated consent, TPS/CTPS screening and spend limits before a call is legal. Those checks live inside Call Bullet, so calls are started in the app and the API reads the results. This keeps your integration compliant by default.

Integrate everything in one prompt

You are integrating Call Bullet (UK numbers, call tracking, outbound calling, SMS and AI voice agents) into my app.
Docs (markdown): https://callbullet.com/developers/api.md · OpenAPI: https://callbullet.com/openapi.json
1. Ask me for a Call Bullet API key (cb_live_…). I create it at https://callbullet.com/integrations → Developer API and pick scopes per product. Store it server-side only as CALL_BULLET_API_KEY.
2. GET /account to learn the key's workspace_ids and permissions. Only build features the key has scopes for.
3. Calls (Inbound + Outbound): sync GET /workspaces/{id}/calls?updated_since=… every few minutes; store call id as external ID; match from_number (E.164) to my contacts; show answered/missed, source and recording links.
4. SMS: follow https://callbullet.com/developers/api/sms — one server function sendSms with Idempotency-Key, delivery badge from GET /sms/messages/{id}, handle 402/422 errors.
5. AI Agents: GET /workspaces/{id}/agent-calls to show what each agent handled (caller_request, outcome, summary) and create follow-up tasks in my app.
6. Usage: GET /workspaces/{id}/usage for a small usage widget.
7. Times are UTC ISO-8601 (display Europe/London), money in GBP pence, respect 429 Retry-After, never log the key.