Quickstart

Send your first SMS broadcast in under five minutes.
View as Markdown

1. Get an API key

Sign in to the Teekrr dashboard, go to API Management → API Keys, and create a key with the scopes you need.

ScopeEndpoints
send_smsPOST /sms
send_whatsappPOST /whatsapp, POST /whatsapp/test, POST /whatsapp/upload-header-image
send_emailPOST /email

The plaintext key value is shown only once at creation. Teekrr stores only the SHA-256 hash. Lost keys cannot be recovered — revoke and reissue.

2. Send your first SMS

$curl -X POST https://api.teekrr.com/sms \
> -H "Authorization: Bearer $TEEKRR_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "templateContent": "Hi from Teekrr!",
> "campaignName": "My first broadcast",
> "type": "quick broadcast",
> "recipients": ["60123456789"]
> }'

Expected response (202 Accepted):

1{
2 "data": {
3 "broadcastUuid": "00000000-0000-0000-0000-000000000001",
4 "queued": 1,
5 "totalSmsUnits": 1,
6 "sqsMessageIds": ["11111111-2222-3333-4444-555555555555"]
7 }
8}

The broadcast is accepted asynchronously — final delivery status reaches your registered webhook URL.

3. Register a webhook

In the dashboard, go to API Management → Webhooks → New Webhook and provide:

  • A URL on your server (publicly reachable, HTTPS)
  • The events you want to receive: delivered, failed, billed, bounced

You’ll receive a plaintext signing secret once. Store it server-side and use it to verify the X-Teekrr-Signature header on every incoming webhook — see the Webhooks guide for verification snippets in Node and Python.

4. Try WhatsApp (test mode)

WhatsApp messages are template-only. Before sending real broadcasts, verify your template + variable shape:

$curl -X POST https://api.teekrr.com/whatsapp/test \
> -H "Authorization: Bearer $TEEKRR_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "templateName": "hello_world",
> "to": "60123456789"
> }'

POST /whatsapp/test does not consume credit. Once you confirm the template works, switch to POST /whatsapp with a real recipient list.

5. Send to many recipients (dynamic mode)

To personalize content per recipient, use recipientVariables:

$curl -X POST https://api.teekrr.com/sms \
> -H "Authorization: Bearer $TEEKRR_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "templateName": "otp_login",
> "campaignName": "Login OTPs 2026-05-06",
> "type": "quick broadcast",
> "recipientVariables": [
> { "msisdn": "60123456789", "variables": { "code": "318204", "name": "Ali" } },
> { "msisdn": "60198765432", "variables": { "code": "771943", "name": "Fatimah" } }
> ]
> }'

The template content Hi {name}, your OTP is {code} is resolved per-recipient before sending. Maximum 10,000 recipients per request.

What’s next