Message APIs: The Complete 2026 Developer & Business Guide — SMS, WhatsApp, RCS, Voice & OTP in India
- TechTo Networks
- Jul 6, 2025
- 32 min read
Quick Answer: Message APIs are programmable interfaces that allow your application, CRM, or platform to send and receive messages across SMS, WhatsApp, RCS, Voice, and Email — automatically, at scale, without manual intervention. TechTo Networks provides a unified message API platform covering all five channels from a single integration, with full TRAI-DLT compliance management, Tier-1 delivery infrastructure, and 200+ country reach.
Table of Contents
What Are Message APIs?
Why Message APIs Matter for Indian Businesses in 2026
The 6 Types of Message APIs Explained
How Message APIs Work — Technical Architecture
SMS API: The Foundation of Business Messaging in India
WhatsApp Business API: India's Highest-Engagement Channel
RCS API: The Next-Generation Messaging Layer
Voice API and Voice OTP
OTP API: Securing Every Digital Transaction
Email API: Completing the Omnichannel Stack
Message API Authentication, Security & Best Practices
Webhook Integration: Real-Time Delivery Receipts
DLT Compliance for Message APIs in India
Message API Error Codes & Troubleshooting Guide
Omnichannel Messaging: Using Multiple APIs Together
Message API Integration Guide: Step by Step
Message APIs by Industry — Use Cases & Code Examples
How to Choose the Right Message API Provider in India
Message API Pricing in India 2026
Top Message API Providers in India 2026 — Compared
The Future of Message APIs: AI, RCS & Conversational Commerce
Why TechTo Networks Is India's Best Message API Platform
Frequently Asked Questions
1. What Are Message APIs?
A message API (Application Programming Interface) is a programmable interface that allows software applications to send, receive, and manage messages across communication channels — SMS, WhatsApp, RCS, Voice, Email, and Push — without manual intervention.
Instead of a human logging into a platform and pressing send, a message API lets your application trigger messages automatically, in real time, based on events: a user placing an order, a patient booking an appointment, a bank detecting a suspicious transaction, a delivery agent reaching a location.
At the most fundamental level, a message API works like this:
Your Application → HTTP POST request to API endpoint → Message API Platform → Carrier / Channel Network → End User's Device
The API handles everything between your application and the recipient's screen — authentication, routing, compliance verification, delivery, and confirmation — exposing all of it back to your system through webhooks and status endpoints.
Why "APIs" Plural?
The term "message APIs" refers to a family of channel-specific interfaces that collectively enable modern business communication:
API Type | Channel | Primary Use Case |
SMS API | Mobile carrier SMS | Notifications, OTP, bulk campaigns |
WhatsApp Business API | WhatsApp (Meta) | Rich messaging, support, commerce |
RCS API | RCS (Google/Android) | Rich branded messaging, interactive campaigns |
Voice API | PSTN / VoIP | Voice OTP, IVR, automated calls |
OTP API | SMS + Voice + WhatsApp | Authentication, 2FA, verification |
Email API | SMTP / HTTP | Newsletters, transactional email, alerts |
TechTo Networks provides all six through a unified API — one integration, one dashboard, one account — so your application can orchestrate across all channels without building and managing six separate integrations.
The Scale of Message APIs in India
India is the world's largest business messaging market by volume:
186.2 billion SMS messages delivered annually
5.5+ billion OTP messages per month — highest single-country volume globally
500+ million WhatsApp active users — WhatsApp's largest market
₹4,290 crore total bulk messaging market value
250,000+ businesses registered on TRAI-DLT platforms for compliant messaging
Every single one of these messages was triggered through a message API.
2. Why Message APIs Matter for Indian Businesses in 2026
In 2026, Indian businesses that rely on manual communication are losing ground to competitors who have automated every customer touchpoint. Here is what message APIs enable that manual communication cannot:
Real-Time Trigger-Based Messaging
Manual messaging requires a human to notice an event and act. Message APIs respond to events instantly — within milliseconds of your application detecting the trigger. A fintech app can send an OTP in 1.4 seconds. An ecommerce platform can dispatch an order confirmation before the checkout page finishes loading. A hospital can alert a patient about their lab report the instant results are uploaded.
Scale Without Headcount
Sending 100,000 messages manually would require an army. A message API call sends them in the same time it takes to send one. India's largest enterprises send hundreds of millions of messages per month — all through the same API endpoints that a two-person startup uses.
Multi-Channel Intelligence
Message APIs let your application choose the best channel for each message, each recipient, and each context. OTP via SMS for phone-first users. WhatsApp for urban smartphone users who want rich interaction. Voice call for elderly users or those with poor SMS reception. Email for formal communication. All from one unified API, with automatic fallback if the primary channel fails.
Compliance Built In
India's TRAI-DLT framework makes ad-hoc SMS sending illegal without proper registration. Message APIs from compliant providers like TechTo Networks handle DLT validation automatically — your application submits a message with a Template ID, and the API verifies, routes, and delivers only if every compliance check passes.
Measurable ROI
Every message sent through a message API generates structured data — delivery status, delivery time, open rate (for RCS/WhatsApp), click-through rate (for links), response rate (for two-way). This data feeds dashboards, powers A/B testing, and informs campaign optimisation in ways that manual messaging never can.
3. The 6 Types of Message APIs Explained
Type 1: SMS API
The most universally supported message API. Works on every mobile phone — from flagship smartphones to basic feature phones — with or without an internet connection. In India, every mobile number is reachable via SMS.
Core capabilities:
Send individual or bulk SMS messages programmatically
Support for promotional, transactional, OTP, and service message categories
DLT-compliant sender ID and template enforcement (mandatory in India)
Unicode support for Hindi, Tamil, Telugu, Kannada, and 18+ Indian languages
Two-way SMS (send and receive replies)
Real-time delivery receipts via webhook
Best for: OTP authentication, transactional alerts, promotional campaigns, reminders, and any scenario where guaranteed reach regardless of smartphone/data access is required.
Type 2: WhatsApp Business API
Meta's official enterprise interface for WhatsApp-based customer communication at scale. India has 500+ million WhatsApp users, making it the default personal messaging channel for most Indian smartphone users.
Core capabilities:
Send approved template messages (utility, authentication, marketing categories)
Two-way conversational messaging with customers
Rich media support: images, videos, documents, location, interactive buttons, carousels
OTP via WhatsApp ("Use this code" one-tap button)
Chatbot and automated flow integration
Multi-agent customer support shared inbox
Click-to-WhatsApp advertising campaign response handling
WhatsApp Payments integration (UPI-linked)
Access model: Only available through Meta-approved WhatsApp Business Solution Providers (BSPs). TechTo Networks is a Meta-approved BSP.
Best for: Customer support automation, post-purchase engagement, rich product catalogues, OTP for WhatsApp-first users, conversational commerce.
Type 3: RCS API (Rich Communication Services)
RCS is the next-generation successor to SMS, built natively into Android devices. It delivers the rich, interactive experience of WhatsApp-style messaging through the native Android Messages app — with no app download required.
Core capabilities:
Branded sender profile with business logo and verified checkmark (eliminates spoofing)
Rich media: high-resolution images, videos, GIFs, audio
Interactive elements: call-to-action buttons, quick reply chips, suggested actions
Carousels for product showcasing
Real-time read receipts and typing indicators
Automatic SMS fallback (if the device doesn't support RCS)
Google's own anti-spam and verification layer (no DLT required for RCS — separate registration)
Availability in India: Airtel and Jio are actively rolling out RCS Business Messaging (RBM). Adoption is accelerating in 2026. Apple added RCS support in 2024, making it truly cross-platform.
Best for: Rich marketing campaigns that were previously only possible on WhatsApp, product launches with image carousels, interactive surveys, verified transactional notifications with branding.
TechTo Networks offers RCS messaging. Learn more →
Type 4: Voice API
Allows applications to trigger and manage automated voice calls — IVR (Interactive Voice Response) systems, voice OTP delivery, automated alerts, and outbound notification calls.
Core capabilities:
Outbound voice call initiation via API
Text-to-speech (TTS) conversion — convert text to spoken audio in real time
Voice OTP delivery (reads the OTP digit-by-digit to the caller)
DTMF input collection (user presses key during call)
IVR flow building (press 1 for..., press 2 for...)
Call status webhooks (answered, no-answer, busy, failed)
Call recording (with appropriate consent mechanisms)
Best for: OTP fallback for users who didn't receive SMS, elderly users who have difficulty reading small-screen text, rural users on feature phones, high-value transaction confirmation.
Type 5: OTP API (One-Time Password)
A specialised message API dedicated to generating, delivering, and validating one-time passwords. While technically built on top of SMS, WhatsApp, or Voice APIs, a dedicated OTP API adds a critical layer of security and session management.
Core capabilities:
Server-side OTP generation (cryptographically secure random code)
Multi-channel delivery cascade (SMS first → WhatsApp → Voice OTP if SMS fails)
OTP expiry management (configurable 30–180 second windows)
Attempt counting and lockout enforcement
Rate limiting per mobile number per session
Verification endpoint (your application calls it with the user-entered code to confirm)
Real-time delivery confirmation via webhook
Why separate from SMS API: A plain SMS API just sends a message. A dedicated OTP API handles the full lifecycle — generation, delivery, verification, expiry, retry logic — removing the burden of building and securing all of this in your application layer.
Type 6: Email API
Allows applications to send transactional and marketing emails programmatically via SMTP relay or HTTP API — without managing email server infrastructure.
Core capabilities:
Transactional emails (receipts, account confirmations, password resets)
Marketing email campaigns (newsletters, announcements)
Template management with variable substitution
Delivery tracking (opens, clicks, bounces, unsubscribes)
Attachment support
Domain authentication (SPF, DKIM, DMARC setup)
Best for: Formal business communication, detailed receipts and invoices, document delivery, marketing newsletters, as a tertiary fallback channel when SMS and WhatsApp both fail.
4. How Message APIs Work — Technical Architecture
Understanding the technical flow is essential for developers building message API integrations. Here is what actually happens from API call to message delivery:
The Request-Response Cycle
Step 1 — Application TriggerAn event in your system triggers a message send request: user completes registration, order is placed, payment is processed, delivery is attempted. Your application code constructs the message payload.
Step 2 — HTTPS API RequestYour application sends an HTTPS POST request to the message API endpoint. The request contains:
Authentication credentials (API key or Bearer token)
Recipient identifier (mobile number, WhatsApp number, email address)
Message content (text, media, template ID)
Channel specification (SMS, WhatsApp, RCS, Voice)
Metadata (correlation ID, scheduling, priority level)
Step 3 — API Authentication & ValidationThe message API platform:
Validates the API key and checks account permissions
Verifies the request payload for completeness and format
For India SMS: checks DLT registration status of Sender ID and Template ID
Checks account credit balance
Applies rate limiting rules
Returns an immediate synchronous response: 202 Accepted (message queued) or an error code
Step 4 — Channel RoutingThe platform's routing engine determines the optimal delivery path:
Identifies the destination's carrier/network
Selects the highest-quality available route (Tier-1 preferred)
Applies any channel fallback logic (e.g., try WhatsApp first, SMS as fallback)
Assigns priority level (OTP messages jump the queue ahead of promotional)
Step 5 — Delivery to Channel InfrastructureThe message is injected into the channel network:
SMS: SMPP protocol to carrier SMSC
WhatsApp: Meta's Cloud API or Business Management API
RCS: Google's RBM (Rich Business Messaging) API
Voice: SIP/PSTN telephony network
Email: SMTP relay or API to email delivery infrastructure
Step 6 — Asynchronous Delivery ConfirmationOnce the carrier/channel confirms delivery to the end device, a Delivery Receipt (DLR) is generated and:
Pushed to your application's configured webhook URL
Updated in the message status API endpoint
Logged in the analytics dashboard
The Full Request Lifecycle in Code
import requests
import json
# Step 2: Send API request
def send_transactional_sms(mobile, order_id, delivery_date):
url = "https://api.techtonetworks.com/v1/messages/send"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"channel": "sms",
"to": f"91{mobile}",
"sender": "TECHTO",
"template_id": "DLT_TEMPLATE_ORDER_CONFIRM",
"variables": {
"order_id": order_id,
"delivery_date": delivery_date
},
"category": "transactional",
"correlation_id": f"order-{order_id}" # Your internal reference
}
# Step 3: Receive synchronous acceptance response
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result["status"] == "accepted":
# Message queued — await webhook for delivery confirmation
return result["message_id"]
else:
raise Exception(f"API Error: {result['error_code']} - {result['error_message']}")
# Step 6: Handle incoming webhook (Flask example)
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhooks/dlr', methods=['POST'])
def handle_delivery_receipt():
dlr = request.json
message_id = dlr["message_id"]
status = dlr["status"] # DELIVERED, FAILED, PENDING
delivered_at = dlr["timestamp"]
carrier = dlr["carrier"]
correlation_id = dlr["correlation_id"] # Your order ID reference
if status == "DELIVERED":
# Update your database, trigger next workflow step
update_order_status(correlation_id, "sms_confirmed")
elif status == "FAILED":
error_code = dlr["error_code"]
# Log failure, trigger fallback channel
trigger_whatsapp_fallback(correlation_id, error_code)
return jsonify({"received": True}), 200
5. SMS API: The Foundation of Business Messaging in India
Despite the rise of WhatsApp and RCS, SMS remains the most universally deployed message API in India — for one critical reason: it works on every mobile phone, on every network, with or without data. With 1.2 billion+ Indian mobile subscribers and 99%+ SMS reach rate, no other channel comes close.
SMS API Endpoints: TechTo Networks Reference
Send Single SMS:
POST https://api.techtonetworks.com/v1/sms/send
Authorization: Bearer {API_KEY}
{
"to": "919876543210",
"sender": "TECHTO",
"message": "Your order #12345 has shipped. Delivery by May 31. Track: https://t.tn/tr12345",
"template_id": "TN_SHIP_001",
"category": "transactional"
}
Successful Response:
{
"status": "accepted",
"message_id": "TN20260530ABC123",
"to": "919876543210",
"channel": "sms",
"credits_debited": 1,
"estimated_delivery_seconds": 2.1,
"timestamp": "2026-05-30T10:23:00Z"
}
Send Bulk SMS (Campaign):
POST https://api.techtonetworks.com/v1/sms/bulk
Authorization: Bearer {API_KEY}
{
"recipients": [
{"to": "919876543210", "variables": {"name": "Priya", "discount": "30%"}},
{"to": "919876543211", "variables": {"name": "Rahul", "discount": "25%"}},
{"to": "919876543212", "variables": {"name": "Aisha", "discount": "35%"}}
],
"sender": "TECHTO",
"template_id": "TN_PROMO_SALE_002",
"category": "promotional",
"schedule_at": "2026-05-31T10:00:00+05:30"
}
Bulk Response:
{
"status": "accepted",
"batch_id": "BATCH20260530XYZ",
"total_recipients": 3,
"estimated_credits": 3,
"scheduled_at": "2026-05-31T10:00:00+05:30"
}
SMS API: Key Parameters Explained
Parameter | Required | Description |
to | Yes | Recipient mobile number with country code (91XXXXXXXXXX for India) |
sender | Yes | DLT-registered 6-character sender ID (e.g., TECHTO) |
message | Yes* | Message text — must match DLT template pattern |
template_id | Yes (India) | TRAI DLT-registered template ID for this message content |
category | Yes | promotional, transactional, otp, service_implicit, service_explicit |
variables | No | Key-value pairs for variable substitution in template |
schedule_at | No | ISO 8601 datetime for scheduled delivery |
correlation_id | No | Your internal reference ID, returned in webhooks |
unicode | No | true for regional language (Hindi, Tamil, etc.) messages |
SMS API Rate Limits
Account Type | Requests/Minute | Messages/Second | Burst Capacity |
Starter | 60 req/min | 10 msg/sec | 100 messages |
Business | 600 req/min | 100 msg/sec | 1,000 messages |
Enterprise | Custom | 1,000+ msg/sec | Unlimited |
For volumes above Business tier, switch to SMPP protocol for maximum throughput with minimal overhead.
6. WhatsApp Business API: India's Highest-Engagement Channel
WhatsApp is not just popular in India — it is the default. With 500+ million active Indian users, it is where most urban Indians expect businesses to interact with them. WhatsApp messages achieve 85–95% open rates, versus 25–35% for email and 95%+ for SMS (though WhatsApp's higher engagement translates to richer interactions, not just reads).
WhatsApp API Message Categories (2026)
Meta's 2023 billing restructure and ongoing 2026 template updates define three message categories:
1. Utility Messages — Triggered by user actions. Order confirmations, shipping updates, appointment reminders, payment receipts. Lower cost (~₹0.20–₹0.35 per conversation).
2. Authentication Messages — OTP and 2FA codes. One-tap "Use this code" button. Lowest cost and highest delivery priority (~₹0.15–₹0.25 per conversation).
3. Marketing Messages — Promotional campaigns, re-engagement, product announcements. Requires opt-in. Highest cost (~₹0.40–₹0.80 per conversation).
WhatsApp API: Sending an OTP Template (TechTo Networks)
const axios = require('axios');
async function sendWhatsAppOTP(phoneNumber, otpCode) {
const response = await axios.post(
'https://api.techtonetworks.com/v1/whatsapp/send',
{
to: `91${phoneNumber}`,
template: {
name: "otp_verification_v2",
language: { code: "en" },
components: [
{
type: "body",
parameters: [
{ type: "text", text: otpCode }
]
},
{
type: "button",
sub_type: "url",
index: 0,
parameters: [
{ type: "text", text: otpCode }
]
}
]
},
category: "authentication"
},
{
headers: {
'Authorization': `Bearer ${process.env.TECHTO_API_KEY}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
}
This delivers a WhatsApp message that shows:
"Your TechTo Networks verification code is 847291. This code expires in 10 minutes." [Use this code] — tap-to-autofill button
WhatsApp API: Sending a Rich Marketing Template
import requests
def send_product_launch_message(phone, name, product_name, price, image_url, cta_url):
payload = {
"to": f"91{phone}",
"template": {
"name": "product_launch_v3",
"language": {"code": "en"},
"components": [
{
"type": "header",
"parameters": [
{"type": "image", "image": {"link": image_url}}
]
},
{
"type": "body",
"parameters": [
{"type": "text", "text": name},
{"type": "text", "text": product_name},
{"type": "text", "text": price}
]
},
{
"type": "button",
"sub_type": "url",
"index": 0,
"parameters": [{"type": "text", "text": cta_url}]
}
]
},
"category": "marketing"
}
response = requests.post(
"https://api.techtonetworks.com/v1/whatsapp/send",
json=payload,
headers={"Authorization": f"Bearer {API_KEY}"}
)
return response.json()
WhatsApp vs SMS: When to Use Which
Scenario | Best Channel | Why |
OTP for app login | SMS (primary), WhatsApp (fallback) | SMS is faster and works without internet; WhatsApp catches failures |
Order confirmation | WhatsApp preferred | Rich receipt format, easy customer reply |
Flash sale alert | WhatsApp if opted in, SMS for full reach | WhatsApp = higher engagement; SMS = universal reach |
Appointment reminder | Two-way reply to confirm/reschedule | |
Bank transaction alert | SMS | Sub-2-second speed; works without data |
Product catalogue | Image carousels; impossible in SMS | |
Bulk promotional | SMS (DND-safe) + WhatsApp (opted-in) | Different audience reach profiles |
7. RCS API: The Next-Generation Messaging Layer
RCS (Rich Communication Services) is the standard that replaces SMS on Android devices — delivering WhatsApp-quality rich messaging through the native messaging app, with Google's verification layer giving it a level of trust that even WhatsApp cannot match.
What RCS Delivers That SMS Cannot
Feature | SMS | RCS |
Message length | 160 characters | Up to 8,192 characters |
Images | ❌ | ✅ High-resolution |
Video | ❌ | ✅ |
Interactive buttons | ❌ | ✅ Up to 4 CTA buttons |
Quick reply chips | ❌ | ✅ |
Carousels | ❌ | ✅ (product showcasing) |
Read receipts | ❌ | ✅ |
Typing indicators | ❌ | ✅ |
Verified business sender | ❌ (spoofable) | ✅ Google-verified checkmark |
Branded logo in header | ❌ | ✅ |
Works without internet | ✅ | ❌ |
Universal device reach | ✅ | Android + iOS (2024+) |
RCS API: Sending a Verified Campaign (TechTo Networks)
// RCS rich card with product image and CTA buttons
const rcsMessage = {
to: "919876543210",
channel: "rcs",
rich_card: {
standalone_card: {
card_orientation: "VERTICAL",
thumbnail_image_alignment: "RIGHT",
card_content: {
title: "Exclusive Offer: 40% Off All Monitors",
description: "Limited stock. Offer ends midnight May 31, 2026.",
media: {
height: "TALL",
content_info: {
file_url: "https://cdn.techtonetworks.com/monitor-offer.jpg",
force_refresh: false
}
},
suggestions: [
{
action: {
text: "Shop Now",
postback_data: "buy_monitor_campaign_may26",
open_url_action: {
url: "https://store.yourshop.com/monitors?utm_source=rcs"
}
}
},
{
action: {
text: "View All Offers",
postback_data: "view_all_offers",
open_url_action: {
url: "https://store.yourshop.com/offers"
}
}
},
{
reply: {
text: "Not Interested",
postback_data: "opt_out_monitor"
}
}
]
}
}
}
};
const response = await axios.post(
'https://api.techtonetworks.com/v1/rcs/send',
rcsMessage,
{ headers: { 'Authorization': `Bearer ${API_KEY}` } }
);
TechTo Networks RCS API automatically falls back to SMS if the recipient's device doesn't support RCS — ensuring 100% delivery coverage without changing your code. Explore TechTo RCS →
8. Voice API and Voice OTP
The Voice API enables your application to programmatically initiate and manage phone calls — the most reliable fallback channel when SMS and WhatsApp both fail, and the only channel that works for users who cannot read SMS (elderly users, visually impaired users, or those with low literacy).
Voice OTP: The Critical Failsafe
Voice OTP is the most important voice API use case. When a user's SMS OTP doesn't arrive (network congestion, handset offline, DLT error), a voice call that reads the OTP aloud is the difference between a completed transaction and an abandoned one.
def send_voice_otp(phone_number, otp_code):
"""Trigger a voice OTP call — used as SMS fallback"""
payload = {
"to": f"91{phone_number}",
"channel": "voice",
"voice_type": "otp",
"otp_code": otp_code,
"language": "en-IN", # or "hi-IN", "ta-IN", "te-IN" etc.
"tts_message": f"Your TechTo verification code is {' '.join(otp_code)}. "
f"I repeat, {' '.join(otp_code)}. Do not share this code with anyone.",
"max_retries": 2,
"ring_timeout_seconds": 30
}
response = requests.post(
"https://api.techtonetworks.com/v1/voice/send",
json=payload,
headers={"Authorization": f"Bearer {API_KEY}"}
)
return response.json()
# Usage: Triggered automatically when SMS OTP fails after 15 seconds
def send_otp_with_fallback(phone_number):
otp = generate_secure_otp()
store_otp_in_session(phone_number, otp)
# Primary: SMS OTP
sms_result = send_sms_otp(phone_number, otp)
# Fallback: Voice OTP after 15 seconds if SMS not delivered
schedule_voice_fallback(
phone_number=phone_number,
otp=otp,
delay_seconds=15,
condition="sms_not_delivered"
)
return sms_result
Voice API Capabilities Beyond OTP
Automated outbound alerts — "Your account has been debited ₹5,000. If not done by you, call 1800-XXX-XXXX."
Appointment reminders via call — Press 1 to confirm, press 2 to reschedule
Delivery scheduling — "Your package arrives today. Press 1 to confirm you will be home."
Customer surveys — Automated post-service feedback collection via keypress
Language localisation — TTS in Hindi, Tamil, Telugu, Kannada, Malayalam, Bengali, and English (Indian accent)
9. OTP API: Securing Every Digital Transaction
India processes more OTP messages than any other country on Earth — driven by RBI's 2FA mandates for UPI, the explosion of fintech apps, and UIDAI's Aadhaar-based eKYC flows. A dedicated OTP API abstracts the full verification lifecycle, not just the message delivery.
The Full OTP Lifecycle via API
import secrets
import hashlib
from datetime import datetime, timedelta
class OTPService:
"""
Complete OTP lifecycle using TechTo Networks OTP API
"""
def generate_and_send(self, mobile: str, purpose: str = "login") -> dict:
"""Step 1: Generate OTP and trigger delivery"""
# Option A: Let TechTo generate and manage the OTP server-side
response = requests.post(
"https://api.techtonetworks.com/v1/otp/generate-and-send",
json={
"mobile": f"91{mobile}",
"purpose": purpose, # login, payment, registration
"expiry_seconds": 90,
"max_attempts": 3,
"channels": ["sms", "whatsapp", "voice"], # cascade order
"language": "en",
"sender": "TECHTO",
"template_id": "OTP_LOGIN_001"
},
headers={"Authorization": f"Bearer {API_KEY}"}
)
result = response.json()
# result.session_id — use this to verify later
# result.channel_used — which channel delivered
# result.expires_at — when OTP expires
return result
def verify(self, mobile: str, session_id: str, user_entered_otp: str) -> dict:
"""Step 2: Verify the OTP entered by user"""
response = requests.post(
"https://api.techtonetworks.com/v1/otp/verify",
json={
"mobile": f"91{mobile}",
"session_id": session_id,
"otp": user_entered_otp
},
headers={"Authorization": f"Bearer {API_KEY}"}
)
result = response.json()
# result.verified: true/false
# result.attempts_remaining: how many tries left
# result.locked_until: if max attempts exceeded
return result
def resend(self, session_id: str, preferred_channel: str = None) -> dict:
"""Step 3 (optional): Resend OTP via different channel"""
response = requests.post(
"https://api.techtonetworks.com/v1/otp/resend",
json={
"session_id": session_id,
"channel": preferred_channel # Force specific channel for resend
},
headers={"Authorization": f"Bearer {API_KEY}"}
)
return response.json()
OTP Security Best Practices Built Into TechTo API
Server-side OTP generation — cryptographically secure, never generated client-side
Session binding — OTP is tied to both the mobile number AND the session, not just the phone
Configurable expiry — 30, 60, 90, or 120 seconds per your security requirements
Attempt limiting — configurable max attempts (default: 3); account lockout after breach
Rate limiting — configurable max OTP requests per mobile per time window (prevents flooding)
Channel cascade — automatic fallback across SMS → WhatsApp → Voice without application code changes
No OTP in API logs — OTP values are never written to access logs or error traces
10. Email API: Completing the Omnichannel Stack
While SMS and WhatsApp handle real-time communication, the Email API covers formal, document-heavy, and long-form business communication — receipts, invoices, policy documents, monthly statements, and marketing newsletters.
def send_invoice_email(customer_email, customer_name, invoice_number, amount, pdf_url):
payload = {
"to": customer_email,
"from": "billing@yourbusiness.com",
"from_name": "YourBusiness Billing",
"subject": f"Invoice #{invoice_number} — ₹{amount}",
"template_id": "INVOICE_TEMPLATE_001",
"variables": {
"customer_name": customer_name,
"invoice_number": invoice_number,
"amount": amount,
"due_date": "2026-06-15"
},
"attachments": [
{
"filename": f"Invoice_{invoice_number}.pdf",
"url": pdf_url,
"content_type": "application/pdf"
}
],
"track_opens": True,
"track_clicks": True
}
response = requests.post(
"https://api.techtonetworks.com/v1/email/send",
json=payload,
headers={"Authorization": f"Bearer {API_KEY}"}
)
return response.json()
11. Message API Authentication, Security & Best Practices
Authentication Methods
Method 1: API Key (Recommended for most integrations)
Authorization: Bearer YOUR_API_KEY_HERE
Simple, stateless, easy to implement
Use environment variables — never hardcode API keys in source code
Rotate keys periodically (quarterly minimum) via the TechTo dashboard
Use separate API keys for development, staging, and production environments
Method 2: IP Whitelisting (Recommended for production)Restrict API access to your specific server IP addresses. Configure in TechTo dashboard → Security → IP Whitelist.
Method 3: HMAC Request Signing (For highest security)Each request is signed with a shared secret using HMAC-SHA256. The signature is included in the X-TechTo-Signature header. The API validates the signature before processing.
import hmac
import hashlib
import time
import json
def sign_request(payload: dict, secret_key: str) -> dict:
"""Add HMAC signature to API request"""
timestamp = str(int(time.time()))
payload_string = json.dumps(payload, separators=(',', ':'))
# Create signature: HMAC-SHA256(timestamp + payload)
message = f"{timestamp}{payload_string}"
signature = hmac.new(
secret_key.encode(),
message.encode(),
hashlib.sha256
).hexdigest()
return {
"X-TechTo-Timestamp": timestamp,
"X-TechTo-Signature": f"sha256={signature}",
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
Critical Security Rules for Message APIs
Never expose API keys client-side:API calls must be made server-to-server. Never call a message API from browser JavaScript or a mobile app's frontend code — your API key would be visible in network requests and source code.
Always use HTTPS:Message APIs must only be called over HTTPS (TLS 1.2 minimum; TLS 1.3 preferred). HTTP calls carry your API key and message content in plaintext — never acceptable for production.
Validate webhook signatures:Incoming webhooks from TechTo Networks include an X-TechTo-Signature header. Always validate this signature before processing the webhook payload — an unvalidated webhook endpoint can be spoofed by attackers.
def validate_webhook_signature(request_body: bytes, signature_header: str, webhook_secret: str) -> bool:
"""Validate incoming TechTo webhook signature"""
expected_signature = hmac.new(
webhook_secret.encode(),
request_body,
hashlib.sha256
).hexdigest()
received_signature = signature_header.replace("sha256=", "")
# Use constant-time comparison to prevent timing attacks
return hmac.compare_digest(expected_signature, received_signature)
# In your Flask webhook handler:
@app.route('/webhooks/dlr', methods=['POST'])
def handle_dlr():
if not validate_webhook_signature(
request.data,
request.headers.get('X-TechTo-Signature', ''),
WEBHOOK_SECRET
):
return jsonify({"error": "Invalid signature"}), 401
# Process validated webhook
process_delivery_receipt(request.json)
return jsonify({"received": True}), 200
Implement idempotency:Message APIs can occasionally deliver the same webhook event more than once (due to retry logic). Include an idempotency check in your webhook handler using the message_id:
def process_delivery_receipt(dlr_data: dict):
message_id = dlr_data["message_id"]
# Check if already processed
if redis_client.exists(f"processed_dlr:{message_id}"):
return # Skip duplicate
# Mark as processed (with 24-hour TTL)
redis_client.setex(f"processed_dlr:{message_id}", 86400, "1")
# Now process
update_message_status(message_id, dlr_data["status"])
12. Webhook Integration: Real-Time Delivery Receipts
Webhooks are the mechanism by which TechTo Networks pushes delivery status updates, inbound message notifications, and event data to your application in real time — eliminating the need for polling.
Configuring Webhooks
In your TechTo dashboard → Settings → Webhooks, configure:
Endpoint URL: Your publicly accessible HTTPS endpoint (e.g., https://yourapp.com/api/webhooks/techto)
Events to subscribe: Select which events trigger webhooks:
message.delivered — carrier confirmed delivery
message.failed — delivery failed (with error code)
message.read — recipient opened (WhatsApp/RCS only)
message.replied — two-way reply received
otp.verified — OTP successfully verified
campaign.completed — bulk campaign finished
Retry policy: TechTo retries failed webhooks up to 5 times with exponential backoff
Secret key: Used for HMAC signature validation (see Security section)
Webhook Payload Examples
SMS Delivered:
{
"event": "message.delivered",
"message_id": "TN20260530ABC123",
"channel": "sms",
"to": "919876543210",
"sender": "TECHTO",
"status": "DELIVERED",
"carrier": "jio",
"delivered_at": "2026-05-30T10:23:02.401Z",
"latency_ms": 1423,
"correlation_id": "order-12345",
"timestamp": "2026-05-30T10:23:02.500Z"
}
SMS Failed:
{
"event": "message.failed",
"message_id": "TN20260530DEF456",
"channel": "sms",
"to": "919876543211",
"status": "FAILED",
"error_code": "ERR_DLT_TEMPLATE_MISMATCH",
"error_description": "Message content does not match DLT-approved template TN_SHIP_001",
"correlation_id": "order-12346",
"timestamp": "2026-05-30T10:23:05.200Z"
}
WhatsApp Reply Received (Two-Way):
{
"event": "message.replied",
"channel": "whatsapp",
"from": "919876543210",
"to_business_number": "918000XXXXXX",
"message_type": "text",
"message_text": "Yes, I'll be home for delivery",
"context": {
"referenced_message_id": "TN20260530WA789"
},
"timestamp": "2026-05-30T14:30:00Z"
}
Building a Robust Webhook Handler
from flask import Flask, request, jsonify
import redis
import logging
app = Flask(__name__)
redis_client = redis.Redis()
logger = logging.getLogger(__name__)
@app.route('/api/webhooks/techto', methods=['POST'])
def techto_webhook():
# Step 1: Validate signature
if not validate_webhook_signature(
request.data,
request.headers.get('X-TechTo-Signature', ''),
WEBHOOK_SECRET
):
logger.warning("Invalid webhook signature — possible spoofing attempt")
return jsonify({"error": "Unauthorized"}), 401
# Step 2: Parse event
event = request.json
event_type = event.get("event")
message_id = event.get("message_id")
# Step 3: Idempotency check
cache_key = f"webhook:{event_type}:{message_id}"
if redis_client.exists(cache_key):
logger.info(f"Duplicate webhook ignored: {cache_key}")
return jsonify({"status": "duplicate_ignored"}), 200
redis_client.setex(cache_key, 86400, "1")
# Step 4: Route to handler — respond FAST (under 5 seconds)
# Process async via task queue (Celery/RQ) for heavy operations
if event_type == "message.delivered":
task_queue.enqueue(handle_delivered, event)
elif event_type == "message.failed":
task_queue.enqueue(handle_failed, event)
elif event_type == "message.replied":
task_queue.enqueue(handle_reply, event)
# Step 5: Return 200 immediately — don't make TechTo wait
return jsonify({"received": True}), 200
Critical: Your webhook endpoint must return HTTP 200 within 5 seconds. If TechTo's webhook delivery times out, it retries — causing duplicate event delivery. Offload heavy processing to a background task queue.
13. DLT Compliance for Message APIs in India
TRAI's DLT (Distributed Ledger Technology) framework is the most important regulatory requirement affecting message API usage in India. Every API call that sends commercial SMS must carry valid DLT credentials — or the message will be silently blocked by the carrier.
What Your API Requests Must Include
Every SMS API call to an Indian number must include:
{
"to": "91XXXXXXXXXX",
"sender": "TECHTO", ← DLT-registered Sender ID
"message": "Your OTP is {#var#}. Valid 60 sec. - TechTo",
"template_id": "1007158XXXXX", ← DLT-registered Template ID
"category": "transactional" ← Must match registered template category
}
Missing or incorrect sender or template_id → message blocked by carrier.
DLT Template Variable Rules (October 2024 Mandate)
Since October 2024, TRAI requires that template variables be typed — not generic {#var#}:
# Old format (deprecated for new registrations):
Your OTP is {#var#}. Valid for {#var#} seconds.
# New format (October 2024 mandate):
Your OTP is {#num#}. Valid for {#num#} seconds.
↑ ↑
Numeric variable Numeric variable
# Variable type tags:
{#num#} → Numeric only (0-9)
{#str#} → Alphanumeric string
{#url#} → URL (must also be whitelisted separately)
{#date#} → Date format
{#amount#} → Currency amount
TechTo Networks handles all template registration using the correct 2026 format. When you provide us with your message template text, we register it correctly for you.
How TechTo Networks Manages DLT for Your API Integration
Task | Competitor Approach | TechTo Networks Approach |
PE Registration | Your team handles TRAI portals | TechTo manages on your behalf |
Sender ID registration | Your team navigates 4 operator DLT sites | TechTo registers across Jio, Airtel, Vi, BSNL |
Template registration | You submit templates, handle rejections | TechTo drafts, submits, appeals rejections |
October 2024 variable typing | Your team retrofits old templates | TechTo applies correct types on new registrations |
URL whitelisting | Your team submits URLs to DLT portals | TechTo manages the whitelist for your domains |
Annual renewal | Your team tracks and renews | TechTo sends reminders and manages renewal |
API template ID provision | You manage your own Template ID inventory | TechTo provides Template IDs ready to use in API |
14. Message API Error Codes & Troubleshooting Guide
Understanding error codes is essential for debugging message API integrations. Here is the complete reference for TechTo Networks error codes and their resolutions:
HTTP Status Code Layer
HTTP Status | Meaning | Action |
200 OK | Request processed synchronously | Check response body for result |
202 Accepted | Message queued for delivery | Await webhook for delivery confirmation |
400 Bad Request | Invalid request payload | Check error_code in response body |
401 Unauthorized | Invalid or missing API key | Verify API key, check IP whitelist |
402 Payment Required | Insufficient account credits | Top up account |
422 Unprocessable Entity | Validation failed (DLT, format) | Check error_code details |
429 Too Many Requests | Rate limit exceeded | Backoff and retry after Retry-After header value |
500 Internal Server Error | Platform error | Retry with exponential backoff; contact support if persistent |
Application-Level Error Codes
Error Code | Description | Resolution |
ERR_INVALID_MOBILE | Mobile number format invalid | Ensure format is 91XXXXXXXXXX (10 digits after country code) |
ERR_SENDER_NOT_REGISTERED | Sender ID not on DLT | Contact TechTo to register Sender ID on DLT |
ERR_SENDER_SUSPENDED | Sender ID suspended by carrier | Contact TechTo compliance team immediately |
ERR_TEMPLATE_NOT_FOUND | Template ID does not exist | Verify Template ID is correct and approved |
ERR_DLT_TEMPLATE_MISMATCH | Message content ≠ registered template | Compare message text against approved template; fix variable positions |
ERR_DLT_TEMPLATE_SUSPENDED | Template suspended by carrier | Contact TechTo — may require re-submission |
ERR_TEMPLATE_CATEGORY_MISMATCH | Promotional template used for transactional | Register correct category template |
ERR_DND_SUBSCRIBER | Number on DND, promotional message blocked | Use transactional category only (if triggered by user action) |
ERR_INVALID_UNICODE | Unicode encoding issue | Ensure message is properly UTF-8 encoded |
ERR_MESSAGE_TOO_LONG | Message exceeds carrier limits | Shorten message or enable multipart (billed per part) |
ERR_CARRIER_UNAVAILABLE | Target carrier SMSC unreachable | Automatic retry in progress; check carrier status page |
ERR_HANDSET_UNREACHABLE | Recipient device off/no signal | Message stored for 24-hour delivery; notify user to check SMS |
ERR_NUMBER_INACTIVE | Mobile number deactivated | Remove from contact list; update database |
ERR_RATE_LIMIT_EXCEEDED | Too many requests per minute | Implement backoff; check rate limits for your plan |
ERR_INSUFFICIENT_CREDITS | Account balance too low | Recharge account credits |
Exponential Backoff Pattern for Rate Limiting
import time
import random
def send_with_retry(payload: dict, max_retries: int = 5) -> dict:
"""Send SMS with exponential backoff on rate limit or server errors"""
for attempt in range(max_retries):
response = requests.post(
"https://api.techtonetworks.com/v1/sms/send",
json=payload,
headers={"Authorization": f"Bearer {API_KEY}"}
)
if response.status_code == 202:
return response.json() # Success
elif response.status_code == 429:
# Rate limited — respect Retry-After header
retry_after = int(response.headers.get('Retry-After', 2 ** attempt))
jitter = random.uniform(0, 1)
wait_time = retry_after + jitter
logger.warning(f"Rate limited. Waiting {wait_time:.2f}s before retry {attempt + 1}/{max_retries}")
time.sleep(wait_time)
elif response.status_code >= 500:
# Server error — exponential backoff
wait_time = (2 ** attempt) + random.uniform(0, 1)
logger.error(f"Server error {response.status_code}. Waiting {wait_time:.2f}s")
time.sleep(wait_time)
else:
# Client error (400, 401, 402, 422) — don't retry
error = response.json()
raise MessageAPIError(error['error_code'], error['error_message'])
raise MessageAPIError("ERR_MAX_RETRIES", f"Failed after {max_retries} attempts")
15. Omnichannel Messaging: Using Multiple APIs Together
The real power of TechTo Networks' message API platform is in orchestrating multiple channels together — using each channel's strengths for the right moment in the customer journey.
The Omnichannel Message Waterfall
The most effective pattern for high-stakes messages (OTP, time-sensitive alerts) is a channel cascade:
import asyncio
async def send_critical_message(mobile: str, message_data: dict) -> str:
"""
Omnichannel message cascade:
1. Try WhatsApp first (higher engagement if available)
2. Fallback to SMS after 8 seconds if WhatsApp not delivered
3. Fallback to Voice OTP after 15 seconds if SMS not delivered
"""
# Track delivery across channels
delivery_session = create_delivery_session(mobile, message_data)
# Channel 1: WhatsApp (if user has WA account)
wa_result = await send_whatsapp(mobile, message_data)
# Wait 8 seconds for WhatsApp delivery confirmation
wa_delivered = await wait_for_delivery(wa_result['message_id'], timeout=8)
if wa_delivered:
log_delivery(delivery_session, channel='whatsapp', status='delivered')
return 'whatsapp'
# Channel 2: SMS (universal reach)
sms_result = await send_sms(mobile, message_data)
sms_delivered = await wait_for_delivery(sms_result['message_id'], timeout=15)
if sms_delivered:
log_delivery(delivery_session, channel='sms', status='delivered')
return 'sms'
# Channel 3: Voice OTP (final fallback)
voice_result = await send_voice_otp(mobile, message_data['otp'])
log_delivery(delivery_session, channel='voice', status='initiated')
return 'voice'
TechTo Networks' API handles this cascade automatically when you pass "channels": ["whatsapp", "sms", "voice"] in the API payload — no application-level orchestration code required.
Customer Journey Mapping with Message APIs
Ecommerce Post-Purchase Journey:
Order Placed → SMS OTP (payment verification)
Order Confirmed → WhatsApp (rich receipt with image)
Order Packed → SMS (transactional: "Order packed, ships tomorrow")
Order Shipped → WhatsApp (RCS if Android: tracking card with button)
Out for Delivery → SMS (time-sensitive: "Delivery today 2–4 PM")
Delivered → WhatsApp (feedback request with quick-reply chips)
3 Days Post-Delivery → WhatsApp/SMS (review request + re-engagement)
Fintech Authentication Journey:
Login Attempt → OTP API → SMS (primary) → Voice (fallback after 15s)
Suspicious Login → SMS (immediate alert, cannot be delayed)
Large Transaction → OTP API → SMS + WhatsApp simultaneously
Password Reset → OTP API → Email + SMS (for verification redundancy)
Monthly Statement → Email API (detailed PDF attachment)
16. Message API Integration Guide: Step by Step
Step 1: Sign Up and Get Credentials
Register at techtonetworks.com/register. After KYC verification (24–48 hours), you receive:
API_KEY from the dashboard
Sandbox credentials for testing
Access to full API documentation
Step 2: DLT Onboarding (Managed by TechTo)
Provide TechTo Networks with your SMS template text, brand name, and company documents. TechTo handles:
PE registration on Airtel/Jio/Vi/BSNL DLT platforms
Sender ID (header) registration
Template registration with October 2024 variable typing
You receive Template IDs within 5–7 business days
Step 3: Test in Sandbox
All API endpoints have a sandbox mode. Set "test_mode": true in your request body. Sandbox responses simulate delivery without consuming credits or sending real messages.
# Quick test with curl
curl -X POST https://api.techtonetworks.com/v1/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "919876543210",
"sender": "TECHTO",
"message": "Test message from TechTo sandbox",
"template_id": "SANDBOX_TEST_001",
"category": "transactional",
"test_mode": true
}'
Step 4: Install SDK (Optional but Recommended)
# Node.js
npm install @techtonetworks/messaging-sdk
# Python
pip install techtonetworks-sdk
# PHP
composer require techtonetworks/messaging-sdk
# Java (Maven)
<dependency>
<groupId>com.techtonetworks</groupId>
<artifactId>messaging-sdk</artifactId>
<version>2.1.0</version>
</dependency>
SDK usage (Node.js):
const TechTo = require('@techtonetworks/messaging-sdk');
const client = new TechTo.Client({ apiKey: process.env.TECHTO_API_KEY });
// Send SMS
const result = await client.sms.send({
to: '919876543210',
sender: 'TECHTO',
templateId: 'TN_ORDER_001',
variables: { orderId: '12345', status: 'shipped' }
});
// Send WhatsApp
const waResult = await client.whatsapp.sendTemplate({
to: '919876543210',
templateName: 'order_shipped_v2',
variables: ['12345', 'May 31', 'https://track.example.com/12345']
});
Step 5: Configure Webhooks
Set up your webhook endpoint and register it in the TechTo dashboard. Implement signature validation and idempotency as shown in Section 11.
Step 6: Deploy and Monitor
Switch test_mode to false. Monitor the dashboard for:
Real-time delivery rates per channel
Error code distribution
API latency metrics
Credit consumption rate
17. Message APIs by Industry — Use Cases & Code Examples
Fintech and Banking
India's fintech sector sends more OTP messages than any other industry. Every UPI transaction, every account login, every large payment requires programmatic authentication.
# Real-time transaction alert + OTP for high-value UPI payment
class FintechMessaging:
def send_transaction_alert(self, account, amount, merchant, balance):
"""Immediate transactional SMS — must arrive within 2 seconds"""
return self.sms_api.send(
to=account.mobile,
template_id="BANK_TXN_DEBIT_001",
variables={
"amount": f"₹{amount:,.2f}",
"merchant": merchant,
"balance": f"₹{balance:,.2f}"
},
category="transactional",
priority="high" # Jumps OTP/transactional queue
)
def request_payment_otp(self, account, transaction_id, amount):
"""OTP for transaction above ₹5,000 — RBI mandate"""
return self.otp_api.generate_and_send(
mobile=account.mobile,
purpose=f"payment_auth_{transaction_id}",
expiry_seconds=90,
channels=["sms", "voice"], # No WhatsApp for payment OTPs per RBI guidelines
template_id="OTP_PAYMENT_001",
variables={"amount": f"₹{amount:,.2f}"}
)
Ecommerce
From checkout OTP to post-delivery review requests, ecommerce platforms use every message API type across the customer lifecycle.
class EcommerceMessaging:
def send_order_whatsapp(self, order):
"""Rich WhatsApp order confirmation with product images"""
return self.whatsapp_api.send_template(
to=order.customer.phone,
template_name="order_confirmed_rich_v4",
header_image_url=order.items[0].image_url,
body_variables=[
order.id,
order.customer.name,
f"₹{order.total:,.2f}",
order.estimated_delivery
],
buttons=[
{"text": "Track Order", "url": f"https://track.shop.com/{order.id}"},
{"text": "View Invoice", "url": f"https://inv.shop.com/{order.id}"}
]
)
def send_flash_sale_rcs(self, customer, sale_data):
"""RCS rich card for flash sale with product carousel"""
if customer.device_supports_rcs:
return self.rcs_api.send_carousel(
to=customer.phone,
cards=[
{
"title": product.name,
"description": f"₹{product.price} | {product.discount}% off",
"image_url": product.image_url,
"buttons": [{"text": "Buy Now", "url": product.url}]
}
for product in sale_data.featured_products[:6]
]
)
else:
# SMS fallback for non-RCS devices
return self.sms_api.send_bulk_promotional(
to=customer.phone,
template_id="FLASH_SALE_SMS_001",
variables={"discount": sale_data.max_discount}
)
Healthcare
Healthcare messaging requires the highest reliability combined with patient privacy compliance under India's DPDP Act 2024.
class HealthcareMessaging:
def send_appointment_reminder(self, patient, appointment):
"""Two-way appointment reminder — patient can confirm or reschedule via reply"""
return self.whatsapp_api.send_interactive(
to=patient.phone,
body=f"Reminder: Your appointment with Dr. {appointment.doctor} "
f"is on {appointment.datetime}. "
f"Please confirm your attendance.",
buttons=[
{"id": "confirm", "text": "✅ Confirm"},
{"id": "reschedule", "text": "🔄 Reschedule"},
{"id": "cancel", "text": "❌ Cancel"}
],
correlation_id=f"appt_{appointment.id}"
)
def send_lab_report_notification(self, patient, report):
"""Lab report alert — critical to reach DND numbers"""
return self.sms_api.send(
to=patient.phone,
template_id="LAB_REPORT_READY_001",
variables={"patient_name": patient.name, "test_name": report.test_name},
category="transactional" # Reaches DND numbers
)
18. How to Choose the Right Message API Provider in India
Use this framework when evaluating any message API provider:
Technical Evaluation Checklist
Channel support:
[ ] SMS API with DLT compliance (mandatory for India)
[ ] WhatsApp Business API (Meta-approved BSP status)
[ ] RCS API with SMS fallback
[ ] Voice OTP API
[ ] Omnichannel cascade logic
API quality:
[ ] REST API with JSON (standard; SMPP for high-volume)
[ ] Comprehensive API documentation with code samples
[ ] SDKs in your tech stack's language
[ ] Sandbox/test environment
[ ] Versioned API (backward compatibility on updates)
Reliability:
[ ] Tier-1 direct carrier connectivity (not aggregator-only)
[ ] Published uptime SLA (99.9%+ minimum; 99.99% preferred)
[ ] Geographic redundancy documentation
[ ] Automatic failover for route degradation
Compliance:
[ ] DLT management — who manages TRAI registrations?
[ ] October 2024 variable typing support
[ ] URL whitelisting capability
[ ] Category enforcement (promotional/transactional/OTP)
Developer experience:
[ ] Webhook delivery with signature validation
[ ] Meaningful error codes with plain-language descriptions
[ ] Rate limit headers in API responses
[ ] Real-time delivery monitoring dashboard
Security:
[ ] ISO 27001 certification
[ ] PCI-DSS Level 1 (for OTP and payment-adjacent use)
[ ] API key rotation capability
[ ] IP whitelisting
[ ] HMAC request signing option
Support:
[ ] 24/7 support (not just business hours)
[ ] India-specific expertise (DLT, TRAI, carrier quirks)
[ ] Dedicated account manager
[ ] Published first-response SLA
19. Message API Pricing in India 2026
TechTo Networks Message API Pricing
SMS API
Volume/Month | Promotional | Transactional | OTP |
Up to 10,000 | ₹0.18/SMS | ₹0.22/SMS | ₹0.28/SMS |
10,001–1,00,000 | ₹0.16/SMS | ₹0.20/SMS | ₹0.24/SMS |
1,00,001–10,00,000 | ₹0.14/SMS | ₹0.18/SMS | ₹0.22/SMS |
10,00,001–1Cr | ₹0.12/SMS | ₹0.16/SMS | ₹0.20/SMS |
1Cr+ | ₹0.10/SMS | ₹0.14/SMS | ₹0.18/SMS |
All SMS rates include DLT charges (₹0.025/SMS). No API access fee. No setup fee.
WhatsApp Business API (per conversation, 24-hour window)
Conversation Category | Rate |
Authentication (OTP) | ₹0.15–₹0.25 |
Utility (order alerts, reminders) | ₹0.20–₹0.35 |
Marketing (promotional campaigns) | ₹0.40–₹0.80 |
Service (customer-initiated support) | ₹0.10–₹0.20 |
RCS API
Volume/Month | Rate per Message |
Up to 1,00,000 | ₹0.25/message |
1,00,001–10,00,000 | ₹0.20/message |
10,00,000+ | Custom enterprise rate |
Voice OTP API
Volume/Month | Rate per Call |
Up to 10,000 | ₹0.80/call |
10,001–1,00,000 | ₹0.65/call |
1,00,000+ | ₹0.50/call |
API Access Fees
Fee Type | TechTo Networks |
API access | ₹0 — Free |
Sandbox environment | ₹0 — Free |
SDK downloads | ₹0 — Free |
Webhook delivery | ₹0 — Free |
DLT management | ₹0 — Included |
Setup / onboarding | ₹0 — Free |
Dedicated account manager (Business+) | ₹0 — Included |
20. Top Message API Providers in India 2026 — Compared
Provider | SMS API | WhatsApp API | RCS API | Voice API | DLT Managed | India Expertise | Pricing (SMS) |
TechTo Networks | ✅ Tier-1 | ✅ Meta BSP | ✅ | ✅ | ✅ Full | ★★★★★ | ₹0.18–₹0.10 |
MSG91 | ✅ Good | ✅ Meta BSP | ❌ | ✅ | ⚠️ Partial | ★★★★☆ | ₹0.22–₹0.12 |
Route Mobile | ✅ Tier-1 | ✅ Meta BSP | ✅ | ✅ | ⚠️ Partial | ★★★★☆ | ₹0.20–₹0.11 |
Kaleyra | ✅ Good | ✅ Meta BSP | ⚠️ Limited | ✅ | ✅ Managed | ★★★★☆ | ₹0.22–₹0.13 |
Gupshup | ✅ Good | ✅ Meta BSP | ⚠️ Limited | ✅ | ⚠️ Partial | ★★★★☆ | ₹0.20–₹0.11 |
Twilio | ✅ Global | ✅ Meta BSP | ✅ | ✅ | ❌ Manual | ★★☆☆☆ | ₹0.55–₹0.40 |
Infobip | ✅ Global | ✅ Meta BSP | ✅ | ✅ | ❌ Manual | ★★★☆☆ | ₹0.45–₹0.30 |
SMSGatewayCenter | ✅ Basic | ✅ | ❌ | ✅ | ❌ Self | ★★★☆☆ | ₹0.18–₹0.10 |
Fast2SMS | ✅ Basic | ❌ | ❌ | ❌ | ❌ Self | ★★☆☆☆ | ₹0.15–₹0.08* |
Exotel | ✅ Good | ✅ Meta BSP | ❌ | ✅ | ❌ Self | ★★★★☆ | ₹0.25–₹0.15 |
*Fast2SMS rates below ₹0.10 may use grey routes — verify DLT compliance before using for commercial SMS.
21. The Future of Message APIs: AI, RCS & Conversational Commerce
AI-Powered Message API Intelligence (2026–2028)
Message APIs are becoming smarter. TechTo Networks and leading providers are integrating AI layers that:
Predictive channel routing: ML models trained on per-recipient delivery history that predict the best channel for each individual user — not just the default cascade. A model might learn that recipient X always opens WhatsApp within 30 seconds but ignores SMS, and route accordingly from the first attempt.
AI-driven content personalization: Message APIs that accept a base message intent and personalise the content for each recipient based on their history, language, and engagement patterns.
Conversational AI integration: Two-way message APIs combined with LLM-powered chatbots that handle customer queries, resolve complaints, process orders, and escalate to human agents — all through the same WhatsApp or RCS message thread.
Sentiment and intent analysis: Inbound message webhooks enriched with AI-derived sentiment scores and intent classification, enabling automated routing of frustrated customers to priority support queues.
RCS as the Default Rich Messaging Channel
RCS is rapidly replacing SMS for branded communication as Android market share in India exceeds 95% and carrier RBM rollout completes. By 2027, the majority of transactional and marketing messages from large Indian enterprises will be delivered as RCS, with SMS as the fallback for feature phones and rural coverage gaps.
WhatsApp Business Platform Evolution
Meta's WhatsApp Business Platform is evolving toward full conversational commerce — product catalogues, in-chat payments via UPI, AI customer agents, and appointment booking within the WhatsApp thread. Message APIs that integrate these capabilities will enable entire customer journeys to occur without the customer ever leaving WhatsApp.
DPDP Act 2024 Compliance in Message APIs
India's Digital Personal Data Protection Act 2024 will reshape how message APIs handle consent:
Explicit opt-in consent records required before marketing messages
Right to erasure: deleting a customer's number from all API-connected systems on request
Purpose limitation: a number collected for OTP cannot be used for marketing without separate consent
Data localisation: Indian customer data must remain on India-based infrastructure
Message API providers that build DPDP compliance tooling into the API layer — consent management, erasure workflows, audit logs — will be essential partners for Indian businesses navigating this landscape.
22. Why TechTo Networks Is India's Best Message API Platform
After this comprehensive review of message API architecture, channels, compliance, and provider landscape, here is the consolidated case for TechTo Networks:
Unified: One API for All Channels
SMS, WhatsApp, RCS, Voice OTP, and Email — all accessible from one API endpoint, one SDK, one dashboard, one account. No managing six separate vendor relationships, six sets of credentials, six billing statements, or six support escalation paths.
Compliance: We Own Your DLT Journey
Most competitors provide a DLT-ready API and leave the TRAI portal work to you. TechTo Networks registers your PE, Sender IDs, and templates. We track approvals, handle rejections, apply October 2024 variable typing, whitelist your URLs, and manage annual renewals. Your team never touches a TRAI portal.
Performance: Tier-1, Sub-2-Second, 99.99% Uptime
Direct SMSC connections to Jio, Airtel, Vodafone Idea, and BSNL. Intelligent routing with automatic failover in <30 seconds. Average OTP delivery of <2 seconds. 99.99% uptime SLA = <52 minutes total downtime per year.
Developer Experience: Built for Engineers
REST API with JSON responses
SDKs in Node.js, Python, Java, PHP, Ruby, .NET
Sandbox environment on every account
Detailed error codes with plain-language descriptions
Rate limit headers in every response
Signed webhooks with retry logic
Postman collection for rapid testing
Transparent Pricing: No Surprises
DLT charges included. No setup fee. No API access fee. No webhook fee. No SDK fee. No dedicated account manager fee (Business+ plans). No hidden charges. What you see is what you pay.
Support: 24/7, India-Expert, Responsive
Phone, WhatsApp, and email support around the clock. India-specific expertise — our team understands DLT nuances, carrier quirks, TRAI regulatory updates, and the specific needs of Indian fintech, ecommerce, healthcare, and enterprise clients. Average first response under 15 minutes for production issues.
Start Free Message API Trial →Read Full API Documentation →Explore WhatsApp API →Explore RCS API →Contact Enterprise Sales →
23. Frequently Asked Questions about Message APIs
What is a message API?A message API is a programmable interface that allows software applications to send and receive messages across communication channels — SMS, WhatsApp, RCS, Voice, and Email — automatically, without human intervention. Instead of manually sending messages, your application makes an HTTPS API call that triggers delivery to the recipient's device. Message APIs power everything from OTP authentication and order confirmations to bulk promotional campaigns and two-way customer support.
What is the difference between a message API and a messaging platform?
A messaging platform is the full product — the infrastructure, dashboard, analytics, billing, and support layer. A message API is the technical interface that connects your application to that platform. When businesses say they are "integrating a message API," they mean they are writing code that calls the API endpoints of a messaging platform (like TechTo Networks) to trigger message delivery. The platform handles the infrastructure; the API is how your code accesses it.
Which message API is best for India in 2026?
For India in 2026, the best message API depends on your primary use case. For OTP and transactional SMS with full DLT compliance management: TechTo Networks. For WhatsApp-first customer engagement at scale: TechTo Networks or MSG91. For global reach with enterprise budget: Twilio or Infobip. For startups on tight budgets: 2Factor (SMS only) or TechTo Networks' entry plans. TechTo Networks is the only provider that covers SMS, WhatsApp, RCS, Voice, and Email with fully managed DLT compliance in one unified API.
Do I need a separate API for each channel (SMS, WhatsApp, RCS)?
Not with TechTo Networks. Our unified message API platform covers all channels from a single integration. You specify the channel parameter in your API call (sms, whatsapp, rcs, voice, email), and the platform handles the channel-specific delivery. For omnichannel cascade (try WhatsApp first, SMS fallback), you pass an ordered array: "channels": ["whatsapp", "sms"].
Is DLT registration required for every message API in India?
DLT registration is required for all commercial SMS messages sent to Indian mobile numbers — regardless of which message API provider you use. TRAI's DLT framework is a carrier-level enforcement mechanism: messages without registered Sender IDs and Templates are blocked before delivery. DLT registration is not required for WhatsApp Business API (which uses Meta's own verification), RCS (which uses Google's RBM verification), Voice OTP, or Email API. TechTo Networks manages the full DLT registration process for SMS clients.
How long does it take to integrate a message API?
Basic SMS API integration typically takes 2–4 hours for a developer familiar with REST APIs. The TechTo SDK reduces this further. WhatsApp API integration takes slightly longer due to Meta's template approval process (1–3 business days). End-to-end go-live including DLT registration (managed by TechTo) takes 7–10 business days from account signup to first compliant live message.
What is the difference between OTP API and SMS API?
An SMS API sends a text message. An OTP API manages the complete one-time password lifecycle: it generates a cryptographically secure OTP, sends it via the optimal channel (SMS, WhatsApp, or Voice), tracks the expiry, validates the user-entered code against the stored value, enforces attempt limits, and handles automatic fallback. You can build OTP logic on top of an SMS API yourself, but a dedicated OTP API handles all this complexity server-side, reducing your application code and improving security.
Can I send WhatsApp messages using the same API key as SMS?
Yes, with TechTo Networks. Our unified API uses the same authentication (API key) for all channels. You specify the channel in each request. Your account dashboard shows credits and usage across all channels in a single view.
What happens when a message API call fails?
When an API call fails, you receive an HTTP error status code (400–500) with a JSON error body containing an error_code and error_message. Common failure reasons include: invalid DLT template ID, message content mismatch against registered template, insufficient credits, invalid mobile number format, or rate limit exceeded. Non-transient errors (DLT mismatch, invalid number) should not be retried without fixing the underlying cause. Transient errors (rate limit, server error) should be retried with exponential backoff. See the error codes reference in Section 14.
What is webhook in the context of message APIs?
A webhook is an HTTPS callback from the message API platform to your application that delivers real-time event notifications — particularly delivery receipts (DLRs). When a message is delivered to the recipient's handset, TechTo Networks sends an HTTP POST to your configured webhook URL with the delivery status, timestamp, carrier, and latency. This is far more efficient than polling the status API repeatedly. Your webhook endpoint must return HTTP 200 within 5 seconds to confirm receipt; TechTo retries up to 5 times for non-confirmed webhooks.
Are message APIs secure for sensitive data like OTPs and bank alerts?
Yes, when properly implemented. TechTo Networks encrypts all API communications with TLS 1.3 and stores message data with AES-256 at rest. For security: use HTTPS-only for all API calls, validate webhook signatures using HMAC-SHA256, implement IP whitelisting in your TechTo dashboard, never expose API keys in client-side code, use server-side OTP generation and verification (never generate OTPs in the browser or mobile app), and rotate API keys quarterly. TechTo is ISO 27001 and PCI-DSS Level 1 certified.




👍