Envoi d'OTP
Cette API génère des codes de vérification via la plateforme EngageLab et les distribue selon la stratégie de canal spécifiée dans le modèle.
Si vous souhaitez générer vous-même les codes de vérification au lieu d'utiliser la plateforme EngageLab, vous pouvez appeler l'API EngageLab OTP Custom Verification Code Delivery.
Point de terminaison
POST https://otp.api.engagelab.cc/v1/messages
Authentification
Utilisez l'authentification HTTP Basic et ajoutez Authorization à l'en-tête HTTP :
Authorization: Basic ${base64_auth_string}
L'algorithme de génération de base64_auth_string est le suivant : base64(dev_key:dev_secret)
Exemple de requête
En-tête de requête
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Corps de requête
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Paramètres de requête
Un objet de requête est exprimé au format JSON ; l'en-tête de requête doit donc inclure Content-Type: application/json.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | Destinataire cible : numéro de téléphone ou adresse e-mail, par exemple +6598765432 ou support@engagelab.com |
| template | JSON Object | Required | Informations du modèle. Voir les paramètres imbriqués ci-dessous. |
| |_ id | String | Required | ID du modèle |
| |_ language | String | Optional | Langue du modèle. Les langues suivantes sont prises en charge : default : langue par défaut zh_CN : chinois simplifié zh_HK : chinois traditionnel en : anglais ja : japonais th : thaï es : espagnol Si elle n'est pas fournie, la valeur par défaut est default (la langue par défaut). |
| |_ params | JSON Object | Optional | Valeurs des clés des variables personnalisées du modèle. Si vous avez défini des variables personnalisées lors de la création du modèle, attribuez-leur des valeurs ici. Si ce champ n'est pas fourni, la clé de variable sera transmise telle quelle, par exemple {{var}}. |
Remarques sur params
- Pour les champs prédéfinis dans le modèle, tels que
from_id, si la valeur du champparam_varsn'est pas fournie, lefrom_idprédéfini du modèle sera utilisé lors de l'envoi du message. - Si la valeur du champ
param_varsest fournie, par exempleparam_vars:{"from_id":"12345"}, alors lefrom_iddu modèle sera remplacé par12345lors de l'envoi du message. - Par ailleurs, les champs de variables personnalisées dans le contenu du modèle créé lors de sa création sont également affectés via
param_vars. Par exemple, si le contenu du modèle estHi {{name}}, your verify code is {{code}}, alors le paramètre d'affectationparam_vars:{"name":"Bob"}est requis.
Paramètres de réponse
Réponse réussie
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | Required | ID du message, qui identifie de manière unique un message |
| send_channel | String | Required | Indique le canal de distribution actuel. Les valeurs possibles sont whatsapp, sms, email ou voice. |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Notez que la valeur send_channel renvoyée ne représente pas le canal final utilisé pour transmettre le message à l'utilisateur. Elle indique uniquement le canal actuellement utilisé. Par exemple, si la stratégie du modèle est configurée de sorte que l'envoi via le canal WhatsApp échoue puis soit automatiquement retenté via le canal SMS, la réponse de l'API renverra la valeur whatsapp. Après un certain temps, une fois l'échec de distribution détecté, le système enverra le message via le canal SMS.
Réponse d'échec
Le code de statut HTTP est 4xx ou 5xx, et le corps de la réponse contient les champs suivants :
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | Required | Code d'erreur. Pour plus de détails, voir Codes d'erreur |
| message | String | Required | Détails de l'erreur |
{
"code": 5001,
"message": "sms send fail"
}
Codes d'erreur
| Error Code | HTTP Code | Description |
|---|---|---|
| 1000 | 500 | Erreur interne |
| 2001 | 401 | Échec de l'authentification ; le jeton correct n'a pas été fourni |
| 2002 | 401 | Échec de l'authentification ; le jeton a expiré ou a été désactivé |
| 2004 | 403 | Aucune autorisation pour appeler cette API |
| 3001 | 400 | Format de paramètre de requête invalide. Veuillez vérifier si le contenu JSON correspond au format de paramètre requis |
| 3002 | 400 | Paramètres de requête invalides. Veuillez vérifier si les paramètres de requête respectent les exigences |
| 3003 | 400 | Paramètres de requête invalides. La validation métier associée a échoué. Reportez-vous à la description de l'erreur dans le champ message pour plus de détails |
| 3004 | 400 | Limite de fréquence dépassée. Pour le même modèle et le même utilisateur cible, l'envoi ne peut pas être effectué à nouveau pendant la période de validité du code de vérification |
| 4001 | 400 | La ressource associée n'existe pas. Par exemple, un modèle inexistant est utilisé lors de l'envoi d'un message modèle |
| 5001 | 400 | Échec de l'envoi (général/autre) |
| 5011 | 400 | Format du numéro de téléphone invalide |
| 5012 | 400 | Cible inaccessible |
| 5013 | 400 | Le numéro a été ajouté à la liste noire |
| 5014 | 400 | Le contenu n'est pas conforme aux spécifications |
| 5015 | 400 | Message intercepté/rejeté |
| 5016 | 400 | Erreur interne d'envoi |
| 5017 | 400 | Aucune autorisation pour envoyer vers la Chine continentale |
| 5018 | 400 | Problème lié au téléphone (éteint/service suspendu) |
| 5019 | 400 | L'utilisateur s'est désabonné |
| 5020 | 400 | Numéro non enregistré/numéro invalide |










