API
One REST API, no surprises
Bearer authentication, JSON in and out, idempotent sends and webhooks for delivery reports.
Endpoints
POST
/v1/sms/sendSend one or many SMS. Supports scheduling.
GET
/v1/sms/{id}Fetch status and DLR for a single message.
GET
/v1/batches/{id}Aggregated status for a batch send.
GET
/v1/balanceCurrent balance and currency.
GET
/v1/sender-idsList your Sender IDs and approval status.
POST
/v1/webhooksRegister a URL for delivery reports.
Authentication
Create an API key in the dashboard and send it as Authorization: Bearer <key>. Keys can be scoped to specific Sender IDs and rotated with zero downtime. Webhooks are signed with HMAC-SHA256 in the header X-Zimeria-Signature.
cURL
curl -X POST https://api.zimeria.se/v1/sms/send \
-H "Authorization: Bearer $ZIMERIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": "CASINO",
"to": ["+46701234567"],
"body": "50 free spins are waiting."
}'Node
const res = await fetch("https://api.zimeria.se/v1/sms/send", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ZIMERIA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
sender_id: "CASINO",
to: ["+46701234567"],
body: "50 free spins are waiting.",
callback_url: "https://crm.example.com/dlr",
}),
});
const data = await res.json();Webhook (DLR)
POST https://crm.example.com/dlr
{
"event": "message.status",
"message_id": "msg_01J9X4T2",
"to": "+46701234567",
"status": "delivered",
"segments": 1,
"cost": 0.049,
"timestamp": "2026-08-25T14:02:11Z"
}SDKs for Node, Python, PHP, Go and Ruby are on the way.
Get access