Developers
One API and one provider for every channel
SMS, RCS, Email and Voice through a single API and a single provider — with visibility into each and every message in the SendLab 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",
});Every message, visible in the console
Search any message in the SendLab console and see each step it took — the checks it passed, when it reached the carrier and when it was delivered or read. If it failed, you’ll see why and what to do next.
- Accepted00:00.000Request received and validated
- Policy checks00:00.041Consent ✓ Suppression ✓ Sender active ✓
- Submitted00:00.180Handed to the carrier, first attempt
- Delivered00:02.904Carrier receipt confirmed
The details that make an integration easy to run
One API, every channel
SMS, RCS, Email and Voice share the same keys, references, events and console.
Honest message states
Accepted, submitted and delivered are separate. Unknown outcomes stay visible — never rounded up.
Safe retries
Pass your own reference and a retry never sends twice — even if the network drops mid-request.
Signed webhooks you can replay
Delivery, inbound and call events, signed and retried, with failed attempts you can inspect and replay.
Scoped API keys
Server-side keys with clear scope, last use and rotation — per environment and per team.
Test without sending
Validate requests and simulate delivery events before a single live message goes out.
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.