Zimeria

API

One REST API, no surprises

Bearer authentication, JSON in and out, idempotent sends and webhooks for delivery reports.

Endpoints

POST/v1/sms/send

Send 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/balance

Current balance and currency.

GET/v1/sender-ids

List your Sender IDs and approval status.

POST/v1/webhooks

Register 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