API & developers
A clean REST API, in any language
Partners send WhatsApp, Email and SMS programmatically with a single bearer token — fully abstracted from gateway credentials. No SDK lock-in, no provider secrets, no platform login required.
# Authenticate with a partner bearer token export TOKEN="ak_live_3f9c…" curl https://apps.innomessage.com/api/send-sms.php \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"+15551234567","text":"Hi from Inno Message"}'
Bearer authentication
Send the partner access key in the Authorization header. Tokens are validated against active status on every request.
Partner isolation
Each token can only use the gateways assigned to that partner. Credentials never leave the platform.
Balance-aware
Balance & credit are checked before any cost is incurred — a clean 402 is returned if funds are exhausted.
Endpoints
The partner API surface
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
| /api/send-email.php | POST | Bearer | Send email via the assigned SendGrid gateway |
| /api/send-sms.php | POST | Bearer | Send SMS via the assigned Twilio gateway |
| /api/send-whatsapp.php | POST | Bearer | Send WhatsApp / Messenger / Instagram message |
| /api/webhook.php | GET | verify_token | WhatsApp webhook verification handshake |
| /api/webhook.php | POST | HMAC | Process messages, email events & SMS status |
| /api/webhook-messenger.php | POST | HMAC | Process Messenger & Instagram messages |
Examples
Send in your stack
const res = await fetch( "https://apps.innomessage.com/api/send-whatsapp.php", { method: "POST", headers: { Authorization: `Bearer ${process.env.TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ to: "+15551234567", type: "text", text: "Your order has shipped 📦" }) }); const data = await res.json(); // { id, status }
import requests, os r = requests.post( "https://apps.innomessage.com/api/send-email.php", headers={"Authorization": f"Bearer {os.environ['TOKEN']}"}, json={ "to": "[email protected]", "subject": "Welcome aboard", "html": "<h1>Hello!</h1>" }) print(r.status_code, r.json()) # 200 { id, status }
Response & error codes
| Code | Meaning |
|---|---|
| 200 | Accepted — message queued/sent |
| 400 | Invalid request payload |
| 401 | Missing or invalid bearer token |
| 402 | insufficient_balance — top up or raise the credit limit |
| 403 | Partner suspended or gateway not assigned |
| 419 | CSRF token mismatch (UI endpoints) |
Webhook events
Configure your provider webhooks to point at the Inno Message endpoint. Inbound events are captured, verified and routed automatically.
- WhatsApp — inbound messages, delivery & read receipts
- Email — delivered, open, click, bounce, deferred, dropped
- SMS — queued, sent, delivered, undelivered, failed
- Messenger & Instagram — inbound text & media