SMS API Documentation

Real endpoints, parameters, error codes and working code samples for MetaReach's SMS API — Send SMS, Delivery Report (DLR), and Balance Check.

Quick Start

Send Your First SMS in One Request

Every endpoint below is a plain HTTP GET request over HTTPS — no SDK install required. Call it directly from any language, a browser, or a tool like cURL or Postman.

curl "https://sms.metareach.in/vb/apikey.php?apikey=YOUR_API_KEY&senderid=YOURID&number=91XXXXXXXXXX&message=Hello%20there"

Replace YOUR_API_KEY and YOURID (your 6-character DLT-approved sender ID) with your own credentials, available from your MetaReach dashboard.

Authentication

API Key Authentication

Every request is authenticated with an apikey query parameter, issued from your MetaReach account. Keep it server-side — never expose it in client-side (browser/app) code.

ParameterDescription
apikeyYour API key, generated from your MetaReach account. Required on every request.
senderidYour DLT-approved sender ID (exactly 6 characters).

Send SMS API

Send a Single or Bulk SMS

GEThttps://sms.metareach.in/vb/apikey.php

Mandatory Parameters

ParameterDescriptionExample
apikeyYour API keyYOUR_API_KEY
senderidDLT-approved sender ID, 6 charactersYOURID
numberDestination mobile number(s), with or without the 91 prefix. Comma-separate for multiple numbers.91XXXXXXXXXX,91XXXXXXXXXX
messageURL-encoded message text. Max 1000 characters (500 for Unicode).Hello%20there

Optional Parameters

ParameterDescriptionExample
routeRouting type for transactional/promotional/scrubbed SMS. Defaults to transactional (route 1) if omitted.1
unicodeSend in Unicode for regional-language text.2
timeSchedule a message for a future date/time.2026-09-20 04:00pm
short_urlWrap a link with a trackable short URL for click/conversation tracking.short_url=yourdomain.com/x
templateidYour DLT-registered template ID. If omitted, your sender ID and message are matched against your registered templates automatically.170717XXXXXXXXXXX
formatResponse format — json or php. Defaults to JSON.json
DLT compliance: Every sender ID and message template must be registered on the DLT platform before sending. This applies to SMS/OTP only — WhatsApp templates go through Meta's separate approval process instead (see WhatsApp Business API).

API Error Codes

CodeStatusDescription
001falseKindly provide apikey
002falseInvalid route ID
004falseNo message found
005falseSchedule date/time cannot be earlier than the current time
006falseInvalid date/time format
007falseNo numbers found
008falseInsufficient credit
009falseParent account has insufficient balance
010falseMessage campaign failed
011SuccessMessage submitted successfully

Example — Success Response

{
  "status": "Success",
  "code": "011",
  "description": "Message submitted successfully",
  "data": {
    "messageid": "MzQz",
    "totnumber": "3",
    "totalcredit": "3"
  }
}

Personalized SMS

Send a Different Message to Each Recipient

Use the customized endpoint to send a personalized message to each recipient in a single request — messages are separated by a caret (^) and matched in order against your comma-separated number list.

GEThttps://sms.metareach.in/vb/http-customize.php
https://sms.metareach.in/vb/http-customize.php?apikey=YOUR_API_KEY&senderid=YOURID&number=91XXXXXXXXXX,91XXXXXXXXXX,91XXXXXXXXXX&message=Hi%20Rahul%2C%20your%20order%20shipped^Hi%20Priya%2C%20your%20order%20shipped^Hi%20Amit%2C%20your%20order%20shipped

Same mandatory/optional parameters and error codes as the Send SMS API above apply here.

Delivery Report API

Check Delivery Status (DLR)

Poll this endpoint with the message ID returned from your Send SMS request to get per-recipient delivery status.

GEThttps://sms.metareach.in/vb/http-dlr.php
ParameterDescription
apikeyYour API key
msgidMessage ID returned by the Send SMS API
formatjson or php — defaults to JSON

Error Codes

CodeStatusDescription
001falseKindly provide a valid API key
002falseInvalid user, or user is deactivated
003falseKindly provide a valid message ID

Example — DLR Response

{
  "status": "Success",
  "code": "004",
  "totRecord": "3",
  "data": [
    { "id": "MzQz", "mobile": "XXXXXXXXXX", "status": "delivered", "delvd_time": "01-01-2026 23:58:59" },
    { "id": "MzQz", "mobile": "XXXXXXXXXX", "status": "delivered", "delvd_time": "01-01-2026 23:59:59" },
    { "id": "MzQz", "mobile": "XXXXXXXXXX", "status": "submitted", "delvd_time": "---" }
  ]
}

Balance API

Check Account Balance

GEThttps://sms.metareach.in/vb/http-credit.php
ParameterDescription
apikeyYour API key
route_idRoute ID to check balance for
formatjson or php — defaults to JSON

Error Codes

CodeStatusDescription
001falseKindly provide a valid API key
002falseKindly provide a valid route ID

Example — Balance Response

{
  "status": "Success",
  "code": "003",
  "balance": "500000"
}

Code Samples

Send SMS — In Your Language

All samples call the same real endpoint shown above. Swap in your own apikey, senderid, and recipient number.

cURL

curl "https://sms.metareach.in/vb/apikey.php?apikey=YOUR_API_KEY&senderid=YOURID&number=91XXXXXXXXXX&message=Hello%20there"

PHP

<?php $apikey = "YOUR_API_KEY"; $senderid = "YOURID"; $number = "91XXXXXXXXXX"; // or "91XXXXXXXXXX,91XXXXXXXXXX" $message = urlencode("Hello there"); $url = "https://sms.metareach.in/vb/apikey.php?apikey=$apikey&senderid=$senderid&number=$number&message=$message"; $response = file_get_contents($url); echo $response;

Python

import requests params = { "apikey": "YOUR_API_KEY", "senderid": "YOURID", "number": "91XXXXXXXXXX", "message": "Hello there", } resp = requests.get("https://sms.metareach.in/vb/apikey.php", params=params) print(resp.json())

Node.js

const axios = require("axios"); const params = { apikey: "YOUR_API_KEY", senderid: "YOURID", number: "91XXXXXXXXXX", message: "Hello there", }; axios.get("https://sms.metareach.in/vb/apikey.php", { params }) .then(res => console.log(res.data)) .catch(err => console.error(err));

Java

String apikey = "YOUR_API_KEY"; String senderid = "YOURID"; String number = "91XXXXXXXXXX"; String message = URLEncoder.encode("Hello there", "UTF-8"); String urlStr = "https://sms.metareach.in/vb/apikey.php?apikey=" + apikey + "&senderid=" + senderid + "&number=" + number + "&message=" + message; HttpURLConnection conn = (HttpURLConnection) new URL(urlStr).openConnection(); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line, response = ""; while ((line = in.readLine()) != null) response += line; in.close(); System.out.println(response);

.NET (C#)

string apikey = "YOUR_API_KEY"; string senderid = "YOURID"; string number = "91XXXXXXXXXX"; string message = Uri.EscapeDataString("Hello there"); string url = $"https://sms.metareach.in/vb/apikey.php?apikey={apikey}&senderid={senderid}&number={number}&message={message}"; using (var client = new HttpClient()) { var response = await client.GetStringAsync(url); Console.WriteLine(response); }

Looking for full working scripts per language, including ASP.NET and VB.NET? See SMS API code examples.

Rate Limits & Sandbox

Before You Go to Production

Rate limits vary by plan — check your account dashboard or ask your account manager for your account's specific limits. New integrations get test credentials during onboarding, so you can validate your integration before sending to real numbers.

Need production credentials, a higher-volume plan, or help debugging a specific error code? Book a free demo and our technical team will walk you through it.

Related

Continue Building

Our Happy Clients

Trusted by 500+ Businesses Across India

From startups to enterprises — brands that grow with MetaReach

WhatsApp Facebook Instagram YouTube LinkedIn X / Twitter
☎ Instant Call Back FREE
or request a call back

We'll call you back within 5 minutes