SMS API & SMS Gateway

Connect your website, app or back office to JNT SMS with a plain HTTP API. Send single messages, OTP codes or batches, and check delivery status without opening the panel.

POSTAPI_URL_FROM_DOCSAuthorization: Bearer YOUR_API_KEY{"to": "+60 ••• ••••","text": "•••••••••"}

What the API does

  • Send a text message to one number or a list of numbers.
  • Send OTP and notification messages from your backend.
  • Look up the status of messages you sent.
  • Work with the same prepaid balance and per-country billing as the web panel.

Getting started

  1. Register and log in to the panel.
  2. Top up your balance.
  3. Open the API documentation and get your credentials from your account.
  4. Make your first request from a test number.

Full documentation: panel.jntsms.com/docs.

Example request

The example below shows the general shape of a request. Field names and the endpoint are placeholders. Use the exact values in the documentation.

curl -X POST "API_URL_FROM_DOCS" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+60123456789",
    "message": "Your verification code is 123456"
  }'
const res = await fetch("API_URL_FROM_DOCS", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    to: "+60123456789",
    message: "Your verification code is 123456"
  })
});
console.log(await res.json());
<?php
$ch = curl_init("API_URL_FROM_DOCS");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer YOUR_API_KEY",
    "Content-Type: application/json",
  ],
  CURLOPT_POSTFIELDS => json_encode([
    "to" => "+60123456789",
    "message" => "Your verification code is 123456",
  ]),
]);
echo curl_exec($ch);
import requests

res = requests.post(
    "API_URL_FROM_DOCS",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "to": "+60123456789",
        "message": "Your verification code is 123456",
    },
)
print(res.json())

Tips for a stable integration

  • Keep your API key on your server. Never put it in a mobile app or in browser code.
  • Send numbers in international format with the country code.
  • Handle an "insufficient balance" response by alerting your team, so a low balance does not quietly stop your OTP flow.
  • Store the message ID that comes back so you can match it with a status report later.

Related

Ready to send your first message?

Create an account, top up, and send from the panel in a few minutes.