← Documentation

DIAGNOSTICS

Une erreur.
Une piste concrète.

L’enveloppe utilise un code OAuth dans error et un diagnostic précis dans error_code. Le request_id correspond à une ligne du journal.

invalid_request

La requête est incomplète ou invalide.

QUE FAIREVérifiez state (16 caractères minimum), les paramètres et le format JSON.

invalid_client

Le client est inconnu, désactivé ou ses identifiants sont invalides.

QUE FAIREVérifiez le client_id, son état actif et le secret côté serveur.

invalid_grant

Le code ne correspond pas à cette requête.

QUE FAIRERelancez le parcours depuis l’application. Le code doit appartenir au même client.

access_denied

Authentification refusée.

QUE FAIRERecommencez vous-même la connexion. En sandbox, le numéro 22300000099 simule ce refus.

expired_code

Le code a expiré. Les codes sont valables 60 secondes.

QUE FAIREÉchangez le code côté serveur dès le retour du navigateur.

already_used

Ce code a déjà été utilisé.

QUE FAIREN’échangez le code qu’une seule fois. Évitez les doubles appels du callback.

invalid_verifier

Le vérificateur PKCE ne correspond pas au challenge.

QUE FAIREUtilisez le code_verifier conservé au démarrage, sans le modifier.

redirect_uri_mismatch

Cette URL de retour ne correspond pas à celle autorisée.

QUE FAIREUtilisez exactement la même URL autorisée au démarrage et à l’échange.

key_not_activated

La clé doit être activée depuis votre navigateur.

QUE FAIREAppelez activate depuis le clic avant d’envoyer le message.

key_expired

La clé a expiré. Recommencez la connexion.

QUE FAIRERecommencez la connexion. Après ouverture de WhatsApp, le message doit partir dans les 90 secondes.

rate_limited

Trop de tentatives. Réessayez dans une minute.

QUE FAIREAttendez le délai Retry-After avant de recommencer.

session_mismatch

Reprenez la connexion dans le navigateur d’origine.

QUE FAIREConservez le cookie et le navigateur d’origine. Ne transférez pas le lien.

invalid_signature

La signature du message est invalide.

QUE FAIRECôté SMSV, signez les octets JSON envoyés avec le secret partagé.

stale_message

Le message est trop ancien.

QUE FAIRESynchronisez les horloges. timestamp est un Unix timestamp en millisecondes.

service_unavailable

Le service est temporairement indisponible.

QUE FAIREVérifiez /healthz, PostgreSQL, Redis et les clés de signature.

otp_unavailable

La réception d’un code n’est pas disponible pour cette connexion.

QUE FAIRELe mode code est désactivé pour ce client, ou NOTIF_API_KEY / OTP_HASH_SECRET manquent côté service. Utilisez le mode message.

otp_send_failed

Le code n’a pas pu être envoyé. Réessayez dans un instant.

QUE FAIREL’API Notif a refusé l’envoi. Vérifiez la clé API et le journal du service, puis réessayez.

otp_too_soon

Un code vient d’être envoyé. Patientez avant d’en demander un autre.

QUE FAIREUn renvoi est possible 60 secondes après l’envoi précédent, trois envois au plus par connexion.

otp_invalid

Le code saisi est incorrect.

QUE FAIRESaisissez les six chiffres reçus sur WhatsApp. Cinq erreurs invalident la connexion.

otp_expired

Le code a expiré. Demandez un nouveau code.

QUE FAIRELe code est valable cinq minutes. Demandez un nouveau code depuis la page d’attente.

invalid_phone

Le numéro de téléphone est invalide.

QUE FAIREEnvoyez phone_e164 en chiffres, avec ou sans +. Huit chiffres sont lus comme un numéro malien (+223). En sandbox, seuls 22300000001 à 22300000009 sont acceptés.

challenge_not_found

Cette demande de code est introuvable ou déjà utilisée.

QUE FAIREUtilisez le challenge_id renvoyé par /server/otp/send, avec le même client. Un challenge sert une seule fois : après un succès, demandez un nouveau code.

invalid_branding

Personnalisation refusée : nom de 2 à 40 caractères, logo en URL https terminée par .png, .svg, .jpg ou .webp, couleur d’accent #rrggbb assez sombre pour un texte blanc (contraste 4,5:1 minimum).

QUE FAIREDepuis le dashboard, section Apparence : raccourcissez le nom, servez le logo en https avec une extension d’image, ou assombrissez la couleur d’accent jusqu’à un contraste de 4,5:1 avec du blanc (#15803d convient).