Call Bullet

Call tracking API: numbers, calls and attribution

Inbound is Call Bullet's call tracking product: every marketing number, every call, and where the caller came from. The API gives your CRM or data warehouse the same evidence the dashboard shows.

Endpoints

  1. GET /workspaces/{id}/numbers — tracking numbers with placement, location, rings_to, views and call counts (numbers:read)
  2. GET /workspaces/{id}/calls — the call log: caller, time, answered/missed, duration, source, campaign (calls:read)
  3. GET /calls/{call_id} — one call (calls:read)
  4. GET /calls/{call_id}/attribution — visit, UTMs, click ID type and confidence (attribution:read)
  5. GET /calls/{call_id}/recording — signed listen links (recordings:read)
  6. GET /calls/{call_id}/transcript — transcript and AI summary (transcripts:read)
  7. GET /workspaces/{id}/leads — lead status, value and next action (leads:read)

Typical CRM sync

  1. Poll GET /workspaces/{id}/calls?updated_since=<last sync> every few minutes — never re-fetch everything.
  2. Store call id as your external ID to stay idempotent.
  3. Match from_number (E.164, +44…) to your contacts.
  4. Only call the recording or transcript endpoint when has_recording / has_transcript is true.
  5. For imported history, de-duplicate on callrail_id or filter origin=call_bullet.

Real-time instead of polling

Add a signed webhook under Integrations → Developer API and receive call.created, call.completed and call.updated the moment they happen. See the webhook guide.

Conventions

Times are UTC ISO-8601 (display Europe/London), numbers are E.164, money is GBP pence. Call lists allow 600 requests/minute per key; respect Retry-After on 429.

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.