Aller au contenu
Floweet
Accès pro

Erreurs et codes d'erreur

Une seule forme d'erreur { error: { code, message, details } }, la table de tous les codes avec leur statut HTTP, et quand réessayer une requête.

api.floweet.com/v1 · Contrat 1.0.0-beta.1 · Bêta

Sections · Erreurs

Toute erreur renvoie un statut 4xx ou 5xx et le même corps JSON, quelle que soit l'opération : un code stable, à tester dans votre code ; un message pour un humain, dans la langue d'Accept-Language (en, fr, es, it, de, pt), qui peut évoluer ; parfois des details.

Corps d'une erreur
{
  "error": {
    "code": "string",
    "message": "string",
    "details": "(facultatif)"
  }
}

Exemple : requête invalide

Réponse 400
{
  "error": {
    "code": "validation_error",
    "message": "Certains champs sont invalides. Merci de vérifier votre saisie.",
    "details": {
      "target": "query",
      "issues": [
        {
          "path": "department",
          "message": "Invalid string: must match pattern /^(\\d{2}|2[AB])$/i"
        }
      ]
    }
  }
}

details.target dit où se trouve le problème (json pour le corps, query, param pour le chemin) ; details.issues liste chaque problème, avec path (le champ) et message (en anglais).

Les 23 codes

HTTPCodeSignificationQue faire
400validation_errorCertains champs sont invalides. Merci de vérifier votre saisie.Corriger la requête ; ne pas réessayer à l'identique
400bad_requestVotre demande est incomplète ou mal formée.Corriger la requête ; ne pas réessayer à l'identique
400invalid_cursorCe curseur de pagination est invalide. Reprenez la liste depuis le début, sans « cursor ».Reprendre la liste à la première page
401invalid_api_keyClé d'API absente ou invalide. Ajoutez l'en-tête « Authorization: Bearer fw_live_… ».Corriger la requête ; ne pas réessayer à l'identique
401api_key_revokedCette clé d'API a été révoquée. Demandez une nouvelle clé à contact@floweet.com.Nous écrire (clé, scopes, compte d'API)
403insufficient_scopeCette clé d'API n'a pas le scope nécessaire à cette route.Nous écrire (clé, scopes, compte d'API)
403live_not_enabledLa production n'est pas encore ouverte pour ce compte : utilisez une clé fw_test_ ou demandez l'ouverture à contact@floweet.com.Nous écrire (clé, scopes, compte d'API)
403account_suspendedL'accès à l'API est suspendu pour ce compte. Écrivez à contact@floweet.com.Nous écrire (clé, scopes, compte d'API)
403account_misconfiguredLe compte d'API de cette organisation est mal configuré (membre désigné absent). Écrivez à contact@floweet.com.Nous écrire (clé, scopes, compte d'API)
403plan_requiredCe module n'est pas inclus dans l'offre de votre organisation.Le module n'est pas dans l'offre de l'organisation : changer d'offre
404not_foundCette ressource est introuvable.Corriger la requête ; ne pas réessayer à l'identique
404sirene_not_foundÉtablissement introuvable dans l'annuaire SIRENE.Corriger la requête ; ne pas réessayer à l'identique
409idempotency_in_progressUne requête avec la même clé d'idempotence est en cours. Réessayez dans un instant.Réessayer après Retry-After (ou quelques secondes)
422idempotency_key_mismatchCette clé d'idempotence a déjà servi pour une requête différente (méthode, chemin ou corps). Utilisez une nouvelle clé.Corriger la requête ; ne pas réessayer à l'identique
422prospect_limitVous avez atteint la limite de 200 prospects. Supprimez-en avant d'en ajouter.Supprimer des prospects avant d'en créer
429rate_limitedVous avez envoyé trop de requêtes. Merci de réessayer dans un instant.Réessayer après Retry-After (ou quelques secondes)
429test_quota_exceededQuota du bac à sable atteint (1 000 appels par jour avec une clé fw_test_). Réessayez demain.Réessayer après Retry-After (ou quelques secondes)
500internal_errorUne erreur inattendue est survenue. Merci de réessayer.Réessayer avec un délai croissant et la même Idempotency-Key
500database_errorLes données n'ont pas pu être lues ou enregistrées. Merci de réessayer.Réessayer avec un délai croissant et la même Idempotency-Key
502geocode_unavailableGéocodage momentanément indisponible.Réessayer avec un délai croissant et la même Idempotency-Key
502route_unavailableCalcul d'itinéraire momentanément indisponible.Réessayer avec un délai croissant et la même Idempotency-Key
502upstream_errorUn service partenaire ne répond pas. Merci de réessayer dans un instant.Réessayer avec un délai croissant et la même Idempotency-Key
503unavailableCe service est momentanément indisponible. Merci de réessayer dans un instant.Réessayer après Retry-After (ou quelques secondes)

De nouveaux codes peuvent apparaître pour de nouveaux cas : traitez un code inconnu selon son statut HTTP.

Ce que portent les détails

  • insufficient_scope : details.required (le scope exigé) et details.granted (ceux de la clé) — voir les scopes.
  • plan_required : details.module et details.tier (l'offre minimale) — voir offres et IA.
  • rate_limited et test_quota_exceeded : details.retryAfter, en secondes, comme l'en-tête Retry-After.

Réessayer sans risque

  • 4xx : ne réessayez pas à l'identique, corrigez d'abord — sauf 429 (attendez Retry-After) et 409 idempotency_in_progress (réessayez dans une seconde).
  • 500, 502, 503, délai dépassé ou connexion coupée : réessayez avec un délai croissant (1 s, 5 s, 30 s…), avec la même Idempotency-Key. Vous ne savez pas si la première requête a abouti ; la clé garantit qu'elle ne s'exécute qu'une fois (idempotence).
  • Citez l'en-tête X-Request-Id de la réponse si vous nous écrivez : il retrouve votre requête dans nos journaux.