Integrate enterprise-grade SMS capabilities into your applications with our fast, secure, and developer-friendly REST APIs.
BulkSMS by SoftMaji provides a powerful REST API to programmatically send SMS, check balances, and track delivery. Whether you're building an OTP system, notification engine, or marketing tool, our API scales with you.
Note: You must have an active account and approved DLT templates before sending messages. Sign up here.
All API requests must be authenticated using your unique API Key. You can generate or revoke keys from your dashboard.
Pass the key in the Authorization header as a Bearer token:
Authorization: Bearer YOUR_SECRET_API_KEY
All endpoints are relative to the following base URL:
Send a single or bulk SMS message. Supports transactional (OTP) and promotional routes.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | string | Yes | Recipient mobile number (e.g., 919999999999). |
| message | string | Yes | URL-encoded message content. |
| sender_id | string | Yes | Your approved 6-char DLT Header (e.g., SOFTMJ). |
| template_id | string | Yes | Approved DLT Template ID. |
| route | string | No | Default: 'dlt'. Options: 'promotional', 'trans'. |
curl -X POST "https://bulksms.softmaji.in/api/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"to": "919XXXXXXXXX",
"message": "Your OTP is 123456",
"sender_id": "SOFTMJ",
"template_id": "1207161234567890"
}'
Retrieve your current account balance and credit validity.
curl -X GET "https://bulksms.softmaji.in/api/balance" \ -H "Authorization: Bearer YOUR_API_KEY"
Check the delivery status of a specific message ID.
curl -X GET "https://bulksms.softmaji.in/api/status?id=MSG123456789" \ -H "Authorization: Bearer YOUR_API_KEY"
Instead of polling for status, configure a webhook URL in your dashboard. We will push delivery reports to your server in real-time.
{
"message_id": "MSG123456789",
"status": "DELIVERED",
"delivered_at": "2025-12-24 10:30:05",
"mobile": "919XXXXXXXXX"
}
| Code | Description |
|---|---|
| 401 | Unauthorized: Invalid API Key. |
| 402 | Payment Required: Insufficient credits. |
| 400 | Bad Request: Missing parameters or invalid template ID. |
| 429 | Too Many Requests: Rate limit exceeded. |