Whatixo.Documentation English Ouvrir Whatixo
Documentation / API Whatixo

Erreurs et limites

Codes HTTP

CodeNomQue faire ?
200 201Succès—
400Requête invalideCorrigez les paramètres d’après le message error. Ne réessayez pas à l’identique.
401Non authentifiéClé absente, mal copiée ou régénérée. Vérifiez l’en-tête x-api-key.
402Limite de forfait / abonnementVoir les codes ci-dessous. Changez de forfait ou attendez le mois suivant.
403Action impossibleNuméro non connecté, accès révoqué. Lisez le message.
404IntrouvabledeviceId, contact ou webhook inexistant (ou appartenant à un autre compte).
429Trop de requêtesRalentissez ; réessayez après le délai indiqué par l’en-tête RateLimit-Reset / Retry-After.
500Erreur serveur / WhatsAppRéessayez plus tard avec un délai croissant.
501Non disponiblePoint d’accès réservé pour une version future (listes d’audience, campagnes).
502Refus de WhatsAppLe destinataire n’a pas WhatsApp ou a bloqué votre numéro. Ne réessayez pas en boucle.

Codes d’erreur métier

Certaines erreurs 402 contiennent un champ code à tester dans votre code :

CodeSignification
PLAN_LIMITLimite du forfait atteinte. Le champ feature précise laquelle (crm, workflows…).
API_ACCOUNT_SUSPENDEDAbonnement expiré ou suspendu : l’accès API est bloqué.
ACCOUNT_SUSPENDED (dans error)Même cause, renvoyé par certaines opérations d’envoi.
ExempleJSON
{
  "error": "Limite de 2000 contacts atteinte pour votre forfait.",
  "code": "PLAN_LIMIT",
  "feature": "crm"
}

Limites de débit

PérimètreLimite
Envoi de messages (/whatsapp/messages/send, /whatsapp/send)200 requêtes / minute
Webhooks entrants (/webhook/…)120 requêtes / minute
Toutes les autres routes de l’API1 000 requêtes / 15 minutes

Les limites sont comptées par adresse IP. Chaque réponse contient l’en-tête standard RateLimit (requêtes restantes et délai de réinitialisation).

Limite technique ≠ rythme conseillé

200 messages par minute est un plafond de sécurité de l’API, pas un rythme recommandé. WhatsApp peut bloquer un numéro qui envoie trop vite à des personnes qui ne l’attendent pas. Pour des messages transactionnels (confirmation, rappel), aucun souci. Pour du marketing, espacez fortement vos envois ou utilisez les campagnes.

Quotas du forfait

Les messages envoyés par l’API comptent dans le quota mensuel de messages ; les contacts créés comptent dans la limite de contacts. Suivez votre consommation dans le tableau de bord. Vous êtes prévenu par e-mail et WhatsApp à 80 % et 100 %.

Relancer intelligemment

Relance avec délai exponentielJS
async function sendWithRetry(body, tries = 4) {
  for (let i = 0; i < tries; i++) {
    const res = await fetch('https://api.whatixo.com/api/whatsapp/messages/send', {
      method: 'POST',
      headers: { 'x-api-key': process.env.WHATIXO_API_KEY, 'Content-Type': 'application/json' },
      body: JSON.stringify(body),
    });
    if (res.ok) return res.json();
    // Ne pas relancer les erreurs « définitives »
    if ([400, 401, 402, 403, 404, 502].includes(res.status)) throw new Error((await res.json()).error);
    await new Promise((r) => setTimeout(r, 2 ** i * 2000)); // 2 s, 4 s, 8 s, 16 s
  }
  throw new Error('Échec après plusieurs tentatives');
}