Guide de l'API RESTful SMSBAT
Guide complet de l'API SMSBAT RESTful – tout ce que vous devez savoir.
Dernière mise à jour : 29 août 2025
L'API SMSBAT RESTful vous permet d'envoyer différents types de messages : Viber-carrousel, Viber-survey, Viber-promo (images, vidéo), discussions professionnelles Viber, messages OTP (Viber OTP, Flash Call) et leurs variantes de secours.
Remarque : Il s'agit de l'API HTTP unifiée pour la messagerie sortante. Si vous avez besoin d'intégrations avec des robots entrants (Viber Bot / Telegram Bot), veuillez vous référer à l'API Cascade.
1. Protocole
- Protocole : HTTPS
- Request Body : objet JSON contenant un tableau de « messages ».
- Méthodes :
GETpour récupérer des données (état du message, solde, etc.)POSTpour créer des objets (par exemple, lancer une diffusion/envoi)PATCHpour modifier les objets
2. Autorisation
Nous proposons plusieurs méthodes d'autorisation pour votre commodité :
- Authentification HTTP Basic (identifiant et mot de passe depuis votre tableau de bord).
- En-tête HTTP personnalisé X-Authorization-Key contenant un jeton API.
- Champ de mot de passe d'authentification de base HTTP contenant le jeton API (passez @ comme identifiant).
Le Jeton API peut être généré dans le tableau de bord sous Profil utilisateur.
Exemples de requêtes
Avec authentification de base :
curl -H "Content-Type: application/json" \
-X POST -d @/path/to/data.json https://api.smsbat.com/bat/messagelist \
--user user:password
Avec X-Authorization-Key :
curl -H "X-Authorization-Key: <token>" \
-H "Content-Type: application/json" \
-X POST -d @/path/to/data.json https://api.smsbat.com/bat/messagelist
3. Envoi de messages
Dans la plateforme SMSBAT, tout envoi de message (même un seul message) est considéré comme un « Broadcast » (liste de messages).
Point de terminaison
- Méthode : POST
- URL : https://api.smsbat.com/bat/messagelist
- En-têtes : Content-Type : application/json
Structure de base de la charge utile :
{
"messages": [
{
"from": "ALPHANAME",
"to": "380936670003",
"text": "Check out our new products!",
"type": "viber_carousel",
"ttl": 300,
"messageData": { ... }
}
]
}
Champs obligatoires pour chaque objet de message :
from: nom alpha de l'expéditeur vérifié.à: Numéro de téléphone du destinataire (format E.164).type: énumération du type de message.text: Texte principal du message (facultatif si le type ne nécessite pas de texte).
Valeurs type prises en charge :
- sms
- viber_service (ou viber_trans)
- viber_promo
- viber_carrousel
- viber_survey
- viber_otp
- viber_session
- flashcall_callback
- appel flash
Champs communs facultatifs :
customerMessageId: ID de chaîne dans votre propre système (utilisé pour le suivi des rappels). Doit être unique par message.dtSend: Date/heure ISO8601 de l'expédition future programmée.dtExpire: Date/Heure ISO8601 du délai de livraison.ttl: Durée de vie en secondes. (SidtExpiren'est pas fourni, l'API calcule le mappage des valeurs par défaut à partir dutype).
TTL par défaut (secondes) :
sms- 86400 (24h)viber_trans/viber_service- 345600viber_promo- 604800viber_session- 604800
4. Routage de secours (en cascade)
Vous pouvez spécifier une file d'attente de secours pour garantir la remise des messages en cas d'échec ou d'expiration du canal principal.
{
"messages": [
{
"from": "ALPHANAME",
"to": "380500505051",
"text": "test message",
"type": "viber_service",
"ttl": 60,
"fallbacks": [
{
"from": "ALPHANAME",
"to": "380936670003",
"text": "test sms fallback message2",
"type": "sms"
}
]
}
]
}
5. Présentation des types de messages et des données de message
Les types de messages complexes nécessitent des configurations supplémentaires injectées dans la propriété messageData.
5.1 Promotion Viber (viber_promo)
Image uniquement
Texte + Bouton
Image + Texte + Bouton
Combine img, buttonText et buttonAction.
Charge utile vidéo :
"messageData":{
"video": "https://domain.com/test.mp4",
"thumbnail": "https://domain.com/carusel.png",
"fileSize": 12000000,
"duration": 30
}
buttonText et buttonAction).
5.2 Viber Transactionnel/Service (viber_trans, viber_service)
Si vous disposez d'un modèle approuvé contenant un fichier joint :
"messageData": {
"fileUrl": "https://domain.com/receipt.pdf",
"fileName": "Receipt.pdf",
"fileType": "pdf"
}
5.3 Carrousel Viber (viber_carousel)
Nécessite un tableau carousel.items dans messageData.
Limites :
- Longueur des articles : entre 2 et 5 articles
- Titre : 2 à 38 caractères
- imageUrl : taille recommandée JPEG/PNG 215x185
"messageData": {
"carousel": {
"items": [
{
"title": "50% Off Shoes!",
"imageUrl": "https://domain.com/image1.png",
"primaryButton": { "label": "Shop", "actionUrl": "..." },
"secondaryButton": { "label": "Details", "actionUrl": "..." }
}
]
}
}
5.4 Enquête/Liste Viber (viber_survey)
Crée un sondage interactif dans la vue de discussion.
La propriété « text » du message fait office de titre de l'enquête (85 caractères maximum). Vous pouvez transmettre entre 2 et 5 options, chacune contenant au maximum 50 caractères.5.5 Viber OTP (viber_otp)
Utilise des modèles Viber localisés préenregistrés à l’échelle mondiale.
"messageData": {
"templateId": "6c929cef-29b4-4349-bc9d-2a07bdbb6e43",
"templateLang": "uk",
"templateParams": {
"pin": "3211",
"business_platform_name": "SMSBAT",
"code_validity_time": 7
}
}
pin, business_platform_name) sont strictement sensibles à la casse. L'API prend en charge diverses variantes de langage de code ISO (EN, ES, RU, TR, UK, etc.).
5.6 Appel Flash (« flashcall »)
Les derniers chiffres du numéro à composer (le code généré) doivent être transmis via le paramètre text.
Si « texte » est omis, le code est randomisé et vous devez l'extraire du corps de réponse synchrone 200 OK de l'API (« messages/texte »).