POST
/
verify
/
otp
Vérifier un OTP
curl --request POST \
  --url https://api.example.com/verify/otp \
  --header 'Content-Type: application/json' \
  --data '
{
  "otp": "<string>",
  "number": "<string>",
  "service": "<string>"
}
'
{
  "statusCode": 400,
  "message": "Code de vérification invalide",
  "error": "Bad Request"
}

Description

Cet endpoint permet de vérifier si le code OTP saisi par l’utilisateur correspond au code envoyé précédemment via POST /send/otp.

Paramètres de la requête

otp
string
required
Le code OTP à 4 chiffres saisi par l’utilisateur.Exemple : "1234"
number
string
required
Le numéro de téléphone auquel l’OTP a été envoyé (au format international sans le +).Exemple : "221771234567"
service
string
required
Le nom du service pour lequel l’OTP a été demandé. Doit correspondre au service utilisé lors de l’envoi.Exemple : "MonApplication"

Exemple de requête

curl -X POST https://api-v2.dexchange-sms.com/api/v1/verify/otp \
  -H "Authorization: Bearer VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "otp": "1234",
    "number": "221771234567",
    "service": "MonApplication"
  }'

Réponse

success
boolean
true si le code est valide, false sinon
message
string
Message décrivant le résultat de la vérification

Exemple de réponse réussie

{
  "success": true,
  "message": "Code de vérification vérifié avec succès"
}

Erreurs possibles

{
  "statusCode": 400,
  "message": "Code de vérification invalide",
  "error": "Bad Request"
}

Exemple d’intégration complète

Voici un exemple complet d’un flux de vérification de numéro :
JavaScript
// 1. Envoyer l'OTP
async function sendOTP(phoneNumber) {
  const response = await fetch('https://api-v2.dexchange-sms.com/api/v1/send/otp', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer VOTRE_CLE_API',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      service: 'MonApplication',
      number: phoneNumber,
      channel: 'sms'
    })
  });
  
  return response.json();
}

// 2. Vérifier l'OTP saisi par l'utilisateur
async function verifyOTP(phoneNumber, userCode) {
  const response = await fetch('https://api-v2.dexchange-sms.com/api/v1/verify/otp', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer VOTRE_CLE_API',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      otp: userCode,
      number: phoneNumber,
      service: 'MonApplication'
    })
  });
  
  const data = await response.json();
  return data.success;
}

// Utilisation
const phone = '221771234567';

// Étape 1: Envoyer le code
await sendOTP(phone);
console.log('Code envoyé !');

// Étape 2: L'utilisateur saisit le code (ex: via un formulaire)
const userInput = '1234'; // Code saisi par l'utilisateur

// Étape 3: Vérifier le code
const isValid = await verifyOTP(phone, userInput);

if (isValid) {
  console.log('✓ Numéro vérifié ! Continuer le processus...');
} else {
  console.log('✗ Code invalide. Veuillez réessayer.');
}

Bonnes pratiques

Limitation des tentatives : Limitez le nombre de tentatives de vérification (ex: 3 tentatives) pour éviter les attaques par force brute.
Ne pas réutiliser un code : Une fois vérifié, le code ne peut plus être utilisé. Demandez un nouveau code si nécessaire.
Correspondance exacte : Le service et le number doivent correspondre exactement à ceux utilisés lors de l’envoi de l’OTP.