QuavernQuavsit

Section 09 sur 12

Erreurs

Chaque erreur est {"error": {"code", "reason", "message", "details"?}} avec le vrai statut HTTP. reason est le slug stable sur lequel brancher votre code ; code (de la forme QVST1-3404) est la référence à citer au support ; message est un texte en anglais pour les humains, susceptible de changer. Les erreurs ne coûtent aucune unité ; seules les réponses 429 et 402 sont comptées dans les chiffres d'erreurs par clé de la page de compte.

Erreurs Quavsit#

StatutreasoncodeQuand
400invalid_locationQVST1-1400near, bbox ou radius mal formé
400transit_query_invalidQVST1-2400valeur ou combinaison de paramètres invalide ; details.reason = "cross_network" sur les itinéraires
404place_not_foundQVST1-4404from ou to n'a pas pu être résolu
404network_not_foundQVST1-1404slug de réseau inconnu
404line_not_foundQVST1-2404identifiant de ligne inconnu
404stop_not_foundQVST1-3404identifiant d'arrêt ou de zone inconnu
404capability_unsupportedQVST1-5404le réseau n'a pas cette donnée (véhicules, calculateur natif)
409key_limit_reachedQVST1-1409nombre maximal de clés du plan atteint (API de compte)
429stream_limit_reachedQVST1-1429trop de streams simultanés
429spend_cap_reachedQVST1-2429plafond de dépense mensuel atteint en dépassement ; details {spend_cap_cents, spent_cents, period}
502transit_upstream_errorQVST9-1502le flux opérateur a échoué et aucune copie en cache n'est utilisable
503transit_upstream_budgetQVST9-3503quota quotidien amont épuisé et aucune copie en cache
503network_data_unavailableQVST9-4503données théoriques pas encore importées pour ce réseau
503quavsit_unconfiguredQVST2-1503configuration manquante de notre côté
504transit_upstream_timeoutQVST9-2504le flux opérateur n'a pas répondu à temps

place_not_found est un 404 : l'endroit demandé n'a pas pu être résolu ; c'est reason qui sert au branchement.

Erreurs de la plateforme#

La couche d'identité et de comptage répond avec ses propres préfixes ; voici celles qu'un client de l'API rencontre.

StatutreasoncodeQuand
401authentication_requiredSCTY3-1401pas de clé Bearer
401invalid_tokenSCTY3-2401token inconnu, révoqué ou qui n'est pas une clé d'API
402plan_requiredMARL1-1402streams sur un plan qui ne les inclut pas, ou dépassement sur un plan sans dépassement
403insufficient_scopeSCTY3-2403mauvaise audience ou mauvais scope, ou clé non personnelle
403email_verification_requiredMAIL3-1403e-mail du compte non vérifié
404not_foundAPIE1-0404route inconnue
429rate_limitedAPIE1-0429limite par minute dépassée ; réessayez après l'en-tête Retry-After
429quota_exhaustedAPIE1-1429unités mensuelles épuisées ; details {plan, period, limit, used, remaining, resets_at, overage_available, upgrade_url}
500internal_errorAPIE2-1500défaillance inattendue de notre côté

Conseils de traitement#

  • Branchez sur reason, jamais sur message.
  • Sur rate_limited, attendez le nombre de secondes de Retry-After ; sur quota_exhausted, lisez details.resets_at et, si details.overage_available est vrai, envisagez d'activer le dépassement sur la page de compte.
  • Sur transit_upstream_*, réessayez une fois après quelques secondes ; la réponse peut revenir stale (voir la fraîcheur) plutôt qu'échouer.
  • Conservez le code dans vos journaux ; c'est ce que le support demande.
json
{"error": {"code": "APIE1-1429", "reason": "quota_exhausted", "message": "Monthly units exhausted.",
  "details": {"plan": "free", "period": "2026-09", "limit": 5000, "used": 5000, "remaining": 0,
    "resets_at": "2026-10-01T00:00:00Z", "overage_available": false, "upgrade_url": "https://my.quavern.com/account/quavsit"}}}