REST API v2
Authentication
All /v2/secure/* endpoints use HTTP Basic Authentication:
- Basic username: SMPP account
system_id - Basic password: SMPP account password
The /v2/ping endpoint is public.
Ping
GET /v2/ping
Response
{
"data": "Notrel/PONG"
}
Submit one SMS
POST /v2/secure/send
Authorization: Basic <credentials>
Content-Type: application/json
JSON fields
| Field | Required | Description |
|---|---|---|
to |
Yes | One destination number. |
from |
No | Sender ID, maximum 20 characters. The account default is used when omitted. |
content |
Conditional | Text content. Mutually exclusive with hex_content. |
hex_content |
Conditional | Even-length hexadecimal binary content. Mutually exclusive with content. |
coding |
No | SMPP data_coding. Omit it for automatic GSM-7/UCS-2 selection. |
priority |
No | Priority from 0 to 3. Default: 0. |
sdt |
No | SMPP scheduled-delivery time, maximum 16 characters. |
validity_period |
No | Relative validity in minutes, from 1 to 525600. |
dlr |
No | yes or no. Default: no. |
dlr_url |
Conditional | HTTP or HTTPS DLR callback URL. Required when dlr=yes. |
dlr_level |
No | 1, 2, or 3. Default: 1. |
dlr_method |
No | GET or POST. Default: GET. |
tags |
No | A comma-separated string or an array containing at most 20 tags. |
Exactly one of content and hex_content must be supplied.
Example
curl --request POST 'https://sms.notrel.net/v2/secure/send' \
--user 'YOUR_SYSTEM_ID:YOUR_PASSWORD' \
--header 'Content-Type: application/json' \
--data '{
"to": "243816888222",
"from": "NOTICE",
"content": "Your verification code is 482901",
"dlr": "yes",
"dlr_url": "https://client.example/dlr",
"dlr_level": 2,
"dlr_method": "POST"
}'
Successful response
{
"data": "Success \"550e8400-e29b-41d4-a716-446655440000\""
}
Submit a batch
POST /v2/secure/sendbatch
Authorization: Basic <credentials>
Content-Type: application/json
Request structure
{
"globals": {
"from": "NOTICE",
"content": "Scheduled maintenance tonight",
"dlr": "no"
},
"messages": [
{
"to": ["243816888222", "243819999999"]
},
{
"to": "243810000000",
"content": "This recipient receives different content"
}
],
"batch_config": {
"callback_url": "https://client.example/batch/accepted",
"errback_url": "https://client.example/batch/rejected",
"schedule_at": "2026-09-08 10:00:00"
}
}
Batch rules
messagesmust contain between 1 and 1,000 message objects.- A message's
tovalue can be one destination or an array of destinations. - A batch can expand to at most 10,000 destinations.
- Values in
globalsare inherited by every message. - A value on an individual message overrides the corresponding global value.
- Every merged message must contain
toand exactly one content field. schedule_atacceptsYYYY-MM-DD HH:mm:ssin the platform timezone or a relative duration such as86400s.- Scheduled dates are stored in UTC. A date in the past becomes immediately eligible for processing.
Successful response
{
"data": {
"batchId": "550e8400-e29b-41d4-a716-446655440000",
"messageCount": 3
}
}
messageCount is the number of expanded destinations, not the number of
objects in messages.
Batch acceptance callbacks
When configured, Notrel Messaging sends a GET request to callback_url for
each destination accepted into the pipeline and to errback_url for each
rejected destination.
| Parameter | Description |
|---|---|
batchId |
Batch UUID. |
to |
Destination number. |
status |
1 for accepted or 0 for rejected. |
statusText |
Human-readable result, maximum 500 characters. |
These callbacks report pipeline acceptance. They are not delivery receipts.
Any successful 2xx response acknowledges a batch callback.
Check balance
GET /v2/secure/balance
Authorization: Basic <credentials>
Response
{
"data": {
"balance": 100.0,
"sms_count": "ND"
}
}
Get a rate
GET /v2/secure/rate?to=243816888222&content=Hello
Authorization: Basic <credentials>
Query parameters
| Field | Required | Description |
|---|---|---|
to |
Yes | Destination number. |
content |
No | Text used to calculate the segment count. |
coding |
No | Explicit SMPP data_coding. |
Response
{
"data": {
"submit_sm_count": 1,
"unit_rate": 0.028
}
}
v2 errors
{
"error": "Error description"
}
| Status | Meaning |
|---|---|
400 |
Invalid JSON, media type, field, content, or batch. |
401 |
Basic credentials are missing or invalid. |
403 |
Account state, authorization, pricing, or available credit rejection. |
412 |
No active route or effective customer rate is available. |
500 |
Internal gateway error. |
Base URL: https://sms.notrel.net. Use the SMPP account system ID and password from the customer portal. See credentials and shared behavior and delivery receipts.