API SMS Litel

v1

Envoyez 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

Adressehttps://api.litel.fr/v1/sms
FormatJSON en UTF-8, en entrée comme en sortie
AuthentificationEn-tête Authorization: Bearer lsms_…
Limite60 requêtes par minute et par clé, 1 000 destinataires par envoi
DestinatairesMobiles 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

ChampObligatoireDétail
destinatairesouiListe de numéros, au format national (06 12 34 56 78) ou international (+33612345678). Les doublons sont fusionnés.
texteouiLe message. Voir Texte et nombre de SMS.
referencenonVotre 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_lenonEnvoi 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"}
]
StatutSignification
en_file, envoyeEn route vers le téléphone.
delivreReçu par le téléphone (accusé de l'opérateur).
echecNon 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

Erreurs

Toute erreur rend un JSON {"error": "…", "message": "…"}, le message est en français et peut être affiché tel quel.

CodeCas
401Clé absente, mal formée, inconnue ou révoquée.
402Solde insuffisant (besoin et solde dans la réponse). Rien n'est envoyé.
403Les SMS ne sont pas activés sur ce compte.
404Envoi inconnu ou route inconnue.
422Requête invalide : aucun destinataire valable, texte vide, trop long ou avec des caractères impossibles, date d'envoi différé hors limites.
429Plus de 60 requêtes dans la minute pour cette clé. L'en-tête Retry-After donne le nombre de secondes à attendre.
502, 503La 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

Une question, un besoin particulier (volume, nom d'expéditeur, DROM) : www.litel.fr/support ou 09 85 70 01 20.