The Splio SMS Relay API provides resources for Splio customers or partners to send short text messages (SMS: Short Message Service) to fixed line or mobile phone devices.

This API has two main uses: the “single” mode, to submit SMS one by one, and the “bulk” mode, which allows to send many SMS in a single API call. There is no hard limit to the number of SMS, but it is considered fair to not send more than 1000 per call.

Authentication methods and parameters format differ between these two modes. These differences are detailed in the present document.

Access

Base URL

Like other Splio APIs, the base URL depends on the hosting location of the universe.
If you’re unsure about the hosting location of your universe, please ask your contact in Splio.
Europe hosting: https://s3s.fr/api/forwardsms/
Asia hosting: https://api.spl4cn.com/api/forwardsms/

Authentication

All requests need to be authenticated through mandatory parameters.
These credentials are generated and communicated to the customer upon request.

  • universe id (e.g.: my_universe_id)
  • password (e.g.: my_api_key)

The authentication method differs if you’re using the single or the bulk call.

Single call

The parameters “universe” and “key” are provided within the argument of the URL.
Example:

https://s3s.fr/api/forwardsms/1.php?universe=my_universe_id&key=my_api_key&recipie nt=%2B8618600000000&message=Hello%20There

Bulk call

The information “universe” and “key” are elements of the JSON payload.
Example:

{
"universe": "my_universe_id", "key": "my_api_key", "messages": [
{
[…]
}
]
}

Transactional messages

In the case of pre-approved transactional traffic, a specific route can be set up for the message to be delivered. Reasons for doing so can be a higher quality of the delivery report, the ability to customize the sender name or to deliver the message during the night, among other things.

A single Splio universe can therefore have several API keys, one for marketing, and one for transactional SMS.

Make sure to specify the type of message you want to send when requesting an API key and reach out to your contact in Splio to get more information!

Request format

Parameter values should use UTF-8 encoding, and JSON formatting for the bulk mode.

Response format

Data returned in response messages is always UTF-8 encoded and JSON formatted. The unique response language is English.

Error Codes & Responses

In addition to the HTTP Return code, responses are returned as JSON objects that contain "code", "name" and "description" attributes. "code" and "name" are the HTTP code and name response.
The description is a human-readable explanation to help deciphering errors.
Examples of responses:

{"code":200,"name":"OK","description":"message queued, status=waiting"}

or

{"code":400,"name":"Bad Request","description":"Given payload is missing some mandatory fields ()"}

Response list

200 => OK: Message is queued
400 => Bad Request: Invalid JSON, Wrong arguments, or Missing mandatory fields
401 => Unauthorized: something is wrong with your universe/API key
500 => Internal Server Error: Something Blew up on our side
403 => Forbidden 404 => Not Found
406 => Not Acceptable, Overquota (not enough credit)
500 => Internal Server Error, Something is broken
501 => Not Implemented

Endpoints

The following table lists the available endpoints and their usage. Examples are provided later in the document.

Splio Customer Platform

METHODENDPOINTUSAGERETURNS
GET/api/forwardsms/1.phpSend a single messageJSON
POST/api/forwardsms/2.0/Send messages in bulkJSON

Accepted parameters


ObjectModeTypeRequirementDescription
universeBothstringmandatoryUniverse ID as provided by Splio
keyBothstringmandatorySMS API key as provided by Splio
messageSinglestringmandatorythe message to send to the recipient’s telephone number
recipientBothstringmandatorythe recipient’s telephone number, preferably in international format (preceded by “+” or “00”)
messagesBulkarray[object]mandatorylist of SMS to send, including for each: recipient, content, Unicode, long, tag, callback_url, and sender
contentBulkstringmandatorythe message to send to the recipient’s telephone number
unicodeBothintegeroptionalset to “1” if your message is Unicode encoded. Default is “0”, meaning GSM-7bit characters only. The maximum size of an unicode-encoded SMS falls to 70 characters. For Chinese characters, this argument must be set to “1”
longBothintegeroptionalif set to “1”, a message longer than the maximum allowed size would be sent through multiple SMS. The default value is “0”, meaning oversized messages are truncated. Multipart SMS are billed one message every 153 characters, or 67 characters if Unicode is used
tagBothstringoptionalalphanumeric ID linked to the API call to identify the message or campaign later on
callback_urlBulkstringoptionalthe given URL would be called by an HTTP GET request when a new state occurs for the message. The placeholder state would be replaced by one of these values: “done”, “stop” or “failed”.
senderBothstringoptional*customize the message sender displayed on the phone, if allowed by the operators and countries. Please refer to the local laws and rules in that matter.

*except for the UK, US, Canada, Australia, Morocco, Italy, Spain, Saudi Arabia, and UEA for which it is compulsory otherwise the campaign may be blocked.

Message / Content

The message can be submitted with options detailed in the below sections.
The message should not be more than 160 characters long if ASCII, 70 for Unicode (see below for options “unicode” and “long”).

However, it is important to be aware of the restrictions that could apply in the country of delivery, such as the requirement of a signature, or of an opt-out method in the message. Both these examples would use character space in the message, resulting in either message being truncated, or using more than one credit. If these items (signature and opt-out method) are mandatory but not provided, default values might be added instead, with the same consequences.
For instance, a message submitted to China (62 characters):

Hello, and welcome! We wish you a pleasant experience with us!

And message received (71 characters, it therefore costs 2 credits):

【速立优】Hello, and welcome! We wish you a pleasant experience with us!回T退订

Examples: Usages and samples of returned data

Send a long, unicode SMS

GET /api/forwardsms/1.php?universe=my_universe_id&key=my_api_key&recipient=%2B8618600000000&message=Lorem%20Ipsum%EF%
BC%8C%E4%B9%9F%E7%A7%B0%E4%B9%B1%E6%95%B0%E5%81%87%E6%96%87%E6%88%96%E8%80%85%E5%93%9 1%E5%85%83%E6%96%87%E6%9C%AC%
EF%BC%8C%20%E6%98%AF%E5%8D%B0%E5%88%B7%E5%8F%8A%E6%8E%92%E7%89%88%E9%A2%86%E5%9F%9F%E6%89%80%E5%B8%B8%E7%94%A8%E7%9A
%84%E8%99%9A%E6%8B%9F%E6%96%87%E5%AD%97%E3%80%82%E7%94%B1%E4%BA%8E%E6%9B%BE%E7%BB%8F%E4%B8%80%E5%8F%B0%E5%8C%BF%E5%
90%8D%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA%E5%88%BB%E6%84%8F%E6%89%93%E4%B9%B1%E4%BA%86%E4%B8%80%E7%9B%92%E5%8D%B0%E5
%88%B7%E5%AD%97%E4%BD%93%E4%BB%8E%E8%80%8C%E9%80%A0%E5%87%BA%E4%B8%80%E6%9C%AC%E5%AD%97%E4%BD%93%E6%A0%B7%E5%93%81%E4
%B9%A6&long=1&unicode=1

Example response:

{"code":200,"name":"OK","description":"message queued, status=waiting"}

Send two different SMS in bulk

GET /api/forwardsms/2.0/

{
"universe": "my_universe_id", "key": "my_api_key", "messages": [
{
"recipient": "+8618601234567",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod",
"unicode": true, "long": true, "tag": "tag",
"callback_url":"https://example.org/sms-tracker/my_recipient_id/ state ", "sender": "MyCompany"
},{
"recipient": "+33601234567",
"content": "Donec at ultricies nisl. Phasellus turpis lectus", "unicode": true,
"long": true, "tag": "other-tag",
"sender": "MyCompany"
}
]
}

Example response:

{
"code": 200, "name": "OK", "description":
{
"messages": [
{
"status": "waiting",
"details": [], "nb_unit": 1
},
{
"status": "waiting",
"details": [], "nb_unit": 1
}
],
"nb_message_sent": 2,
"nb_unit_used": 2,
"remaining_quota": 5021
}
}