Developers

Bulk SMS API for real-time messaging

A simple HTTP API to send OTPs, alerts and campaigns from any language or platform. Submit a request, get a message ID back, and check delivery whenever you need.

HTTP GET
any language
Real time
SMS delivery
6
API actions
Request
GET http://sms.bulksmsind.in/sendSMS
  ?username=demo&apikey=••••••
  &sendername=BSMSIN&smstype=TRANS
  &numbers=9876543210
  &message=482913 is your OTP...
Response
The response includes the message ID (msgid).
Then: GET /getDLR?msgid=… → delivered

Endpoints

Base URL: http://sms.bulksmsind.in. All endpoints use HTTP GET with URL-encoded query parameters.

ActionEndpointParametersNotes
Send single or multiple SMS/sendSMSusername, apikey, sendername, smstype, numbers, messagenumbers accepts one number or a comma-separated list.
Send scheduled SMS/sendSMSusername, apikey, sendername, smstype, numbers, message, scheduledscheduled in yyyymmddhhmm (IST), for example 201512311254.
Send group SMS/sendSMSByGroupnameusername, apikey, sendername, smstype, gname, messagegname is a contact group saved in your panel.
Balance check/getSMSCreditusername, apikeyReturns your remaining SMS credits.
Delivery report/getDLRusername, apikey, msgidDelivery status of one message.
Date-wise report/getDLRReportusername, apikey, from, to, sendernamefrom and to in yyyy-mm-dd.

Parameters

ParameterDescriptionExample
usernameYour panel usernamedemo
apikeyYour secret API keyxxxxxxxxxx
sendernameDLT-approved sender ID (header)BSMSIN
smstypeRoute type configured for your accountTRANS
numbersOne mobile number or a comma-separated list9876543210,9123456789
messageURL-encoded text matching your DLT templateYour order #1001 is confirmed.
scheduledOptional send time, IST, yyyymmddhhmm202610201030
gnameContact group name (group SMS)VIP
msgidMessage ID returned when you send (delivery report)MSG6d50a8916d
from, toReport date range, yyyy-mm-dd2026-10-01

Code samples

Send an SMS in your language of choice.

curl -G "http://sms.bulksmsind.in/sendSMS" \
  --data-urlencode "username=YOUR_USERNAME" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "sendername=BSMSIN" \
  --data-urlencode "smstype=TRANS" \
  --data-urlencode "numbers=9876543210" \
  --data-urlencode "message=Your order #1001 is confirmed. - ShopIn"

Best practices

  • Call the API from your server and keep the API key in an environment variable
  • URL-encode the message, and keep it exactly as your DLT template
  • Store the message ID and check delivery with getDLR
  • Use TRANS for OTPs and alerts; keep promotions within 10 AM – 9 PM IST
  • Rate-limit OTP requests per number to stop abuse

Prefer not to code?

Use a ready integration instead.

Frequently asked questions

Is the SMS API real time?

Yes. Each request is submitted for delivery immediately and the SMS is delivered in real time. Use getDLR with the message ID to confirm delivery.

How do I send to many numbers?

Pass a comma-separated list in the numbers parameter, or send to a contact group with sendSMSByGroupname.

How do I schedule an SMS?

Add scheduled=yyyymmddhhmm in Indian Standard Time, for example 202610201030 for 20 October 2026, 10:30 AM.

Do messages need DLT templates?

Yes. The message text must match a template approved on your DLT portal, sent from your approved sender ID.

Where do I find my API key?

In your Bulk SMS India panel under API. Keep it secret and call the API from your server, never from a browser or mobile app.

Is there a plugin so I don’t have to code?

Yes. Use our WooCommerce/WordPress plugin, Google Sheets add-on, or Pabbly Connect, Make and n8n.