For developers

Telecom as code. REST + webhooks.

Provision seats, manage local CLI pools, fetch CDRs, listen for call events. Idempotent endpoints, documented schemas, HMAC-signed webhooks. Ship voice into your platform without an account-manager email chain.

Idempotent · HMAC webhooks · cursor pagination · 24h retry · stable schemas

Provisioning

Spin up a seat. ~200 ms.

Returns SIP host, username, secret, CLI pool ID, transport policy. Drop straight into ViciDial / FreePBX / your SDK.

POST /v1/seats
curl -X POST https://api.unlimcall.com/v1/seats \
  -H "Authorization: Bearer uc_live_xxxxxxxx" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name":     "sdr-seat-us-east-001",
    "country":  "US",
    "tier":     "standard",
    "min_seats": 10
  }'

# 200 OK
{
  "id":           "seat_2NzKxLqV4jE",
  "sip_host":     "sip-us-east.unlimcall.com",
  "sip_username": "unl_001",
  "sip_secret":   "********",        // shown once at create
  "cli_pool_id":  "pool_us_east_default",
  "transport":    ["udp","tcp","tls"],
  "stir_shaken":  "attestation_a",
  "created_at":   "2026-05-07T12:34:56Z"
}
The primitives

What you build with.

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

Raw CDR streaming

CDRs stream into your warehouse

Bulk export to S3 / GCS or stream individual call events to a webhook. Schema is documented and stable. Pull into Postgres, Snowflake, BigQuery — or your dialer.

CLI rotation engine

Programmatic local-presence policy

Manage CLI rotation rules per market via API. Throttle-aware — set a CPS ceiling per number, auto-rest flagged CLIs, rotate within the pool you hold under our license.

Idempotent by design

Every POST accepts an idempotency key

Safe to retry during network failures or webhook delivery loops. No double-provisioning, no double-billing — same key returns the same response object.

Endpoints

The surface area.

The full reference is in the docs. Headline endpoints below — there are ~30 in total covering seats, CDRs, webhooks, markets, billing, and CLI pools.

  • POST/v1/seatsProvision a new outbound seat — returns SIP credentials, CLI pool ID
  • GET/v1/seats/{id}Fetch seat config — usage stats, CLI pool, current concurrency
  • DELETE/v1/seats/{id}Decommission seat — credentials revoked immediately
  • GET/v1/cdrsList call detail records — filter by date, seat, country, status
  • GET/v1/marketsList available markets with live pricing and CLI pool sizes
  • POST/v1/webhooksRegister a webhook endpoint for call.completed, seat.provisioned, cli.rotated
Full API reference
The contract

What backend engineers actually ask.

  • AuthenticationBearer token · scoped per project · rotate any time from portal
  • Rate limits60 req/s default, 1000 burst · raise on request
  • Idempotencyevery POST accepts Idempotency-Key header · 24h dedup window
  • Paginationcursor-based · limit max 1000 per page · stable across writes
  • WebhooksHMAC-SHA256 signed · retry with exponential backoff up to 24h
  • CDR retention90 days hot · 7 years cold archive · per-account override
  • API versioningheader-based (X-API-Version) · breaking changes get a new version, old version supported 12 months
  • REST + webhooks — no proprietary SDK required
  • Idempotent POSTs — safe to retry
  • HMAC-signed webhooks · 24h exponential backoff
  • Cursor pagination · stable across concurrent writes
  • Header-based versioning · 12-month deprecation window
  • CDR bulk export to S3/GCS or per-call webhook
Ready when you are

Pick a country.Pay in two minutes.

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