Documentation API · v1
Envoyez des SMS depuis votre application
L'API HTTP EMISMS permet à votre site, votre logiciel ou votre application mobile (côté serveur) d'envoyer des SMS unitaires ou en masse, de programmer des envois, de suivre votre solde et d'alimenter vos listes de contacts.
Démarrage rapide
- Créez votre compte EMISMS et rechargez votre crédit SMS.
- Récupérez votre clé API dans l'espace client, menu API développeur.
- Faites approuver votre Sender ID (le nom d'expéditeur affiché sur le téléphone), menu Demandes de Sender ID.
- Envoyez votre premier SMS avec la requête ci-contre : la réponse
"code": "ok"confirme l'envoi.
Testez d'abord avec votre propre numéro. Chaque SMS envoyé, même de test, est décompté de votre crédit.
Authentification
Chaque requête est authentifiée par le paramètre api_key, propre à votre compte. Il n'y a ni jeton à renouveler ni en-tête particulier.
Votre clé donne accès à votre crédit SMS. Utilisez-la uniquement côté serveur : jamais dans le code d'une page web, d'une application mobile ou d'un dépôt public. En cas de doute, changez votre clé depuis l'espace client (menu API développeur) : l'ancienne cesse immédiatement de fonctionner.
L'accès API doit être activé sur votre compte. Sinon, toutes les requêtes renvoient le code 102.
Requêtes et réponses
- Protocole : HTTPS uniquement.
- Méthodes :
GETouPOST. PréférezPOSTpour l'envoi : le texte du message ne figure pas dans l'URL ni dans les journaux des serveurs. - Paramètres :
actionetapi_keydans l'URL ; les autres en URL ou dans le corpsapplication/x-www-form-urlencoded. - Encodage : UTF-8.
- Réponse : JSON. Le statut HTTP est toujours 200 : testez le champ
code, qui vaut"ok"en cas de succès ou un code d'erreur accompagné d'unmessage.
/sms/api?action=send-smsEnvoyer un SMS
Envoie immédiatement un message à un ou plusieurs destinataires. Le crédit est débité à l'acceptation de la requête, selon le nombre de SMS et le tarif du pays de destination.
Paramètres
api_keyobligatoire | Votre clé API. |
toobligatoire | Numéro au format international sans « + », par exemple 2250707070707. Plusieurs numéros séparés par des virgules, 100 au maximum. |
fromobligatoire | Votre Sender ID approuvé (11 caractères maximum), par exemple EMISMS. |
smsobligatoire | Texte du message. Les accents font passer le message en Unicode. |
unicodefacultatif | 1 pour forcer l'Unicode. Inutile en pratique : la détection est automatique. |
schedulefacultatif | Envoi différé, voir Programmer un envoi. |
Réponse
code | "ok" si le message est accepté pour envoi. |
message | "Successfully Send", ou la description de l'erreur. |
balance | Montant restant sur le compte après l'envoi, en currency (XOF). |
sms | Nombre de SMS encore disponibles (montant ÷ prix d'un SMS, 24 XOF). |
user | Nom du compte. |
« ok » signifie que le message est accepté et transmis à l'opérateur. Le statut de chaque message se suit ensuite avec l'historique ou dans l'espace client.
/sms/api?action=send-smsEnvoi en masse
Le même message peut être envoyé à 100 numéros par requête, séparés par des virgules. Au-delà, découpez votre liste en lots de 100, comme dans l'exemple.
- Si un seul numéro du lot est invalide, tout le lot est refusé (code
103) : validez vos numéros en amont. - Les numéros présents dans la liste noire sont retirés automatiquement du lot.
- Le crédit nécessaire pour tout le lot est vérifié avant l'envoi (code
105s'il est insuffisant). - Pour des campagnes de plusieurs milliers de contacts avec suivi détaillé, l'espace client propose aussi l'envoi par fichier Excel et les campagnes.
/sms/api?action=send-smsProgrammer un envoi
Ajoutez le paramètre schedule pour que le message parte à une date précise : rappels de rendez-vous, échéances, relances.
schedule | Format MM/JJ/AAAA HH:MM AM|PM (mois en premier, horloge 12 h), à l'heure d'Abidjan (GMT). Exemple : 10/20/2026 09:30 AM pour le 20 octobre 2026 à 9 h 30, 10/20/2026 02:15 PM pour 14 h 15. |
La réponse vaut alors "message": "SMS Scheduled successfully.". Le crédit est réservé dès la programmation. Les envois programmés apparaissent dans l'espace client, où vous pouvez les consulter.
Un format de date différent renvoie le code 109. Attention à l'inversion jour / mois : 05/10/2026 correspond au 10 mai.
/sms/api?action=get-inboxHistorique des SMS
Renvoie les SMS envoyés avec votre clé API, du plus récent au plus ancien, avec leur statut et les éventuelles réponses reçues.
limitrecommandé | Nombre de messages par page, de 1 à 500. Sans limit, tout l'historique est renvoyé, ce qui peut être très long sur un compte actif. |
pagefacultatif | Numéro de page, à partir de 1 (avec limit). |
Champs de chaque message
id | Identifiant du message. |
from / phone | Sender ID utilisé / numéro du destinataire. |
sms | Texte envoyé. |
segments | Nombre de SMS facturés. |
status | Statut renvoyé par l'opérateur (par exemple Success). |
type | plain (texte simple) ou unicode. |
date | Date d'envoi (AAAA-MM-JJ HH:MM:SS). |
inbox | Réponses et événements liés au message. |
/sms/api?action=check-balanceConsulter le solde
Renvoie le crédit SMS disponible. Idéal pour afficher le solde dans votre logiciel ou déclencher une alerte avant qu'il ne soit épuisé.
balance | Montant disponible sur le compte, en currency (XOF). |
sms | Nombre de SMS disponibles : montant ÷ prix d'un SMS (24 XOF vers la Côte d'Ivoire). |
currency | Devise du montant. |
user | Nom du compte. |
country | Pays du compte. |
En cas de succès, cette réponse ne contient pas de champ code. Une clé invalide renvoie le code 102.
/contacts/api?action=subscribe-usAjouter un contact
Inscrit un numéro dans l'une de vos listes de contacts, par exemple depuis le formulaire d'inscription à la newsletter de votre site. La liste doit exister dans votre espace client.
phone_bookobligatoire | Nom exact de la liste de contacts. |
phone_numberobligatoire | Numéro au format international sans « + ». |
first_name, last_name | Prénom et nom (facultatifs). |
email, company, user_name | Informations complémentaires (facultatives). |
Codes spécifiques
ok | « Subscription successfully done » : contact ajouté. |
103 | Numéro invalide. |
104 | Liste introuvable : vérifiez le nom exact. |
105 | Ce numéro est déjà dans la liste. |
Numéros et Sender ID
Format des numéros
Indicatif du pays suivi du numéro complet, sans le « + » ni le « 00 ». Pour la Côte d'Ivoire, l'indicatif 225 est suivi des 10 chiffres du numéro (avec le 0 initial).
2250707070707 | Correct |
+225 07 07 07 07 07 | Accepté : espaces, « + », tirets et parenthèses sont retirés |
0707070707 | Refusé : indicatif pays manquant |
002250707070707 | Refusé : « 00 » en trop |
Sender ID
Le Sender ID est le nom affiché comme expéditeur (11 caractères maximum, sans espace de préférence). Il doit être approuvé pour votre compte par les opérateurs avant utilisation ; sinon l'API renvoie le code 106. Faites votre demande dans l'espace client, menu Demandes de Sender ID : vous suivez la validation opérateur par opérateur.
Encodage et nombre de SMS
Un message long est découpé en plusieurs SMS, réassemblés sur le téléphone. Chaque partie est facturée.
| 1 SMS | Message long, par SMS | |
|---|---|---|
| Texte simple (sans accent) | 160 caractères | 157 caractères |
| Unicode (accents, emojis, arabe…) | 70 caractères | 67 caractères |
Un seul caractère accentué (é, è, à, ç, ô…) ou un emoji fait passer tout le message en Unicode, soit 70 caractères par SMS au lieu de 160. Pour réduire vos coûts, écrivez sans accents lorsque c'est possible : « Votre commande est prete » au lieu de « prête ». Les espaces multiples sont comptés comme un seul.
Codes de réponse
Le champ code de chaque réponse indique le résultat. Le champ message donne une description en anglais, destinée à vos journaux.
| Code | Signification | Que faire |
|---|---|---|
| ok | Succès | La requête a été acceptée (SMS envoyé, programmé ou contact ajouté). |
| 100 | Requête incomplète | Paramètre obligatoire manquant (action, api_key, to, from ou sms). |
| 101 | Action inconnue | La valeur du paramètre action n'existe pas. |
| 102 | Authentification refusée | Clé API invalide, ou accès API non activé sur le compte. |
| 103 | Numéro invalide | Au moins un numéro est invalide ; le message indique combien. Aucun SMS n'est envoyé. |
| 104 | Liste introuvable | La liste de contacts (phone_book) n'existe pas sur le compte. |
| 105 | Solde insuffisant | Crédit SMS insuffisant, ou pays de destination non couvert. Pour contacts/api : contact déjà inscrit. |
| 106 | Sender ID non autorisé | L'expéditeur (from) n'est pas approuvé pour votre compte. |
| 107 | Type de SMS invalide | Le type de message demandé n'est pas pris en charge. |
| 108 | Passerelle indisponible | La passerelle d'envoi associée au compte est inactive. Contactez le support. |
| 109 | Date de programmation invalide | Le paramètre schedule ne respecte pas le format MM/JJ/AAAA HH:MM AM|PM. |
| 111 | Contenu refusé | Le message contient un mot interdit par le filtre anti-spam. |
| 112 | Envoi refusé | Compte inactif, accès API refusé, ou tous les destinataires sont en liste noire. |
| 113 | Trop de destinataires | Plus de 100 numéros dans une même requête. |
Bonnes pratiques
Stockez-la dans une variable d'environnement côté serveur, jamais dans le navigateur ni dans une application mobile.
En cas d'expiration du délai réseau, le SMS a pu partir : consultez l'historique avant de renvoyer pour éviter les doublons.
Un numéro invalide bloque tout le lot. Normalisez au format international dès la saisie dans vos formulaires.
Interrogez check-balance régulièrement et rechargez avant épuisement pour ne jamais bloquer vos envois.
Évitez les accents dans les campagnes et restez sous 160 caractères : un SMS au lieu de trois.
Envoyez entre 8 h et 20 h et proposez un moyen de se désinscrire (STOP) dans les messages promotionnels.
Historique des versions
- Solde en SMS
check-balanceetsend-smsrenvoient le nombre de SMS disponibles (sms) et la devise (currency).balancereste le montant en XOF. - Historique paginé
get-inboxacceptelimitetpageet renvoie la date d'envoi (date). Sans ces paramètres, le comportement est inchangé. - Nouvelle documentation
Exemples en cinq langages, calculateur de SMS et collection Postman.
Besoin d'aide pour votre intégration ?
Notre équipe technique vous accompagne : choix du Sender ID, volumes importants, intégration à votre logiciel.
