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)

A partir de
0,0312€ HT

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

send_sms("999931230", "Test éà0 € $ £", "Emetteur123", "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', // à modifier (Obligatoire)
 'numero': '06XXXXXXXXX,07YYYYYYYY', // à compléter (Obligatoire)
 'emetteur' : 'emetteur123', // à compléter (Optionnel)
 'stop' : '1' // Optionnel (gère l'ajout d'un STOP pour le marketing quand l'émetteur est personnalisé
 });

//Traitement du texte du message
var message = "Exemple de SMS €€ éé ££££ ùùùù"; //Texte du SMS
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 = "Exemple de SMS €€ éé ££££ ùùùù";
 String destinataires = "06XXXXXXXXX,07YYYYYYYY"; //Destinataires séparés par une virgule
 String emetteur = "toto123"; //Paramètre optionnel, permet de gérer l'émetteur du SMS 
 String stopOption = "1"; //Permet de gérer le STOP sms lors d'un envoi marketing (cf. documentation API HTTP)
 
 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), //Destinataires séparés par une virgule
 new NameValuePair("emetteur", emetteur), //Paramètre optionnel, permet de gérer l'émetteur du SMS
 new NameValuePair("stop", optionStop) //Permet de gérer le STOP sms lors d'un envoi marketing (cf. documentation API HTTP)
 };
 
 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("Erreur durant l'appel de l'API");
 }
 
 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), //Destinataires séparés par une virgule
 new NameValuePair("emetteur", emetteur), //Paramètre optionnel, permet de gérer l'émetteur du SMS
 new NameValuePair("stop", optionStop) //Permet de gérer le STOP sms lors d'un envoi marketing (cf. documentation API HTTP)
 };
 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': '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> 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 avec requête HTTP GET
 new SendSMSExemple().sendSMSGet();
 
 // Send SMS avec requête HTTP GET
 new SendSMSExemple().sendSMSPost();
 
 }

 public void sendSMSGet()
 {
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// DEBUT smsMode.com Send SMS HTTP Get");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 
 // From synchronous code
 string token = "AAAAAAAAAAAAABBBBBBBBBBBxxxxxxxxxxxxx";
 string numero = "06XXyyxxYY,07XXYYAABB"; 
 string message = "Test d'envoi de SMS à travers la plateforme smsMode.com !!! éà € $£ % -- 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("/////////////// FIN smsMode.com Send SMS HTTP Get");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 

 
 }
 public void sendSMSPost()
 { 
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 Console.WriteLine("/////////////// DEBUT smsMode.com Send SMS HTTP POST");
 Console.WriteLine("//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"); 
 
 // From synchronous code
 string url = "https://api.smsmode.com/http/1.6/sendSMS.do";
 
 var values = new Dictionary{
 { "accessToken" , "AAAAAAAAAAAAABBBBBBBBBBBxxxxxxxxxxxxx"},
 { "numero", "06XXyyxxYY,07XXYYAABB" },
 { "message", "Test d'envoi de SMS à travers la plateforme smsMode.com !!! éà € $£ % -- HTTP POST" }
 };

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

 public static async Task Get(string url){
 
 using (var result = await _httpClient.GetAsync(url)){
 string content = await result.Content.ReadAsStringAsync();
 return content;
 }
 }
 public static async Task Post(string url, System.Collections.Generic.Dictionary 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 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

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++, Rubi, 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

* 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.