Skip to content
Dialer & Setup

API Basics for Outbound Telephony: What Operations Teams Need to Know

Most telephony APIs were designed by engineers for engineers. This guide is written for operations leads and technical supervisors who need to understand what the API does — and where to apply it — without becoming protocol experts.

What an Outbound Telephony API Controls

An outbound telephony API sits between your application logic (dialer, CRM, scheduling system) and the SIP network that actually originates calls. At minimum, a production-grade API exposes:

  • Call origination. Programmatically initiate a call from a specified caller ID to a destination number. The response includes a call ID you can use to track the call's progress.
  • Call state queries. Retrieve the current state of an active call — ringing, answered, in-progress, or completed.
  • CDR retrieval. Pull call detail records by date range, campaign, agent, or disposition. This is the data layer for analytics and billing reconciliation.
  • Caller ID management. List, provision, and deprecate the caller IDs in use across your campaigns and markets.
  • Campaign and agent management. Create campaigns, assign agents, configure pacing parameters, start and stop campaigns.

These five surfaces cover 90 % of outbound operations use cases. Everything else — recordings, transcriptions, advanced routing — builds on top of them.

Authentication: Tokens, Scopes, and Rate Limits

Production telephony APIs use token-based authentication (API keys or OAuth 2.0 bearer tokens), not username/password. Your key identifies your account; your token's scopes determine what that key is allowed to do.

Principle of least privilege applies. A token used by your CDR analytics pipeline needs read access to call records — it should not have write access to campaign configuration or caller ID provisioning. If that analytics token is compromised, the blast radius is limited to data exposure, not operational disruption.

Rate limits on telephony APIs typically apply per minute and per day. For CDR retrieval, expect limits in the range of 60–120 requests per minute. For call origination, limits vary by account tier. Design your integrations with exponential backoff on 429 responses — retrying immediately on rate limit errors makes the problem worse, not better.

The UnlimCall API uses scoped tokens with per-endpoint rate limits. Check the reference documentation for current limits before building against high-volume endpoints.

The Most Common Integration Pattern: Click-to-Call

Click-to-call is the simplest outbound API integration and the right starting point for any team new to programmatic telephony. The flow:

  1. Agent selects a contact in the CRM.
  2. CRM makes an API call to your telephony provider with the destination number, the agent's device identifier, and the caller ID to use.
  3. The telephony provider rings the agent's device first (or connects them directly if they're already logged into a softphone). Once the agent picks up, the provider calls the destination number and bridges the two legs.
  4. The API returns a call ID. The CRM stores this call ID.
  5. On call completion, your webhook endpoint receives the call.completed event with the same call ID, and the CRM updates the contact record.

This pattern works across every CRM that has an outbound integration or webhook support. It is technology-agnostic at the dialer layer. You do not need a specific dialer platform; you need an API-accessible SIP trunk and a CRM that can make an HTTP request.

Programmatic Caller ID Selection Across Multiple Markets

On a flat-rate network covering 33 countries, programmatic caller ID selection is operationally essential. You cannot manually manage which caller ID goes on which call as you scale across markets.

The selection logic belongs in your application layer, not in a human workflow. At call origination, your code evaluates:

`` destination_country = parse_country_code(destination_number) caller_id = select_caller_id( country = destination_country, campaign = current_campaign, exclude = burned_dids[destination_country] ) originate_call(destination=destination_number, caller_id=caller_id) ``

The API for caller ID management on the UnlimCall network returns available caller IDs by country on demand — this is not a static inventory pool. When you need a local number for a market, you request it. When a number shows signs of reputation degradation, you request a replacement without waiting for a manual provisioning cycle.

Error Handling in Production: What Goes Wrong and Why

Outbound telephony API errors fall into three categories:

Application errors (4xx). Bad parameters, invalid destination numbers, insufficient account balance, rate limit exceeded. These are your code's fault. Fix the root cause; don't retry blindly.

Provider errors (5xx). The API is temporarily unavailable. Retry with exponential backoff: first retry after 1 second, second after 2 seconds, third after 4 seconds, then give up and alert. Do not retry indefinitely.

Network errors (SIP-level). The call was accepted by the API but failed at the carrier level — SIP 503, destination unreachable, codec negotiation failure. These appear in CDRs as failed calls with specific SIP response codes. Monitor the rate of these failures as a percentage of total attempts; sustained elevation above 1 % indicates a carrier routing problem that requires escalation.

Versioning and Backward Compatibility

Telephony APIs change. Providers add fields, deprecate parameters, and occasionally remove endpoints with notice periods. Your integration code needs to handle API changes without breaking.

Practical approach: pin to a specific API version in your requests (Accept: application/vnd.unlimcall.v1+json). Subscribe to the provider's changelog. When a new version is announced, test against a staging environment before migrating production traffic. Never migrate a production outbound campaign to a new API version on the same day you go live with a new campaign.

Takeaways

An outbound telephony API controls five surfaces: origination, state queries, CDR retrieval, caller ID management, and campaign/agent management. Use scoped tokens with least privilege. Design for rate limits with exponential backoff on 429 errors. Click-to-call is the right starting integration. Programmatic caller ID selection across multiple markets requires application-layer logic, not manual workflows. Handle three distinct error categories differently.

Start Building on a Network Designed for API-First Operations

The UnlimCall developer platform gives you a versioned API across 33 markets. Flat-rate pricing at $99 per seat per month — no per-call billing complexity to model in your integration.