Skip to content
For developers

Telecom as code. REST + webhooks.

Originate calls, pull CDRs and recordings, manage contacts and AI agents, and subscribe to call events — over plain REST with HMAC-signed webhooks. Scoped bearer tokens (or OAuth2). Ship voice into your platform without an account-manager email chain.

Bearer + OAuth2 · HMAC-signed webhooks · path-versioned · stable schemas

Origination

Place a call. One POST.

Originate from an AI agent to any E.164 number. Returns a callId you can correlate with the call.ended webhook.

POST /v1/calls
curl -X POST https://api.unlimcall.com/v1/calls \
  -H "Authorization: Bearer unl_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "aiAgentId": "27",
    "toNumber":  "+14155551234"
  }'

# 200 OK
{
  "callId": "f3c1e8a2-9d7f-4c5b-bd91-6e9f0a3b1c7d",
  "status": "queued"
}
The primitives

What you build with.

Three primitives the API is shaped around. Everything else is convenience on top.

Call data

CDRs, recordings, dispositions

Pull call detail records filtered by date, fetch a short-lived signed URL for any recording, and read the disposition applied to every call. Plain JSON, documented and stable.

AI agents + origination

Place calls from your code

List the SIP lines and AI agents on your account, then originate an outbound call: POST /v1/calls rings the destination and bridges it to the agent on answer.

Signed webhooks

Subscribe to call events

Register an HTTPS endpoint and receive call.ended, call.transferred, disposition.set, dnc.added and lead.completed. Every delivery is HMAC-SHA256 signed and retried with backoff up to 24h.

Endpoints

The surface area.

Headline endpoints below — the v1 surface covers identity, balance, CDRs, recordings, agents, contacts, AI-agent origination, and webhooks. Full reference with schemas and error codes in the docs.

  • GET/v1/meIdentity of the token owner — cheap connectivity / token-validity probe
  • GET/v1/balanceLive account balance and currency
  • GET/v1/cdrsList call detail records — filter by date, limit up to 1000
  • GET/v1/recordingsList recordings; fetch a short-lived signed URL per recording
  • GET/v1/agentsList SIP lines (agents) on the account
  • POST/v1/callsOriginate an outbound call from an AI agent to an E.164 number
  • POST/v1/hooksRegister a webhook for call.ended, call.transferred, disposition.set, dnc.added, lead.completed
Full API reference
The contract

What backend engineers actually ask.

  • AuthenticationBearer token (unl_live_…), scoped · mint/rotate at /settings/integrations · OAuth2 client_credentials also supported
  • Rate limits100 req/min per IP (default) · raise on request
  • Base URLhttps://api.unlimcall.com/v1 · all responses JSON
  • Paginationlimit param · default 100, max 1000 per request
  • WebhooksHMAC-SHA256 signed (X-Unlimcall-Signature) · retry with exponential backoff up to 24h
  • Errorstyped code + HTTP status (e.g. 401 unauthorized, 400 invalid_input)
  • API versioningpath-based (/v1) · breaking changes ship under /v2, old version supported at least 12 months
  • REST + webhooks — no proprietary SDK required
  • Scoped bearer tokens or OAuth2 client_credentials
  • HMAC-signed webhooks · 24h exponential backoff
  • Stable JSON schemas · typed error codes
  • Path-based versioning · 12-month deprecation window
  • CDRs, recordings and dispositions over plain GETs
Ready when you are

Pick a country.Pay in two minutes.

  • Magic-link signup
  • Cancel before commit ends
  • Lines live in ~2 min