
Terminate calls on routes you pick yourself. The rate is shown before you dial, and each call is billed once, at hangup, from your balance.
Place calls through one API on routes bought from carriers: A-Z termination with full-CLI, partial-CLI and NCLI tiers, inbound numbers with IVR, forwarding and voicemail, and least-cost or quality-first routing on every call.
Calls are billed when they end, at the route's per-minute rate and billing increment, and a retried request with an idempotency key is never placed twice.
Outbound A-Z voice with Full-CLI, NCLI and partial-CLI tiers.
Local, national, mobile and toll-free numbers.
Menus, forwarding, voicemail and business-hours rules, set by API or in the dashboard.
Cheapest, best quality or balanced route chosen for each call.
Routes that carry fax over IP are flagged, so you can pick one that does.
Send an idempotency key and a retried call request is never placed twice.
No sales call and no contract. Every step happens in your own dashboard or through the API, in whatever order suits your team.
Top up from $5 by card or crypto, or from $100 by bank wire. Building first? Test API keys run simulated calls against $50 of sandbox credit, so no real call is placed and no real money moves.
Compare routes to your destination by rate per minute, quality tier, caller ID handling and billing increment before you buy. Or leave the choice to Smart Routing on every call.
Send one POST to /comms/calls with the number, your caller ID and either a route or a routing strategy. Running your own switch? The SIP credentials issued with a route work with it as it is.
The response carries the status, SIP code, hangup cause, talk time, billed seconds and cost. A call.completed webhook fires too, and the call record is written to your account.
Every route carries its per-minute rate and billing increment, so the price of a call is known arithmetic before anyone picks up. When the call starts, funds for its maximum length are held. At hangup it is billed on the seconds its increment counts, and the unused part of the hold goes straight back to your balance. The result arrives in the same response: status, SIP code, billed seconds and the exact charge, carried to six decimal places.
$0.061000 held at dial for the 300 s maximum. $0.032848 returned at hangup.
Whether the person you call sees your number is decided by the route, so every voice route says so up front. Full CLI keeps your caller ID intact, Partial CLI keeps only some digits, and NCLI does not preserve it, usually at the lowest price. The quality tier, billing increment, channel capacity and T.38 fax support sit beside the rate, so a support line, a sales team and a notification run can each buy exactly what they need and nothing they do not.
Calls coming in deserve the same care as calls going out. Buy local, national and mobile numbers, and toll-free where available, on the same account, then decide what happens when one rings: a menu that routes callers by keypress, destinations that ring in order or all at once, opening hours with holidays, and voicemail when nobody can pick up. Deliver each call to your SIP server, a hosted softphone login or any phone.
Waits 7 seconds for a key, then repeats the menu up to twice.
Outside hours Voicemail
No onboarding call and no waiting for an account manager. Create an account, take your API key and post to the endpoint below, the same one that carries live traffic. Test keys let you try it without sending a real message or call.
curl https://packetexchange.io/api/v1/comms/calls \ -H "Authorization: Bearer $PE_KEY" \ -d to="+447700900123" \ -d from="+447700900456" \ -d strategy="best_quality" # Smart Routing
The details that decide whether a voice integration survives production: what a retry does, how a call is rated, which numbers are refused, and what you can read back afterwards.
POST /comms/calls places the call and returns when it ends, with status, SIP code, hangup cause, billed seconds and cost in the response. Subscribe to call.completed to receive the same result by webhook.
cheapest ranks by rate, best_quality ranks by answer rate with price as the tiebreak, and balanced weighs quality against cost. The most specific prefix wins first, or pin a routeId to use one route.
Full CLI, Partial CLI or NCLI is stated on every voice route next to its quality tier, so what the called party sees is a choice you make, not a surprise you discover.
Each route bills on its own increment: 1/1, 6/6, 30/6 or 60/60. Every result returns talk time and billed seconds side by side, so a rounded charge always explains itself.
Send an X-Idempotency-Key and a repeated request replays the original response instead of placing a second call. Reuse a key with a different body and it is refused; a request still running returns a conflict.
Routes priced with a rate deck are rated at the longest prefix that matches the number you dial. If the deck does not cover a number, the call is refused rather than billed at a headline price.
Numbers on your do-not-call list or the platform-wide list, and destinations under embargo, are refused before routing or billing. Origination is capped at 10 call requests a second per credential.
Test keys run the same routing and rating checks as live traffic, then simulate the call and charge sandbox credit only. Your integration sees real response shapes without a real call.
A typical voice API quotes one price per country and picks the carrier behind it. Here you see every route to a destination, decide which one carries your traffic, and pay the rate it is listed at.
You pay the route's own rate plus a platform fee of 2% of that cost, capped at $0.001 per call. On a short call to a low-cost destination, the fee is a fraction of a tenth of a cent.
Pin the exact route for one call and let Smart Routing choose for the next. Pick the caller ID handling, quality tier and billing increment that suit each kind of traffic you run.
Open an account, fund it from $5 and place a call through the API in the same sitting. Routes you buy come with SIP credentials, so your switch can send traffic straight away.
Termination, phone numbers, SMS, dialer campaigns and AI voice agents all draw on the same prepaid balance, with one login and one ledger to reconcile.
The same job, done the way most teams buy voice today, and the way it runs here.
| The usual way | On PacketExchange | |
|---|---|---|
| Route choice | One price per country, with the carrier behind it chosen for you. | Every route listed with its tier, caller ID handling, rate and increment. Pin one, or let Smart Routing choose per call. |
| Caller ID | Assumed to arrive intact until answer rates say otherwise. | Full CLI, Partial CLI or NCLI stated on the route, with a real handset test available before traffic goes on. |
| Rounding | Per-minute billing, with the rounding rules in the small print. | The increment shown on the route, with talk time and billed seconds returned for every call. |
| Retries | A timeout followed by a retry can place the same call twice. | An idempotency key replays the first response, so a retried request never dials again. |
| Inbound | Numbers, IVR and voicemail from another vendor, on another bill. | Numbers with menus, opening hours, voicemail and recording on the same account and balance. |
| Commitment | A contract or monthly minimum before production traffic. | Prepaid from $5 by card or crypto, with no monthly platform fee and no minimum spend. |
Inbound menus, forwarding and out-of-hours voicemail.
Place a call from your backend with one request.
Carrier voice for support and sales.
A call is billed at the rate of the route that carried it, on that route's billing increment, plus a platform fee of 2% of the carrier cost, capped at $0.001 per call. Calls that do not connect are not charged.
Traffic from your own switch over a SIP trunk carries a 0.5% fee instead, capped at the same $0.001. Phone numbers are priced separately, with a setup fee and a flat monthly price shown before you buy.
See wholesale pricingSet by the carrier that listed the route, shown before you buy, and rated on the route's own increment.
2% of the carrier cost through the API or dialer, 0.5% over your own SIP trunk, never more than $0.001 per call.
Top up from $5 by card or crypto, or from $100 by bank wire. Each call holds only what its maximum length could cost.
A setup fee and a flat monthly price per number, drawn from the same balance, with auto-renew you control.
No monthly platform fee, no minimum spend, and nothing charged for a call that never connects.
No. The calls API originates the call for you and returns the result when it ends. If you already run a softswitch or SBC, buy a route and point your switch at it with the SIP credentials that come with the purchase.
Every voice route states its caller ID handling: Full CLI passes your number intact, Partial CLI keeps some digits and NCLI does not preserve it. To confirm what actually arrives, run a Caller ID test, which places a real call to a handset in the destination country.
Send an X-Idempotency-Key header. A retry with the same key and body replays the original response instead of placing a new call, and a retry that arrives while the first request is still running is told so rather than dialling again.
Talk time is rounded by the route's billing increment and multiplied by its per-minute rate, then a platform fee of 2% of that cost is added, capped at $0.001. Funds for the call's maximum length are held when it starts, and the unused part is returned at hangup.
Use cheapest when price decides, best_quality when the call has to connect, and balanced, the default, when you want the most quality for the cost. Each ranks only routes that serve the number, most specific prefix first. Pass a routeId to skip the choice.
Yes. Test API keys run the same routing and rating checks as live keys, then simulate the call and charge sandbox credit instead of your balance. An invite code adds $50 of sandbox credit.
Yes. Buy numbers and route each one to a SIP server, a hosted softphone login or any phone, ringing destinations in order or all at once, with menus, opening hours, voicemail and call recording available on every number.
Destinations under comprehensive embargo are refused, and so is any number on your own do-not-call list or the platform-wide list. Both checks run before routing, so a refused call is never billed.