API SMS
Pensée pour les développeurs. Construite pour la performance.

Implémentez notre API d’envoi de SMS MT & de réception de SMS MO vers la France & l’international. Nos SDKs facilitent le développement des fonctionnalités d’envoi & réception de SMS sur-mesure. Nos webservices sont compatibles avec le langage de votre choix (PHP, Java, cURL, .NET, JSON, C#, XML, Python, RUBY, ASP, C++,…).

CONSULTEZ LA DOCUMENTATION DE NOTRE API (PDF – FR)
SEE THE TECHNICAL DOCUMENTATION (PDF – EN)
CONSULTE LA DOCUMENTACIÓN DEL DESARROLLADOR (PDF – EN) CONSULTARE LA DOCUMENTAZIONE DELLO SVILUPPATORE (PDF – EN) BERATEN SIE DIE ENTWICKLERDOKUMENTATION (PDF – EN)

A partir de
0,0312€ HT

GUIDE DE DÉMARRAGE
IMPLÉMENTEZ VOTRE PREMIÈRE REQUÊTE…

send_sms("999931230", "MyMessage éà0 € $ £", "MySenderID", "ref123");

function send_sms($num, $texte, $emetteur, $ref) {
 $url = 'https://api.smsmode.com/http/1.6/sendSMS.do';
 $texte = iconv("UTF-8", "ISO-8859-15", $texte);
 $fields_string = 'accessToken=AAAAZZZZZZxxxxxxYYYYYYYY&message='.urlencode($texte).'&numero='.$num.'&emetteur='.$emetteur.'&refClient='.$ref.'&stop=1';

 $ch = curl_init();

 curl_setopt($ch,CURLOPT_URL, $url);
 curl_setopt($ch,CURLOPT_POST, 1);
 curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

 $result = curl_exec($ch);

 curl_close($ch);
 return $result;
}
const urlencode = require('urlencode');
const http = require('https');
const querystring = require('querystring');

var postData = querystring.stringify({
 'accessToken': 'xxxxYYYYYYAAAAAZZZZZZ', //modify (Required)
 'numero': '06XXXXXXXXX,07YYYYYYYY', //complete (Required)
 'emetteur' : 'MySenderID', //complete (Optional)
 'stop' : '1' //Optional (deal with a "STOP" add for marketing if personalized sender)
 }); 

//Text message processing
var message = "My Message €€ éé ££££ ùùùù"; //SMS text
postData = postData + "&message=" + urlencode(message,'ISO-8859-15');

const options = {
 hostname: 'api.smsmode.com',
 port: 443,
 path: '/http/1.6/sendSMS.do',
 method: 'POST',
 headers: {
 'Content-Type': 'application/x-www-form-urlencoded; charset=ISO-8859-15',
 'Content-Length': Buffer.byteLength(postData)
 }
};

const req = http.request(options, (res) => {
 console.log(`STATUS: ${res.statusCode}`);
 res.on('data', (chunk) => {
 console.log(`BODY: ${chunk}`);
 });

 res.on('end', () => {
 console.log('No more data in response.');
 });
});

req.on('error', (e) => {
 console.error(`problem with request: ${e.message}`);
 });

// write data to request body
req.write(postData);
req.end();
package com.calade.tools.temp;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.util.EncodingUtil;

public class ExempleClientHttpAPI {
 
 private String accessToken;
 private String BASE_URL = "https://api.smsmode.com/http/1.6/";
 
 public ExempleClientHttpAPI(String accessToken) {
 super();
 this.accessToken = accessToken;
 }
 
 public static void main(String[] args) {
 String accessToken = "xxxxYYYYYYAAAAAZZZZZZ";
 String message = "My Message €€ éé ££££ ùùùù";
 String destinataires = "06XXXXXXXXX,07YYYYYYYY"; //Receivers separated by a comma
 String emetteur = "MySenderID"; //Optional parameter, allows to deal with the sms sender
 String stopOption = "1"; //Deal with the STOP sms when marketing send (cf. API HTTP documentation)
 
 ExempleClientHttpAPI client = new ExempleClientHttpAPI(accessToken);
 
 client.sendSMSUsingGet(message, destinataires, emetteur, stopOption);
 client.sendSMSUsingPost(message, destinataires, emetteur, stopOption);
 }
 
 public void sendSMSUsingGet(String message, String destinataires, String emetteur, String optionStop) {
 try {
 String getURL = BASE_URL + "sendSMS.do";
 GetMethod httpMethod = new GetMethod(getURL);
 httpMethod.addRequestHeader("Content-Type", "plain/text; charset=ISO-8859-15");
 
 NameValuePair params[] = { new NameValuePair("accessToken", this.accessToken), //
 new NameValuePair("message", message), //
 new NameValuePair("numero", destinataires), //Receivers separated by a comma
 new NameValuePair("emetteur", emetteur), //Optional parameter, allows to deal with the sms sender
 new NameValuePair("stop", optionStop) //Deal with the STOP sms when marketing send (cf. API HTTP documentation) };
 
 httpMethod.setQueryString(EncodingUtil.formUrlEncode(params, "ISO-8859-15"));
 
 System.out.println(httpMethod.getURI() + "" + httpMethod.getQueryString());
 
 executeMethod(httpMethod);
 } catch (Exception e) {
 manageError(e);
 }
 }
 
 private void executeMethod(HttpMethod httpMethod) throws IOException, HttpException {
 HttpClient httpClient = new HttpClient();
 
 System.out.println(httpMethod);
 int codeReponse = httpClient.executeMethod(httpMethod);
 verifyReponse(httpMethod, codeReponse);
 }
 
 private void verifyReponse(HttpMethod httpMethod, int codeReponse) throws IOException {
 if (codeReponse == HttpStatus.SC_OK || codeReponse == HttpStatus.SC_ACCEPTED) {
 String result = new String(httpMethod.getResponseBody());
 System.out.println(result);
 }
 }
 
 private void manageError(Exception e) {
 e.printStackTrace();
 System.err.println("Error during API call");
 }
 
 public void sendSMSUsingPost(String text, String destinataires, String emetteur, String optionStop) {
 try {
 String postURL = BASE_URL + "sendSMS.do";
 PostMethod httpMethod = new PostMethod(postURL);
 httpMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-15");
 
 NameValuePair data[] = { new NameValuePair("accessToken", this.accessToken), //
 new NameValuePair("message", text), //
 new NameValuePair("numero", destinataires), //Receivers separated by a comma
 new NameValuePair("emetteur", emetteur), //Optional parameter, allows to deal with the sms sender
 new NameValuePair("stop", optionStop) //Deal with the STOP sms when marketing send (cf. API HTTP documentation)
 };
 httpMethod.setRequestBody(data);
 
 System.out.println("///////////////////////");
 httpMethod.getRequestEntity().writeRequest(System.out);
 executeMethod(httpMethod);
 
 } catch (Exception e) {
 manageError(e);
 }
 }
}
--- Mode GET
import requests
r = requests.get('https://api.smsmode.com/http/1.6/sendSMS.do?accessToken=TOKEN&message=MESSAGE&numero=0612345678')
print r.text


--- Mode POST
import requests

payload = {'accessToken': 'TOKEN', 'message': 'My Message', 'numero':'0612345678'}
r = requests.post("https://api.smsmode.com/http/1.6/sendSMS.do", data=payload)

print r.text
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Threading;
using System.Text;
using System.Web;

namespace Smsmode
{
 
 public class SendSMSExemple {
 
 private static readonly HttpClient _httpClient= new HttpClient(new LoggingHandler(new HttpClientHandler()));
 
 private static byte[] dictionnaryToByteArray(IEnumerable<KeyValuePair<string, string>> nameValueCollection)
 {
 StringBuilder sb = new StringBuilder();
 foreach (var nameValue in nameValueCollection) {
 if (sb.Length > 0)
 sb.Append('&');

 sb.Append(nameValue.Key);
 sb.Append('=');

 // Here is the major change
 sb.Append(HttpUtility.UrlEncode(nameValue.Value, Encoding.GetEncoding("iso-8859-15") ));
 }

 return Encoding.Default.GetBytes(sb.ToString());
 }
 
 public static void Main(string[] args)
 {
 // Send SMS via HTTP GET request
 new SendSMSExemple().sendSMSGet();
 
 // Send SMS via HTTP GET requête 
 new SendSMSExemple().sendSMSPost();
 
 }

 public void sendSMSGet()
 {
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// Beginning Send SMS HTTP Get");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 
 // From synchronous code
 string token = "AAAAAAAAAAAAABBBBBBBBBBBxxxxxxxxxxxxx";
 string numero = "06XXyyxxYY,07XXYYAABB"; 
 string message = "My Message éà € $£ % -- HTTP GET";
 string url = "https://api.smsmode.com/http/1.6/sendSMS.do?accessToken="+token+"&numero="+numero;
 

 string urlEncodedMessage = HttpUtility.UrlEncode(message, Encoding.GetEncoding("ISO-8859-15"));
 
 url = url + "&message="+urlEncodedMessage;
 
 string result = Get(url).Result;
 
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// End Send SMS HTTP Get");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 

 
 }
 public void sendSMSPost()
 { 
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// Beginning Send SMS HTTP POST");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 
 // From synchronous code
 string url = "https://api.smsmode.com/http/1.6/sendSMS.do";
 
 var values = new Dictionary<string, string>{
 { "accessToken" , "AAAAAAAAAAAAABBBBBBBBBBBxxxxxxxxxxxxx"},
 { "numero", "06XXyyxxYY,07XXYYAABB" },
 { "message", "My Message éà € $£ % -- HTTP POST" }
 };

 string result = Post(url,values).Result;
 
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// End Send SMS HTTP POST");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 
 }

 public static async Task<string> Get(string url){
 
 using (var result = await _httpClient.GetAsync(url)){
 string content = await result.Content.ReadAsStringAsync();
 return content;
 }
 }
 public static async Task<string> Post(string url, System.Collections.Generic.Dictionary<string, string> values){
 
 byte[] data = dictionnaryToByteArray(values);
 ByteArrayContent byteContent = new ByteArrayContent(data);
 byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
 byteContent.Headers.ContentType.CharSet = Encoding.GetEncoding("ISO-8859-15").HeaderName; 
 
 using (var response = await _httpClient.PostAsync(url,byteContent)){ 
 string result = await response.Content.ReadAsStringAsync();
 return result;
 }
 }
 
 }
 
 public class LoggingHandler : DelegatingHandler{
 
 public LoggingHandler(HttpMessageHandler innerHandler)
 : base(innerHandler)
 {
 }

 protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
 {
 Console.WriteLine("//-----------------------------------------------------------------------------------------------//");
 Console.WriteLine("Request:");
 Console.WriteLine("//-----------------------------------------------------------------------------------------------//");
 Console.WriteLine(request.ToString());
 if (request.Content != null)
 {
 Console.WriteLine(await request.Content.ReadAsStringAsync());
 }
 Console.WriteLine();

 HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

 Console.WriteLine("//-----------------------------------------------------------------------------------------------//");
 Console.WriteLine("Response:");
 Console.WriteLine("//-----------------------------------------------------------------------------------------------//");
 Console.WriteLine(response.ToString());
 if (response.Content != null)
 {
 Console.WriteLine(await response.Content.ReadAsStringAsync());
 }
 Console.WriteLine();

 return response;
 }
 }

}
ResLancement = HTTPRequête("https://api.smsmode.com")
SI ResLancement = Vrai ALORS
 ResCode = HTTPDonneRésultat()
 Info("Code HTML : " + ResCode)
FIN
require 'net/http'
#require 'open-uri'
require 'uri'
require 'json'


BASE_URL = "https://api.smsmode.com/http/1.6/"
accessToken = "ShdeIOjdXxxxXXxxxx"
message = "My Message €€ éé ££££ ùùùù"
destinataires = "062xxxxxxx,074xxxxxxx" #Receivers separated by a comma
emetteur = "MySenderID" #Optional parameter, allows to deal with sms sender
stopOption = "1" #Allow to deal with STOP sms when marketing send (cf. API HTTP documentation)

# send SMS with GET method

header = {'Content-Type': 'plain/text; charset=ISO-8859-15'}
params = { :accessToken => accessToken, :message => message.encode(Encoding::ISO_8859_15), :numero => destinataires, :emetteur => emetteur, :stop => stopOption}

uri = URI.parse(BASE_URL + 'sendSMS.do');
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host,uri.port)
http.use_ssl = true # Enable HTTP method
request = Net::HTTP::Get.new(uri.request_uri,header)


res = http.request(request)
puts res.code
puts res.body

# send SMS with POST method

header = {'Content-Type': 'application/x-www-form-urlencoded; charset=ISO-8859-15'}
params = { :accessToken => accessToken, :message => message.encode(Encoding::ISO_8859_15), :numero => destinataires, :emetteur => emetteur + 'Post', :stop => stopOption}
uri = URI.parse(BASE_URL + 'sendSMS.do');

http = Net::HTTP.new(uri.host,uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri,header)
request.body = URI.encode_www_form(params)

res = http.request(request)
puts res.code
puts res.body

import scalaj.http.Http

object SendSMSExample extends App {

 //get method to send SMS
 var SendSMSUsingGET = Http("https://api.smsmode.com/http/1.6/sendSMS.do")
 .param("accessToken","xxxxYYYYYYAAAAAZZZZZZ")
 .param("message","My Message €€ éé ££££ ùùùù")
 .param("numero","06XXXXXXXXX,07YYYYYYYY")
 .charset("ISO-8859-15")
 .asString.body

 println(SendSMSUsingGET)

 //POST method to send SMS
 var SendSMSUsingPOST = Http("https://api.smsmode.com/http/1.6/sendSMS.do")
 .postForm(
 Seq(
 "accessToken" -> "xxxxYYYYYYAAAAAZZZZZZ",
 "message" -> "My Message €€ éé ££££ ùùùù",
 "numero" -> "06XXXXXXXXX,07YYYYYYYY",
 "emetteur" -> "Emeteur"
 )
 )
 .charset("ISO-8859-15")
 .asString.body

 println(SendSMSUsingPOST)

}

FICHE PRODUIT
LES CARACTÉRISTIQUES DE L’API SMS

FONCTIONNALITÉS INCLUES

L’API basée sur un gateway robuste, permet de monitorer des communications SMS directement dans vos applications. Découvrez les fonctionnalités liées à notre API.

  • une intégration simple et rapide de l’envoi automatisé de SMS MT et des SMS MO réponses dans les systèmes et applications
  • une compatibilité avec les langages de programmation les plus courants (PHP, Java, ASP, C++, Ruby, WINDEV, cURL, .NET, JSON, C#, XML, Python, etc.) pour pouvoir être utilisé avec toutes les applications et solutions logicielles
  • une infrastructure robuste et haute disponibilité traitant plus de 4 millions de requêtes quotidiennement
  • des requêtes HTTP simples permettant l’intégration de fonctionnalités étendues pour l’envoi automatisé de SMS (envoi immédiat ou programmé de SMS, suppression de SMS, historique des SMS, récupération des compte-rendus de réception ou DLR, ajout de contact, notification automatique, personnalisation des émetteurs ou sender ID, etc.)
  • une gestion des priorités d’envoi avec une séparation des trafics SMS marketing, SMS notification et SMS One Time Password sur des canaux différents pour optimiser la délivrabilité des messages critiques
  • la capacité d’envoyer des SMS Pro, des SMS Voix TTS, des SMS OTP ou des SMS Unicode (comportant émoticônes ou caractères issus de langages non latins – cyrillique, grec, arabe, hébreu, chinois, japonais, etc.)
  • le routage des text messages en qualité maximale sur tous les opérateurs en France et dans plus de 166 pays (dont les DOM-TOM)
  • une gestion des réponses et des DLR (comptes-rendus) avec une notification en temps réel

TARIFICATION
TARIFS DE L’API SMS

FRAIS DE MISE EN PLACE

AUCUN

FRAIS D’UTILISATION

COÛT DES SMS ENVOYÉS
  VOIR LES TARIFS SEE PRICING

* Nota : tarifs du SMS pour 160 caractères max. envoyé en France Métropolitaine.
Pour tous vos envois vers d’autres destinations, consultez le simulateur.

  • Durée de validité illimitée des packs de SMS

CONTACTEZ UN DE NOS EXPERTS

NOS AVANTAGES
POURQUOI IMPLÉMENTER L’API SMS SMSMODE ?

intégration d'une API SMS RESTfulUNE INTÉGRATION FACILE ET UNE STRUCTURE SCALABLE
Notre API prête à l’emploi, est conçue pour l’évolutivité et la performance. Grâce à quelques appels d’API documentés par des SDKs complets, vous intégrez les fonctionnalités d’envoi et de réception SMS, gérez les paramètres d’authentification, les formats de réponse, etc.

SLA de 99,999%UNE API AVEC UN NIVEAU DE SERVICE (SLA) DE 99.999%
Notre infrastructure dédiée et haute disponibilité est monitorée en continu, 24/7, avec résistance à la panne grâce notamment à une solution de basculement du trafic vers des fournisseurs de secours. Le taux de réussite de l’API SMS est ainsi le véritable indicateur de notre expertise.

support client françaisUN SUPPORT CLIENT FRANÇAIS DISPONIBLE 24/7
Nos experts vous accompagnent dans l’implémentation et le suivi des envois de SMS réalisés avec notre webservice. Basés exclusivement en France, à Marseille, ils disposent d’outils performants de monitoring de votre trafic (ElasticSearch, Logstash, Kibana – ELK –).

Besoin de plus d’infos ?
N’hésitez pas à nous contacter.