1curl --request POST \2 --url api.ubill.dev/v1/sms/send \3 --header 'key: ••••••••'
200 OK{ "statusID": 0, "message": "SMS Sent" }
GETTING STARTED
Работа с uBill API
UBill API - provides programmatic access to our resources. You will be able to integrate our service into your system and communicate with clients easily.
API examples
API implementations in different languages, provided by different sources.
Запросы к защищённым endpoint-ам должны содержать секретный API-ключ компании. Большинство endpoint-ов принимают его в header key; несколько legacy GET/XML endpoint-ов используют query-параметр key.
Не публикуйте API-ключ
Храните ключ в server-side переменной окружения. Не размещайте его во frontend JavaScript, мобильном приложении или публичном Git-репозитории.
Request headers
key: YOUR_API_KEY
Content-Type: application/json
02
CONVENTIONS
Форматы и статусы
API преимущественно возвращает ответы JSON. Результат операции определяется полем statusID; успешный запрос имеет значение 0. XML endpoint возвращает ответ в формате XML.
0SMS отправлено
1Получено
2Не доставлено
3Ожидание статуса
4Ошибка
API REFERENCE
Все ресурсы и endpoint-ы
Информация ниже синхронизирована с последней версией публичной коллекции Postman.
API GROUP
SMS API
10 endpoint
SMS API / brandName Create
brandName Create
API key · Header
POSThttps://api.ubill.dev/v1/sms/brandNameCreate
Response status
statusID
Description
0
BrandName Created
10
The brandName field is empty
20
The minimum number of characters in the brandName must be 2 and the maximum number 11
30
Unauthorized markings are used in the brandName
40
brandName has already been added
50
Wait for the last added brandName to be authenticated
Secret API key used to authenticate requests. The key can be viewed and managed in the company settings.
brandID
Unique brand identifier within the system.
numbers
Comma-separated list of mobile phone numbers. Numbers must be in international format without00 or +.
text
SMS message content. Any Unicode characters are supported.
Optional Parameters
Parameter
Description
stopList
stopList=false - disables stop list validation. The message will be sent even if the recipient number exists in the stop list.
otp
otp=true - marks the message as an OTP (one-time password / verification code). OTP messages are processed with the highest priority. ⚠️ Must be used only for authentication codes.
sendTime
Scheduled SMS delivery time. Format: Y-m-d H:i (example: 2026-02-01 23:30). The specified time must be in the future. If omitted, the message is sent immediately.
callbackUrl
Individual callback URL for this SMS request. Works only if a default callback URL is configured globally in the API application settings.
Notes
OTP messages are intended strictly for authentication flows (login, verification, password reset).
Misuse of the otp parameter may result in delivery restrictions or account limitations.
Response Status
statusID
Description
0
SMS Sent
10
brandID not found
20
Numbers not found
30
Empty message text
40
Not enough SMS
50
Valid numbers not found
60
Invalid sendTime format. Use Y-m-d H:i
90
JSON Error
99
General error
⚠️ GET Method Limitations
The API does not enforce a strict limit on the number of recipient numbers.
Actual limits are imposed by URL and HTTP header size constraints (Cloudflare, proxies, browsers).
Practical Limits
✅ Up to ~1500 numbers per request works reliably.
⚠️ Around 2000+ numbers may result in Header overflow errors.
These errors occur before the request reaches the API, at the HTTP / proxy level.
Recommendation
Use GET only for small to medium requests.
For large recipient lists, always use POST.
URL parameters 5
keyqueryYOUR_API_KEY
brandIDquery1
numbersquery9955XXXXXXXX,9955XXXXXXXX
textquerymessage
stopListqueryfalse
Примеры кода
cURL · PHP · JavaScript
cURL
curl --request GET \
--url 'https://api.ubill.dev/v1/sms/send?key=YOUR_API_KEY&brandID=1&numbers=9955XXXXXXXX,9955XXXXXXXX&text=message&stopList=false'
Array of mobile phone numbers. Numbers must be in international format without00 or +. Example: ["9955XXXXXXXX","9955XXXXXXXX"]
text
SMS message content. Any Unicode characters are supported.
Optional Parameters (JSON Body)
Parameter
Description
stopList
false - disables stop list validation. The message will be sent even if the recipient number exists in the stop list.
otp
true - marks the message as an OTP (one-time password / verification code). OTP messages are processed with the highest priority. ⚠️ Must be used only for authentication codes.
sendTime
Scheduled SMS delivery time. Format: Y-m-d H:i (example: "2026-02-01 23:30"). Must be in the future. If omitted, the message is sent immediately.
callbackUrl
Individual callback URL for this SMS request. Works only if a default callback URL is configured globally in the API application settings.
Notes
OTP messages are intended strictly for authentication flows (login, verification, password reset).
Misuse of the otp parameter may result in delivery restrictions or account limitations.
Response Status
statusID
Description
0
SMS Sent
10
brandID not found
20
Numbers not found
30
Empty message text
40
Not enough SMS
50
Valid numbers not found
60
Invalid sendTime format. Use Y-m-d H:i
90
JSON Error
99
General error
⚠️ Limits & Notes
Max request body size: 100 MB → Requests exceeding this size will be rejected.
For large SMS batches, split requests into smaller chunks to avoid timeouts or memory issues.
Use stopList to avoid sending messages to blocked numbers.
Practical Observation from Testing:
In our tests, SMS messages were successfully sent to up to 500,000 numbers in a single request. Sending requests above this number may lead to memory, timeout, or request size issues. Actual limits may vary depending on text length, encoding, and server load.
Recommendation:
For safe and reliable operation, it is recommended to limit requests to around 100,000 numbers per batch.
Request headers 2
Key
Value
Источник
key
YOUR_API_KEY
Авторизация
Content-Type
application/json
Header
Request body JSON
Request body
{
"brandID": 1,
"numbers": [
9955XXXXXXXX,
9955XXXXXXXX
],
"text": "Message",
"stopList": false, // Enable/disable checking numbers in the stop list
"sendTime": "2026-02-01 23:01" // sendTime (optional)
}
Array of mobile phone numbers. Numbers must be in international format without00 or +. Example: ["9955XXXXXXXX","9955XXXXXXXX"]
text
SMS message content. Any Unicode characters are supported.
Optional Parameters (JSON Body)
Parameter
Description
stopList
false - disables stop list validation. The message will be sent even if the recipient number exists in the stop list.
otp
true - marks the message as an OTP (one-time password / verification code). OTP messages are processed with the highest priority. ⚠️ Must be used only for authentication codes.
sendTime
Scheduled SMS delivery time. Format: Y-m-d H:i (example: "2026-02-01 23:30"). Must be in the future. If omitted, the message is sent immediately.
callbackUrl
Individual callback URL for this SMS request. Works only if a default callback URL is configured globally in the API application settings.
Notes
OTP messages are intended strictly for authentication flows (login, verification, password reset).
Misuse of the otp parameter may result in delivery restrictions or account limitations.
Response Status
statusID
Description
0
SMS Sent
10
brandID not found
20
Numbers not found
30
Empty message text
40
Not enough SMS
50
Valid numbers not found
60
Invalid sendTime format. Use Y-m-d H:i
90
JSON Error
99
General error
⚠️ Limits & Notes
Max request body size: 100 MB → Requests exceeding this size will be rejected.
For large SMS batches, split requests into smaller chunks to avoid timeouts or memory issues.
Use stopList to avoid sending messages to blocked numbers.
Practical Observation from Testing:
SMS per recipient
Maximum numbers per request
1
400,000
2
200,000
3
150,000
4
120,000
5
100,000
6
50,000
Actual limits may vary depending on text length, encoding, and server load.
Recommendation:
For safe and reliable operation, it is recommended to limit requests to the numbers listed above per batch, according to the number of concatenated SMS messages being sent.