Bulk SMS Platform¶
Enterprise SMS platform powered by SMS Ocean with Jio integration for high-volume transactional and promotional messaging across India.
What you get¶
- DLT registered — fully compliant with TRAI / DLT regulations; required for any commercial SMS in India
- Jio integrated — routes via Jio for high deliverability on Jio numbers (~50% of Indian SMS volume)
- Delivery reports — per-message DLR status (sent / delivered / failed); pulled or pushed
- API access — REST API for transactional + promotional sends
- Custom sender ID — your DLT-approved 6-character header (e.g.
CCSLGN,MNSHOT) - Bulk campaigns — UI-driven scheduled sends; CSV-import recipient lists
DLT compliance¶
Indian SMS regulation requires:
- Principal Entity registration with TRAI — Capricorncorp handles this on your behalf during onboarding
- Sender Header registration — pick a 6-character ID that represents your brand; we register it
- Template registration — every message body must match a pre-approved template; placeholders allowed
The DLT enrolment process takes 1-3 business days. During onboarding we provide:
- A pre-filled DLT registration form
- Sender Header recommendations matching your brand
- Template wording that maximizes approval likelihood
Message types¶
| Type | Header pattern | Allowed hours | Pricing |
|---|---|---|---|
| Service Inferred (e.g. account OTP, transactional alerts the customer triggered) | CCSLGN style |
24/7 | per-message rate |
| Service Explicit (e.g. password reset, order updates) | CPCRCP style |
9 AM – 9 PM IST | per-message rate |
| Promotional (e.g. campaigns, offers) | 6-char ID | 9 AM – 9 PM IST | per-message rate, requires opt-in |
Outside allowed hours, promotional SMS will fail with INVALID_PROMO_TIME. Service-Inferred OTP templates with a CCSLGN-style header are allowed 24/7.
Sending via API¶
The SMS Ocean REST API accepts JSON POST /send:
{
"apikey": "<your_api_key>",
"mobile": "9876543210",
"message": "Dear Techie, 123456 is your OTP to login...",
"header": "CCSLGN",
"type": "txt",
"tid": "1207175113153493484"
}
Response:
{
"success": true,
"message": "SMS sent successfully!",
"data": { "msgid": 255345, "sms_credits": 4983 }
}
Key constraints:
- Mobile must be a 10-digit Indian number (the
+91prefix is stripped automatically; international SMS not supported) - Message body must match the registered DLT template exactly — variable placeholders allowed, but extra text causes the template to fail at delivery
tidis the DLT-registered Template ID; we provide these during onboarding
Delivery reports¶
Two ways to retrieve delivery status:
- Pull (recommended) —
POST /statuswithmsgid; returns{status: 'delivered' | 'sent' | 'failed' | 'pending'} - Push (on request) — operator can configure a webhook destination; SMS Ocean POSTs DLR to your URL
Pricing¶
Per-message pricing is set in your contract. Volume tiers apply at 100K / 1M / 10M+ messages per month.
Common issues¶
| Error | Cause | Fix |
|---|---|---|
INVALID_PROMO_TIME |
Sending a CPCRCP template outside 9 AM – 9 PM IST |
Switch to CCSLGN 24/7 service header, or schedule during allowed hours |
template_mismatch |
Message body doesn't exactly match registered DLT template | Use the exact template text with variable substitution; no extra text |
header_not_registered |
The header you sent isn't registered for your account | Use a registered header; new headers take 1-2 business days to approve |
apikey_invalid |
API key is missing or expired | Regenerate from dashboard; rotate every 90 days as a security practice |