Developer API & Webhooks

Everything in the dashboard, from your own code.

A REST API with consistent responses and human-readable errors. Send broadcasts, upload files, manage contacts, run SMS campaigns and Mailflows, connect Contact Center conversations and verify users, or trigger texts from any system with a webhook URL.

request

POST https://api.sms-broadcast.smsphilippines.com/

Authorization: Bearer zg_live_...

{

"mobiles": "639171234567",

"message": "Hi Juan, your order is ready.",

"sender_name": "BAKERY"

}

sending…

What you get

Built for the way you actually work

API keys you control

Create, view, copy, rotate and revoke. Rotating stops the old key immediately. Format: Authorization: Bearer zg_live_...

One response shape

Every reply is { success, data, error }. Branch on error.code, not on message text.

Idempotency keys

Retry safely. The same key never sends or charges twice.

Webhook messages

Create a webhook campaign with a sender name and message, and get a URL your store, CRM or booking app can call to trigger personalized texts.

Every product, one API

SMS Broadcast, CSV Broadcast, Campaigns, Mailflows, Contact Center (Organization accounts), Contacts and Imports, Sender Names, Voice OTP and Notifications.

Docs with a built-in assistant

Ask questions about any endpoint right from the documentation page.

How it works

Step by step

  1. 1

    Create an API key

    From the Developer page in the dashboard. Each organization member gets their own.

  2. 2

    Send your first text

    One POST with mobiles, message and sender_name. You get a batch ID and credits deducted.

  3. 3

    Add an idempotency key

    So retries after a timeout never double-send.

  4. 4

    Automate with webhooks

    Point your systems at a webhook URL to trigger texts without writing code inside our platform.

bash
curl -X POST https://api.sms-broadcast.smsphilippines.com/ \
  -H "Authorization: Bearer zg_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mobiles": "639171234567,639181234567",
    "message": "Hi Juan, your order #2041 is ready for pickup.",
    "sender_name": "BAKERY"
  }'

# Response
{ "success": true, "data": { "batch_id": "9c2b…", "queued_count": 2, "credits_deducted": 2 }, "error": null }
FAQ

Questions about Developer API & Webhooks

From the Developer page in the dashboard. Keys can be rotated or revoked at any time.

Your first broadcast is minutes away.

Create a free account, send as Zenglobal today, and register your own sender name when you're ready. No subscription, no setup fee.