Developers
The same platform, without the interface
One REST API, one key per project. Send a message the moment your system decides to, keep your contacts in step, drive campaigns from code and read what happened.
What you can build
Everything the app does with contacts, campaigns and results is open to your own code. The interface becomes optional.
Send from your own system
An order ships, a code expires, an appointment moves: your system sends the text itself, from the sender you choose, and can ask for its status afterward.
Keep your contacts in step
Create and update contacts, your own custom fields, the groups they belong to and the segments that pick them out, so the platform always reflects your data, not a copy of it.
Run campaigns from code
Create a campaign, choose the sender for each country it reaches, then schedule it, send it now, pause, resume or cancel it, all from your side.
Read the results
Delivery and click figures for the project, a campaign, one recipient or one contact, plus your balance and the senders you can use, are all yours to read.
One call, up to a hundred messages
Priced before it goes
Every message is checked, counted into segments and priced for its destination first. The batch has to fit your balance before anything is sent.
You pay for what was accepted
A message that fails validation fails on its own while the rest go out. Only the ones the network accepted are charged, and the response says which.
A sender chosen for you
Name the sender you want, or leave it out and the one approved for that destination is used. Status stays available to look up as long as you need it.
Told the moment a message arrives
Signed, so you can trust it
Each status change reaches the URL on your key as one event, signed with the secret you were given, so you can check it came from us before acting on it.
Retried, then reported
An endpoint that does not answer is tried three times with growing pauses between them. After that the delivery is marked failed, and the status is still yours to fetch.
Visible in the app too
Every message sent through the API shows up in the app, so support can see what a customer received without you building a viewer.
Keys and access
A key is created, restricted and revoked in the app, and every call checks it. Nothing about access is decided in code you have to write.
One project per key
An allowlist of addresses
Revoked in the app, stopped within minutes
One balance for everything
Good to know before you start
A few facts the API does not hide and the docs spell out in full.
Money is a string
Every cost and rate comes back as a decimal string, never a floating-point number, so nothing is lost to rounding on the way to your ledger.
Lists page by offset
Any list takes a limit and an offset and tells you the total and whether there is more, so a full export is a loop you can predict.
Every key sends for real
There is no sandbox. A key labeled for testing still delivers to real phones and spends real credit, so point it at your own numbers first.
One version, one envelope
Every path sits under a single version prefix, and every error comes back in the same shape with a code and a correlation id you can quote to us.
How to start
From a verified organization to the first delivery report, in four steps.
Verify your organization
Keys become available in the app once your organization is verified. Talk to us and we will get you there.
Create a key in the app
Pick the project it belongs to, and set the webhook URL at the same time so the key is issued with its signing secret.
Send a message
One request with a recipient and a text. The response tells you what it cost, how many segments it took and how to look it up later.
Watch the report arrive
The delivery event lands on your URL, signed. Check the signature, update your own record, and you are live.