API SMS Litel
v1Envoyez des SMS depuis vos propres logiciels (prise de rendez-vous, CRM, site, logiciel métier) avec les crédits SMS de votre compte Litel. Mêmes crédits, mêmes règles et même historique que la page SMS de votre espace client.
En bref
| Adresse | https://api.litel.fr/v1/sms |
|---|---|
| Format | JSON en UTF-8, en entrée comme en sortie |
| Authentification | En-tête Authorization: Bearer lsms_… |
| Limite | 60 requêtes par minute et par clé, 1 000 destinataires par envoi |
| Destinataires | Mobiles de France métropolitaine (06 et 07) |
Obtenir une clé
Dans votre espace client, page SMS, section API : donnez un nom à la clé (par exemple le logiciel qui l'utilisera), puis Créer une clé. La clé ne s'affiche qu'une fois : copiez-la tout de suite. Nous n'en gardons qu'une empreinte et ne pouvons pas vous la redonner.
Vous pouvez avoir jusqu'à 10 clés actives, une par logiciel de préférence, et révoquer une clé à tout moment depuis la même page. Une clé permet de dépenser vos crédits : gardez-la comme un mot de passe, côté serveur, jamais dans une page web ou une application mobile.
Envoyer des SMS
POST /v1/sms/envois
| Champ | Obligatoire | Détail |
|---|---|---|
destinataires | oui | Liste de numéros, au format national (06 12 34 56 78) ou international (+33612345678). Les doublons sont fusionnés. |
texte | oui | Le message. Voir Texte et nombre de SMS. |
reference | non | Votre identifiant (80 caractères au plus), unique par envoi. Si vous renvoyez la même requête avec la même référence (délai dépassé, nouvel essai), nous rendons l'envoi déjà fait, sans rien envoyer ni débiter une seconde fois. Fortement conseillé. |
programme_le | non | Envoi différé, date ISO 8601 dans les 12 mois (2026-10-06T08:30:00+02:00). |
curl https://api.litel.fr/v1/sms/envois \
-H "Authorization: Bearer $LITEL_SMS_CLE" \
-H "Content-Type: application/json" \
-d '{"destinataires": ["0612345678"], "texte": "Votre rendez-vous de demain 10 h est confirmé.", "reference": "rdv-4812"}'
Réponse 201 :
{
"id": "39d94618-e4bb-4a56-8042-5e35b43016f2",
"reference": "rdv-4812",
"statut": "accepte",
"texte": "Votre rendez-vous de demain 10 h est confirmé.",
"sms_par_message": 1,
"nb_destinataires": 1,
"credits_debites": 1,
"credits_rembourses": 0,
"delivres": 0, "echecs": 0, "en_cours": 1,
"refus": [],
"solde": 486,
"simulation": false,
"cree_le": "2026-10-05 14:02:11+00"
}
refus liste les numéros écartés et pourquoi (pas un mobile de métropole, a demandé STOP). Ils ne sont pas débités. simulation: true signale un compte en mode essai : rien n'est réellement parti.
Python
import os, requests
r = requests.post("https://api.litel.fr/v1/sms/envois", timeout=30,
headers={"Authorization": "Bearer " + os.environ["LITEL_SMS_CLE"]},
json={"destinataires": ["0612345678"], "texte": "Votre commande est prête.", "reference": "cmd-1042"})
r.raise_for_status()
print(r.json()["id"], r.json()["solde"])
PHP
$ch = curl_init('https://api.litel.fr/v1/sms/envois');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('LITEL_SMS_CLE'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['destinataires' => ['0612345678'], 'texte' => 'Votre commande est prête.',
'reference' => 'cmd-1042']),
]);
$reponse = json_decode(curl_exec($ch), true);
Suivre un envoi
GET /v1/sms/envois/{id} rend l'envoi et le statut de chaque SMS :
"messages": [
{"destinataire": "+33612345678", "statut": "delivre", "code": "2000", "maj": "2026-10-05 14:02:19+00"}
]
| Statut | Signification |
|---|---|
en_file, envoye | En route vers le téléphone. |
delivre | Reçu par le téléphone (accusé de l'opérateur). |
echec | Non remis (numéro invalide, téléphone injoignable trop longtemps…). Le crédit est rendu. |
GET /v1/sms/envois?limit=20 rend vos derniers envois (100 au plus), du plus récent au plus ancien.
Solde
GET /v1/sms/solde
{"solde": 486, "prochaine_expiration": "2027-10-04 11:14:45+00",
"lots": [{"restant": 486, "expire_le": "2027-10-04 11:14:45+00"}]}
Les crédits sont valables 12 mois après leur achat. Les plus anciens sont consommés en premier.
Texte et nombre de SMS
- Les SMS partent en alphabet GSM. Les accents courants (é, è, à, ù, ç) passent. Les autres sont adaptés : â devient a, ê devient e, les guillemets « » deviennent ", l'apostrophe typographique ’ devient '. Les emojis sont refusés (erreur 422 avec la liste des caractères).
- La mention STOP est ajoutée automatiquement. Un SMS seul contient donc jusqu'à 147 caractères. Au-delà, le message est découpé en plusieurs SMS de 153 caractères, chacun débité.
€ { } [ ] ~ | ^ \comptent pour deux caractères.- Un message ne peut pas dépasser 6 SMS.
- Le champ
sms_par_messagede la réponse donne le nombre de SMS débités par destinataire.
Erreurs
Toute erreur rend un JSON {"error": "…", "message": "…"}, le message est en français et peut être affiché tel quel.
| Code | Cas |
|---|---|
401 | Clé absente, mal formée, inconnue ou révoquée. |
402 | Solde insuffisant (besoin et solde dans la réponse). Rien n'est envoyé. |
403 | Les SMS ne sont pas activés sur ce compte. |
404 | Envoi inconnu ou route inconnue. |
422 | Requête invalide : aucun destinataire valable, texte vide, trop long ou avec des caractères impossibles, date d'envoi différé hors limites. |
429 | Plus de 60 requêtes dans la minute pour cette clé. L'en-tête Retry-After donne le nombre de secondes à attendre. |
502, 503 | La plateforme d'envoi a refusé ou est saturée. Rien n'est débité, vous pouvez réessayer (avec la même reference). |
Bonnes pratiques et règles
- SMS commerciaux : envoyez-les seulement aux personnes qui l'ont accepté, et ni le soir, ni la nuit, ni le dimanche, ni les jours fériés. Vous restez responsable du contenu et du consentement de vos destinataires.
- Un numéro qui a répondu STOP ne reçoit plus rien. Il apparaît dans
refus. - Envoyez plusieurs destinataires dans une seule requête plutôt qu'une requête par numéro.
- Utilisez toujours une
reference: c'est elle qui vous protège d'un double envoi quand une requête est rejouée.
Une question, un besoin particulier (volume, nom d'expéditeur, DROM) : www.litel.fr/support ou 09 85 70 01 20.