Non-DLT SMS

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
StartMessaging Non-DLT Flow Diagram
How It Works

3 Steps to Send SMS Without DLT

01

Sign Up for Free

Create your account in 30 seconds. No DLT registration needed. Get your API key instantly from the dashboard.

02

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.

03

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.

Benefits

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.

Code Integration

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))
}
FAQs

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.

SMS & Auth API

Start Sending SMS in 5 Minutes

No DLT registration. ₹0.25/SMS. Free plan available.