Messaging
A2P SMS at carrier rates
Alerts, codes and notifications on carrier routes at wholesale rates: the route rate plus a fee capped at $0.001, with the segments and exact cost in every reply.
- Direct routes, tiers stated
- Pay per segment, nothing else
- Suppression built in
In short
One API for transactional, OTP and marketing messages.
Pin a route you bought, or let Smart Routing pick the cheapest, the best quality or a balance of both for each destination. Segments are counted for GSM-7 and Unicode before the message goes out, and every message is billed from your balance at the route rate plus a capped platform fee.
What you can do
A2P SMS
Application-to-person alerts, notifications and transactional messages.
Smart Routing
Cheapest, best quality or balanced on each request, or pin a route you bought.
Bulk sends
Up to 1,000 recipients in one request, with a status for every message.
Sender IDs
Numeric or alphanumeric senders, validated on every request.
Message history
Look up any message, or page through everything you sent, by API.
Unicode & long messages
GSM-7 and UCS-2, split into segments and counted before you send.
From key to first message
Live traffic in four steps
Nothing to sign and nobody to wait for. The sandbox runs the same routing and pricing as live traffic, so the integration you build is the one you ship.
- Step 1
Create your keys
Open a free account and create a live key and a test key. Limit either one to the Send SMS permission, so it can message and do nothing else.
- Step 2
Build in the sandbox
$50 of sandbox credit for test keys, added when you redeem an invite code. A test send is routed, counted and priced on a real route, then simulated, so no message leaves and your balance is never touched.
- Step 3
Fund it and pick your routing
Top up from $5 by card or crypto. Pass cheapest, best quality or balanced on each request, or name an SMS route you bought on the marketplace.
- Step 4
Send, track, reconcile
Every reply carries the message ID, the segment count and the exact cost. Subscribe to webhooks and page through your history by date whenever finance asks.
What your customers see
Alerts that arrive under your name
Delivery windows, appointment reminders, statements and sign-in codes: the messages people act on. Send them from your brand as an alphanumeric sender, or from a number, on a route whose tier and sender support you can read before you buy. One request reaches one number or up to 1,000, and every message gets its own ID and status.
- Alphanumeric, numeric or pre-registered senders, stated on every SMS route
- Up to 1,600 characters, in any script, split and counted before sending
- Bulk requests of up to 1,000 recipients, with a status per message

Every send, itemised
The price of every message, worked out before it leaves
Each request is resolved to a route, measured and priced before anything is sent. The body is counted in its real encoding, the per-segment rate comes from the route's own rate deck by longest matching prefix, and the charge is taken in one atomic step with the platform fee beside it. If the route refuses the message, the charge is reversed and the reply comes back with a cost of zero.
- GSM-7: 160 characters in one segment, 153 per segment once a message splits
- Unicode (UCS-2): 70 characters in one segment, 67 per segment once split
- Extension characters such as € and { count twice, exactly as the network counts them
- The platform fee is 2% of the carrier cost and stops at $0.001, however long the message
{ "status": "sent", "segments": 2, "cost": "0.061000" }Developer platform
A sandbox that runs the real path
Test keys are not a mock server. A send on a test key goes through the same validation, Smart Routing and rate lookup as live traffic, then stops short of the carrier and draws on sandbox credit instead of your balance. You see a real route's segment count and cost while you are still writing the integration, and going to production is a change of key.
- Live and test keys side by side, each with its own permissions
- Bulk sends on a test key are simulated message by message, with nothing delivered
- The simulated reply carries simulated: true, so test traffic can never be mistaken for live
- ProductionLive keyUsed 2 minutes agowmmn_live_sk_…3f9aSend SMS
- StagingTest keyUsed just nowwmmn_test_sk_…81c2Send SMS
{ "status": "accepted", "simulated": true,
"segments": 1, "cost": "0.031620" }REST or SMPP
Your app on REST, your platform on SMPP
Applications post one JSON request per message. Messaging platforms that already speak SMPP bind straight in: every SMS route you buy comes with its own system ID and password, the bind is metered to the throughput the route carries, and each message submitted over SMPP is billed on the same segment and fee rules as an API send. Both doors lead to one account and one balance.
- Bind on port 2775 with the credentials issued when you buy the route
- A burst above the route's throughput gets a throttle response your client can retry
- Receipts posted to your HTTPS endpoint as each message is accepted or refused
- Your do-not-contact list is enforced on SMPP binds as well as the API
- One balance
- One suppression list
- One segment counter
One request
Send the first one in a minute
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 a request without sending a real message or call.
curl https://packetexchange.io/api/v1/comms/sms \ -H "Authorization: Bearer $PE_KEY" \ -d to="+447700900123" \ -d from="PacketEx" \ -d message="Your order has shipped" \ -d strategy="balanced" # Smart Routing
Under the hood
Everything a messaging integration needs
The parts you would otherwise build around an SMS provider, already on the send path and reachable from one API.
Routing per request
Leave out the route and Smart Routing picks one for the destination: cheapest by rate, best quality with the best-rated route first, or balanced for quality per unit of cost. The most specific prefix always wins.
Pin the route you bought
Name a route you bought and the message goes over that purchase. Deck routes bill each destination at its own prefix rate, and a flat-rate route bills any price you agreed through an offer.
Sender IDs, validated
Numeric or alphanumeric senders of up to 30 characters, checked for a safe character set on every request. Each SMS route states whether it carries alphanumeric, numeric or pre-registered senders.
Retries that never double-send
Add an X-Idempotency-Key and a retried request replays the original reply for 24 hours instead of sending, and billing, the message a second time.
Signed webhooks
Point an HTTPS endpoint at sms.sent, sms.delivered, sms.failed, balance.low and the rest of the catalogue. Every delivery is signed with an HMAC SHA-256 of its exact body, so you can prove where it came from.
History you can reconcile
Page through every message by date range with a cursor, look any one up by ID for its delivery timeline, cost and reference, and find SMS beside calls in your CDRs.
Sends from AI agents
The PacketExchange MCP server exposes SMS sending as a tool, so an agent sends on your key with the same permissions, prices and test mode as your code.
Guardrails on every request
Embargoed destinations are refused before any routing or billing, and each key is held to 10 send requests a second, so a runaway loop cannot flood a route.
Built for teams who read the invoice
Transactional messaging is a cost line and a commitment to your users. Both are easier to keep when the platform shows its working.
- Platform fee
- 2%, capped at $0.001
- Prepaid from
- $5, card or crypto
- Contract
- None, no monthly minimum
The route's rate, not a retail price
You pay what the route charges per segment, plus a platform fee of 2% of that, never more than $0.001 a message. On a $0.03 message the fee is $0.0006. No monthly fee sits on top.
Every fraction of a cent accounted for
The charge, the route's share and the platform fee are booked together in one balanced ledger journal before the message is handed over. Nothing is billed twice, and a refused message is reversed in full.
From sandbox to production with one key
Test keys walk the live path, so the integration you finish in the sandbox is the one you deploy. Swap the key, fund the balance, and real traffic flows through the code you already tested.
SMS, voice and numbers on one account
The balance that pays for messages also pays for calls, phone numbers and Dialer campaigns. One login, one set of keys, one ledger, and one suppression list across your SMS and Dialer campaigns.
Side by side
What changes when the platform shows its working
| Topic | A typical SMS API | On PacketExchange |
|---|---|---|
| Price per message | A typical SMS API: A retail price per message, set by the provider and revised on its schedule | On PacketExchange: The route's own per-segment rate plus 2%, capped at $0.001 per message |
| The route | A typical SMS API: Unstated: the message takes whichever path the provider chooses | On PacketExchange: Tier stated on every route, and chosen by you or by Smart Routing on each request |
| Segments | A typical SMS API: Discovered on the invoice at the end of the month | On PacketExchange: Counted in the real encoding before sending, and returned in every reply |
| Testing | A typical SMS API: Test credentials that return canned responses | On PacketExchange: Test keys that route and price on real routes, then simulate the send |
| Commitment | A typical SMS API: Monthly minimums or prepaid bundles to unlock a better rate | On PacketExchange: No monthly fee and no minimum: top up from $5 and pay per segment |
Built for
Who runs traffic on it
Transactional alerts
Order updates, receipts, appointment reminders.
OTP delivery
Best-quality routes for codes that cannot wait.
Notifications at scale
Bulk operational and service messaging.
Pricing
Per segment, at the route's rate
- platform fee on the route rate
- 2%
- the most the fee can be per message
- $0.001
- smallest top-up, by card or crypto
- $5
An SMS costs the route's rate multiplied by its segments, plus a platform fee of 2% of that amount, capped at $0.001 per message. The rate is the route's own for the destination, or on a flat-rate route, a price you agreed through an offer.
You pay from a prepaid balance: top up from $5 by card or crypto, or from $100 by bank wire. There is no monthly fee, no minimum volume and no charge for holding a key.
What you pay for
Route rate per segment
Shown on every SMS route in the marketplace before you buy, and matched to the destination's longest prefix on deck routes.
Platform fee
2% of the carrier cost, never more than $0.001 per message, however many segments it has.
Refused messages
Charged before hand-off and reversed in full if the route refuses, so the reply shows a cost of zero.
Sandbox
Test keys draw on invite-only sandbox credit and never touch your balance.
Numbers on your do-not-contact list are refused before routing, so a suppressed send costs nothing.
Questions
What developers ask first
The questions buyers ask before they start. Anything not covered here is in the help centre, or ask the team directly.
How is the price of a message worked out?
How are segments counted?
What status does a send return?
Can I use my brand name as the sender?
Is there a sandbox?
What happens if my balance runs out?
Send your first message in the sandbox
Open a free account, redeem an invite code for $50 of sandbox credit and watch a real route count and price your message before a cent of your own is spent.

