Send SMS Without DLT Registration
StartMessaging uses pre-registered DLT compliant routes for transactional SMS. No entity registration, no header approvals, no template submissions — just sign up and start sending at ₹0.25/SMS.
✦ No credit card required · Free plan available · Setup in 5 minutes
Bypass DLT Hassles Instantly
Traditional SMS pathways require complex portal registrations and manual template hashing. StartMessaging routes your alerts through pre-registered templates seamlessly, maintaining compliance while providing developers with instant setup capabilities.
- Instant API access
- Pre-approved templates
- Fully TRAI-compliant execution
3 Steps to Send SMS Without DLT
Sign Up for Free
Create your account in 30 seconds. No DLT registration needed. Get your API key instantly from the dashboard.
Integrate Our API
Use our simple REST API with code samples in cURL, Node.js, Python, PHP, Java, and Go. Send your first test message in under 5 minutes.
Send at Scale
Send transactional SMS (OTPs, alerts, confirmations) at ₹0.25/message across all Indian networks with 99.9% delivery and sub-second speed.
Developer Features
-
TRAI Compliant
Sent through legally approved transactional templates registered on the national DLT blockchain. Fully compliant with all telecom directives.
-
Direct Operator Bindings
Bypass virtual operators. We connect directly to Tier-1 telecom gateways for maximum speed and deliverability.
-
Simple REST API
Integrate in minutes. Features simple JSON request and response models, robust headers authentication, and detailed logs.
-
Delivery Tracking
Monitor and verify every single message status via our real-time delivery tracking endpoint.
Send Transactional SMS in Minutes
curl -X POST https://api.startmessaging.com/otp/send \
-H "Content-Type: application/json" \
-H "X-API-Key: sm_live_your_api_key_here" \
-d '{
"phoneNumber": "+919876543210",
"templateId": "YOUR_TEMPLATE_ID",
"variables": {
"otp": "123456",
"appName": "YourApp"
}
}' const response = await fetch("https://api.startmessaging.com/otp/send", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "sm_live_your_api_key_here",
},
body: JSON.stringify({
phoneNumber: "+919876543210",
templateId: "YOUR_TEMPLATE_ID",
variables: {
otp: "123456",
appName: "YourApp",
},
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.startmessaging.com/otp/send",
headers={
"Content-Type": "application/json",
"X-API-Key": "sm_live_your_api_key_here",
},
json={
"phoneNumber": "+919876543210",
"templateId": "YOUR_TEMPLATE_ID",
"variables": {
"otp": "123456",
"appName": "YourApp"
},
},
)
data = response.json()
print(data) $ch = curl_init("https://api.startmessaging.com/otp/send");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: sm_live_your_api_key_here",
],
CURLOPT_POSTFIELDS => json_encode([
"phoneNumber" => "+919876543210",
"templateId" => "YOUR_TEMPLATE_ID",
"variables" => [
"otp" => "123456",
"appName" => "YourApp"
]
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true); import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
String body = """
{
"phoneNumber": "+919876543210",
"templateId": "YOUR_TEMPLATE_ID",
"variables": {
"otp": "123456",
"appName": "YourApp"
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.startmessaging.com/otp/send"))
.header("Content-Type", "application/json")
.header("X-API-Key", "sm_live_your_api_key_here")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"io"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"phoneNumber": "+919876543210",
"templateId": "YOUR_TEMPLATE_ID",
"variables": map[string]string{
"otp": "123456",
"appName": "YourApp",
},
})
req, _ := http.NewRequest("POST", "https://api.startmessaging.com/otp/send", bytes.NewBuffer(payload))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "sm_live_your_api_key_here")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
} Non-DLT SMS — FAQ
Is it legal to send SMS without DLT registration?
Yes. StartMessaging operates through pre-registered DLT routes with authorized telecom operators. Your messages are sent through our already-registered sender IDs and templates, which are fully TRAI-compliant. This is the same approach used by major banks and payment platforms in India.
What types of messages can I send without DLT?
You can send transactional messages only — OTP codes, order confirmations, shipping alerts, payment receipts, and account notifications. Promotional or marketing SMS require individual DLT registration per TRAI regulations.
Related Pages
Start Sending SMS in 5 Minutes
No DLT registration. ₹0.25/SMS. Free plan available.