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

A key sees the contacts, segments and campaigns of its own project and nothing from any other. Give each integration its own key and the boundary is drawn for you.

An allowlist of addresses

Restrict a key to the IP addresses or ranges your servers call from, and a request from anywhere else is refused.

Revoked in the app, stopped within minutes

Turn a key off and calls with it are refused shortly after. To rotate, create the new key first and revoke the old one when your code has moved.

One balance for everything

Credit belongs to your organization, so an integration and your marketing campaigns spend the same balance and you read it from the same place.

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.

  1. Verify your organization

    Keys become available in the app once your organization is verified. Talk to us and we will get you there.

  2. 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.

  3. 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.

  4. Watch the report arrive

    The delivery event lands on your URL, signed. Check the signature, update your own record, and you are live.