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

  • messages must contain between 1 and 1,000 message objects.
  • A message's to value can be one destination or an array of destinations.
  • A batch can expand to at most 10,000 destinations.
  • Values in globals are inherited by every message.
  • A value on an individual message overrides the corresponding global value.
  • Every merged message must contain to and exactly one content field.
  • schedule_at accepts YYYY-MM-DD HH:mm:ss in the platform timezone or a relative duration such as 86400s.
  • 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.