India's premier SMS solution, offering cost-effective pricing.
SMS Gateway ProviderSMS Gateway ProviderSMS Gateway Provider
24 x 7 Sales / Support
info@smsgatewayprovider.com
Coimbatore. TN
Developer Docs · HTTP API

SMS HTTP API — Send SMS with a Single HTTP Request

Integrate SMS into any application in minutes. Fire a simple HTTP GET or POST to one endpoint and reach 190+ countries with sub‑3‑second OTP delivery, DLT‑compliant routing and real‑time delivery receipts. Works with every language — PHP, Python, Node.js, Java, .NET, cURL or a browser URL.

1Endpoint
GET / POSTBoth supported
Sub-3sOTP delivery
99.9%API uptime
GET/api/httpapi/send ?username=acme &number=9198...10 &message=Hi! 200 OK
Quick start

Send your first SMS in 3 steps

1

Get credentials

Sign in and copy your username and API key from the API settings page.

2

Build the URL

Add your sender ID, route, recipient number and message as query parameters.

3

Fire the request

Call the endpoint from any HTTP client. You get back a broadcast ID to track delivery.

Endpoint & authentication

Base URL

All HTTP API calls go to a single endpoint over HTTPS. Authentication is by API key — pass your username and apikey with every request.

# Send SMS — GET or POST
https://smsgatewayprovider.com/api/httpapi/send

Always call over HTTPS so credentials are encrypted in transit. Keep your API key secret — never expose it in client-side JavaScript or mobile apps; proxy through your own backend instead.

Request parameters

Parameters

ParameterRequiredDescription
usernameYesYour account username / API login.
apikeyYesYour secret API key. Generated in API Settings and rotatable at any time.
senderYesApproved 6‑character sender ID / header (e.g. ACMEIN). Must be registered on DLT for Indian traffic.
numberYesRecipient mobile number in international format without + (e.g. 919876543210). Send to many recipients by comma‑separating numbers.
messageYesMessage text. URL‑encode the value. For India it must match an approved DLT template.
routeYesRoute ID that selects the delivery path (transactional / OTP / promotional). Provided with your account.
typeNo0 = plain text (GSM‑7, default), 2 = Unicode for Hindi & regional languages / emoji.
flashNo1 to send a flash SMS that appears directly on screen; omit or 0 for a normal SMS.
scheduleNoFuture send time as YYYY-MM-DD HH:MM:SS (account timezone). Omit to send immediately.
Examples

Send an SMS

Browser / cURL (GET)

# Single recipient
curl "https://smsgatewayprovider.com/api/httpapi/send?\
username=acme&apikey=YOUR_API_KEY&\
sender=ACMEIN&route=2&\
number=919876543210&\
message=Your%20OTP%20is%20123456"

Multiple recipients (POST)

curl -X POST https://smsgatewayprovider.com/api/httpapi/send \
  -d "username=acme" \
  -d "apikey=YOUR_API_KEY" \
  -d "sender=ACMEIN" -d "route=2" \
  -d "number=919876543210,919812345678" \
  --data-urlencode "message=Sale is live!"

PHP

$params = [
  'username' => 'acme',
  'apikey'   => 'YOUR_API_KEY',
  'sender'   => 'ACMEIN',
  'route'    => '2',
  'number'   => '919876543210',
  'message'  => 'Your OTP is 123456',
];
$url = 'https://smsgatewayprovider.com/api/httpapi/send?'
      . http_build_query($params);
echo file_get_contents($url); // broadcast id

Python

import requests

r = requests.get(
  "https://smsgatewayprovider.com/api/httpapi/send",
  params={
    "username": "acme",
    "apikey":   "YOUR_API_KEY",
    "sender":   "ACMEIN",
    "route":    "2",
    "number":   "919876543210",
    "message":  "Your OTP is 123456",
  })
print(r.text)  # broadcast id
Response

What you get back

On success the API returns a broadcast ID — a unique reference for the send. Use it to pull delivery status from the DLR API. Add &response=json for a structured JSON body instead of plain text.

Success (plain text)

1706donef4-2b9c-4d1a-9e77-broadcast

Success (JSON)

{
  "status": "success",
  "broadcast_id": "1706donef4-2b9c-4d1a",
  "queued": 1
}

Error (JSON)

{
  "status": "error",
  "code": 401,
  "message": "Invalid API key"
}

Always check the response before assuming delivery. A broadcast ID means accepted for processing — final handset delivery is confirmed by the DLR.

Reference

Response & error codes

CodeMeaningWhat to do
200Accepted — message queuedStore the broadcast ID; poll DLR for delivery.
400Bad request / missing parameterCheck required fields are present and URL‑encoded.
401Invalid username or API keyVerify credentials; rotate the key if compromised.
402Insufficient balanceTop up credits, then retry.
403Sender ID / route not allowedUse an approved sender and a route enabled on your account.
422DLT template mismatchMatch the message to a registered DLT template.
429Rate limit exceededSlow down and apply exponential backoff.
500Server errorRetry with backoff; contact support if it persists.
FAQ

HTTP API — frequently asked questions

Can I use GET or must I use POST?
Both work. GET is ideal for quick testing and simple integrations; POST is recommended in production because long messages and special characters are handled cleanly and credentials are not stored in server access logs the way query strings can be.
How do I send to multiple numbers in one call?
Comma‑separate the numbers in the number parameter, e.g. number=919876543210,919812345678. Each recipient becomes its own message and its own delivery receipt. For large campaigns use the XML API or bulk endpoints.
How do I send Hindi or regional-language SMS?
Set type=2 for Unicode and send UTF‑8 encoded text. Note that Unicode messages are 70 characters per part versus 160 for plain GSM‑7 text.
Is DLT registration required?
For SMS to Indian mobile numbers, yes — TRAI mandates DLT registration of your entity, sender ID (header) and message templates. We help you register end to end. International traffic does not need DLT.
How do I confirm a message was delivered?
The send response confirms the message was accepted. For confirmed handset delivery, use the DLR API — either pull status by broadcast ID or receive real‑time push callbacks to your webhook.
What are the rate limits?
Limits are tiered by plan (Standard, Premium, Enterprise). Responses include X-RateLimit-* headers so you can throttle gracefully. Enterprise accounts get dedicated throughput for high‑volume OTP and campaign traffic.

Start sending in minutes

Get your API key, test on us, and go live with DLT‑compliant, sub‑3‑second SMS delivery backed by 24×7 support.

At vero eos et accusamus et iusto odio digni goikussimos ducimus qui to bonfo blanditiis praese. Ntium voluum deleniti atque.

Shopping Cart (0 items)