HTTP API documentation for developer
Protocol functionality allows you to send SMS messages, receive delivery statuses, check message statuses by msg_id, check balance.
Sending message
- Refill your balance, if it’s empty;
- Generate a new API key. You can have as much as 5 of them and create/delete them at any time;
- State your IP (single, several, or range) that the requests will be coming from.
HTTP API URL:
http://api.sms.intel-tele.com/message/send/
Request params:
username |
required |
api_key |
required |
from |
a sender addr that a alternative message appears to come from. Use together with sms_message. Can be one of the following: “fully numeric, up to 15 digits, not less than 3 digits”, “alpha-numeric, up to 11 latin symbols, not less than 3 symbols” |
to |
required, a destination address. Several destinations can be provided, separated by comma (“,”) |
message |
required, urlencoded message body. A long message will be split into multiple sms (max 4 parts). The price of the message will be multiplied by parts count |
priority |
optional, can take values from 0 (lowest) to 3 (highest). default is 0 |
system_type |
optional, can be latin chars or number, up to 8 symbols, allows you to logically group your traffic in the reports |
Example request:
curl “http://api.sms.intel-tele.com/message/send/?username=foo&api_key=bar&from=test&to=7123456789&message=Test+123”
Example response:
{“reply”: [{“status”: “OK”, “cost”: “0.123456”, “country”: “ru”, “mccmnc”: “250XX”, “number”: “7123456789”, “parts”: 1, “message_id”: “3c32257b-e0b8-4be9-b0e6-e871116b4bdf”}]}
The response of our system is JSON, and can be one of the following:
errors for the whole request:
Response | Description |
{'reply':[{'status': 'error: wrong username/api_key'}]} |
the auth is wrong |
{'reply':[{'status': 'error: bruteforcing detected'}]} |
too many unauthorized requests had been made, this IP will be blocked for 5 minutes |
{'reply':[{'status': 'error: ip not allowed'}]} |
the request initiator’s IP is not listed in our system |
{'reply':[{'status': "error: can't send message"}]} |
no “message” or “to” parameters, sending is not possible |
{'reply': [{'status': 'error: message is too long'}]} |
message length exceeds the allowed number of parts (4) |
{'reply':[{'status': "error: sender addr is banned"}]} |
sender name is blocked as spam. For clarifications, please contact tech support |
{'reply':[{'status': 'error: wrong sender addr'}]} |
“from” parameter exceeds 15 digits or 11 alphanumeric characters |
errors per submitted number:
Response | Description |
{"reply": [{"number": "7123456789", "status": "error: number is blacklisted"}]} |
the subscriber had chosen to opt-out from receiving the messages. For clarifications, please contact tech support. |
{"reply": [{'number': '7123456789', 'status': "error: repeat detected"}]} |
a message has been blocked from being repeatedly sent to the same number within 1 minute |
{'reply':[{'number':'7123456789', 'status':"error: can't determine country"}]} |
the country of the given number can’t be determined |
{'reply':[{'number':'7123456789', 'status':"error: no route to country"}]} |
your profile has no active route to this number’s country |
{'reply':[{'number':'7123456789', 'status':"error: route can't handle the message"}]} |
some providers imply restrictions for sending messages with numeric sender addr |
{'reply':[{'number':'7123456789', 'status':"error: low balance", 'parts':1, 'cost':'0.04'}]} |
not enough balance |
success response per sms:
Response | Description |
{"reply": [{"status": "OK", "cost": "0.186440", "country": "ru", "mccmnc": "250XX", "number": "7123456789", "parts": 1, "message_id": "3c32257b-e0b8-4be9-b0e6-e871116b4bdf"}]} |
the message has entered the outgoing queue, msgid is ‘f3e76f4e-d4e3-424b-b26b-c0ebc72892cd’, message consists of 1 part! |
Field values:
status |
Send status, “OK” means that the message was correctly processed and queued for sending to an external SMS provider |
parts |
parts of sms |
cost |
SMS cost per number |
number |
the number for which the status is transmitted. if there are several numbers, then everyone will have their own hash “{}” inside the “reply” list |
message_id |
The message id assigned by the system. will be transmitted in asynchronous calls of the status handler |
country |
two-letter country code, ISO 3166 code list |
mccmnc |
Country Code, Mobile Country Code |
Asynchronous MT messages status
Provide us with the URL and method (GET or POST) in order to receive the message statuses to your system asynchronously.
Our request will have the following params:
msgid |
the ID of the message that our system assigned earlier at submit, e.g. f3e76f4e-d4e3-424b-b26b-c0ebc72892cd |
status |
can be one of the following:
|
dlr_timestamp |
the timestamp when the status has been received by or system. The timezone is UTC |
Synchronous MT messages status
URL (for GET or POST):
http://api.sms.intel-tele.com/message/status/
Request parameters:
username |
required |
api_key |
required |
requests |
required, one or several msg_ids, separated by a comma. |
timeformat |
optional, urlencoded. Defines the format of the status timestamp. Please refer to the table of formatting characters at Python’s documentation. If not set, no timestamp will be passed in the response. For example, timeformat=’%d/%m/%Y %H:%M:%S’ will yield this date: 17/02/2013 19:08:29 |
timezone |
optional, urlencoded. Please refer to. the list of available timezones. If not set, the timezone from your profile will be used |
Example request:
curl “http://api.sms.intel-tele.com/message/status/?username=foo&api_key=bar&requests=3c32257b-e0b8-4be9-b0e6-e871116b4bdf&timezone=UTC&timeformat=%25d-%25m-%25Y%20%25H:%25M:%25ST%25z”
Example response:
{“3c32257b-e0b8-4be9-b0e6-e871116b4bdf”: {“date”: “17-02-2013 12:08:29T+0000”, “status”: “rejectd”}}
Balance checking
URL (for GET or POST):
http://api.sms.intel-tele.com/balance/
Request parameters:
Parameter | Description | Required |
username |
Yes | |
api_key |
Yes |
Request example:
curl “http://api.sms.intel-tele.com/balance/?username=foo&api_key=bar”
Response example:
{“balance”: “-0.42”}
Credit checking
URL (for GET or POST):
http://api.sms.intel-tele.com/credit/
Request parameters:
Parameter | Description | Required |
username |
Yes | |
api_key |
Yes |
Request example:
curl “http://api.sms.intel-tele.com/credit/?username=foo&api_key=bar”
Response example:
{“credit”: “1.23”}
Rates
URL (for GET or POST):
http://api.sms.intel-tele.com/rates/
Request parameters:
Parameter | Description | Required |
username |
Yes | |
api_key |
Yes |
Request example:
curl “http://api.sms.intel-tele.com/rates/?username=foo&api_key=bar”
The response of our system is JSON, and can be one of the following:
errors for the whole request:
Field | Description |
{'message': 'Invalid auth', 'error': true} |
the auth is wrong |
{'status': 'bruteforcing detected', 'error': true} |
too many unauthorized requests had been made, this IP will be blocked for 5 minutes |
{'status': 'ip not allowed', 'error': true} |
the request initiator’s IP is not listed in our system. |
success response:
{“user”: {“ru”: {“01”: [0.123456, 0], “”: [0.234567, 0]}}}
Field | Description |
user |
username |
ru |
country ISO-code |
"01": [ 0.123456, 0 ], |
MNC Network: 1st param: price per 1 sms 2nd param: 0: pay for all sms, 1: pay only for delivered sms * empty key – all networks |
SMPP v 3.4 protocol for SMS
You can use protocol SMPP v 3.4 for sending SMS.
The most functional and productive protocol. This protocol is used by mobile carriers, large Sms Hubb (aggregators).