SMS
SMS that reaches every phone
Two-way messaging with registered senders, honest delivery states and the cost of every message — through one small API call.
Acme Couriers: your parcel is out for delivery and will arrive 3–5pm. Reply 1 to leave it at the door or 2 to reschedule.
1
Thanks — we’ll leave it at the door and send a photo when it’s delivered.
Delivered 3:42pm. Photo: acme.to/p/7Hk2
Everything SMS needs, nothing it doesn’t
Two-way conversations
Send and receive on the same number, with replies delivered to your app by webhook.
Senders, registered with you
Numbers and sender IDs set up and registered per country — we handle the paperwork with you.
Honest delivery states
Accepted, submitted, delivered or failed — with the reason, never rounded up to “delivered”.
Opt-outs enforced
STOP and suppression handled on every send, so you never message someone who’s opted out.
Cost on every message
Segments and price per message, with prepaid spend controls and no surprises.
Reach worldwide
Send to customers around the world, with the rules for each destination confirmed up front.
Get your sender approved without the guesswork
Approval is not activation
We show both separately, so “approved” never quietly means “not sending yet”.
Corrections, not dead ends
If something needs fixing, you’ll see exactly what and why — and we’ll help fix it.
Market by market
Registration rules differ by country and sender type. We confirm the steps for your destinations up front.
| Step | Owner | Status |
|---|---|---|
Business details | You | Complete |
Use case & sample messages | You + SendLab | Complete |
Sender registration | SendLab | In review |
Correction requested Add opt-out wording to sample 2 | You | Needs input |
Approved | Carrier / regulator | Pending |
Activated for live traffic | SendLab | Pending |
Send your first SMS
One request with a destination, a message and your own reference. Delivery updates arrive by webhook.
- Durable reference for safe retries
- Signed delivery and inbound webhooks
- Full message timeline in the console
import { SendLab } from "@sendlab/node";
const sendlab = new SendLab(process.env.SENDLAB_API_KEY);
await sendlab.messages.send({
channel: "sms",
to: "+61412345678",
body: "Your booking is confirmed for Thu 10:30.",
// your own ID — retrying with it never sends twice
reference: "booking-4821",
});Ready to take your messaging further
Tell us what you want your customers to be able to do. We’ll scope it with you and help you launch.