Envoyer un SMS instantané
sending_type: "immediate" (le défaut) met le SMS en file pour
expédition immédiate vers l’opérateur. La forme du corps est la même
que vous envoyiez à un numéro ou à mille — seule la taille du tableau
to change.
Un destinataire
Section intitulée « Un destinataire »curl $BASE_URL/api/v1/lisoloo/sms-api/send \ -X POST \ -H "app-key: $LISOLOO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": ["+243998857000"], "message": "Votre OTP est 482194. Valable 5 minutes.", "sender_id": "MYAPP" }'import os, requests
requests.post( "$BASE_URL/api/v1/lisoloo/sms-api/send", headers={"app-key": os.environ["LISOLOO_API_KEY"]}, json={ "to": ["+243998857000"], "message": "Votre OTP est 482194. Valable 5 minutes.", "sender_id": "MYAPP", }, timeout=10,).raise_for_status()await fetch("$BASE_URL/api/v1/lisoloo/sms-api/send", { method: "POST", headers: { "app-key": process.env.LISOLOO_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ to: ["+243998857000"], message: "Votre OTP est 482194. Valable 5 minutes.", sender_id: "MYAPP", }),});Plusieurs destinataires
Section intitulée « Plusieurs destinataires »to est toujours un tableau. Passez jusqu’à 1 000 numéros dans un
seul appel. Chaque numéro est facturé indépendamment contre votre
unit_price.
curl $BASE_URL/api/v1/lisoloo/sms-api/send \ -X POST \ -H "app-key: $LISOLOO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": [ "+243998857000", "+243998857001", "+243998857002" ], "message": "Le cours est annulé aujourd''hui. À la semaine prochaine.", "sender_id": "SCHOOL" }'recipients = [f"+24399885700{i}" for i in range(3)]
requests.post( SEND_URL, headers=HEADERS, json={ "to": recipients, "message": "Le cours est annulé aujourd'hui. À la semaine prochaine.", "sender_id": "SCHOOL", }, timeout=10,)const recipients = ["+243998857000", "+243998857001", "+243998857002"];
await fetch(SEND_URL, { method: "POST", headers: HEADERS, body: JSON.stringify({ to: recipients, message: "Le cours est annulé aujourd'hui. À la semaine prochaine.", sender_id: "SCHOOL", }),});La réponse inclut total_recipients et total_messages :
{ "status_code": 201, "success": true, "data": { "message_id": "507f1f77bcf86cd799439011", "total_recipients": 3, "total_messages": 3, "total_cost": 0.06, "currency": "USD", "status": "pending" }}Au-delà de 1 000 destinataires
Section intitulée « Au-delà de 1 000 destinataires »Pour les campagnes plus grandes, divisez en lots ≤ 1 000, espacés
d’au moins 1 seconde pour rester sous la limite de 60/min sur
POST /send. Un envoi chunké simple :
def chunks(seq, size): for i in range(0, len(seq), size): yield seq[i:i + size]
for batch in chunks(all_recipients, 1000): requests.post(SEND_URL, headers=HEADERS, json={ "to": batch, "message": MESSAGE, "sender_id": SENDER, }).raise_for_status() time.sleep(1.1)Chaque lot renvoie son propre message_id. Suivez-les tous si vous
avez besoin de reporting transverse aux lots.
URL de callback par requête
Section intitulée « URL de callback par requête »Si vous voulez que les accusés de livraison de ce lot spécifique aillent
vers un endpoint différent du webhook général, définissez
callback_url sur la requête :
{ "to": ["+243998857000"], "message": "Votre livraison est en route.", "sender_id": "SHOP", "callback_url": "https://my-shop.example.com/lisoloo/webhook"}Le callback_url est par-message ; il ne remplace pas le webhook
général (les deux se déclenchent si les deux sont définis). Voir
Présentation des webhooks.
Sender ID
Section intitulée « Sender ID »sender_id est la chaîne alphanumérique d’origine que l’opérateur
affiche sur le combiné du destinataire. Contraintes :
- 3–11 caractères (imposé par l’opérateur ; les valeurs plus longues sont tronquées par le réseau).
- A–Z, 0–9. Pas d’espaces, pas de ponctuation.
- Pré-enregistré avec votre compte Bloonio. Les IDs non enregistrés peuvent être réécrits par l’opérateur vers un code court générique.
Si omis, la passerelle utilise votre défaut marchand (défini dans le tableau de bord).
Voir aussi
Section intitulée « Voir aussi »- Planifier un SMS — même forme +
scheduled_dates - SMS récurrents — même forme +
recurring_schedule - Limites de débit — patterns de cadencement
- Limites de caractères — comptage de segments