PrevenAPI

Documentation

Spécification 2026-02 · API v1

Erreurs

Format

Toutes les erreurs HTTP ont la même forme :

{
  "error": {
    "type": "validation_error",
    "code": "INVALID_FORMACODE",
    "message": "One or more declarations are invalid. No file was generated.",
    "request_id": "req_8ed4b59fd8fc87db",
    "details": [
      {"row": 2, "column": "DOMAINE_FORMATION", "field": "declarations[0].training.formacodes", "code": "INVALID_FORMACODE", "message": "Le code 99999 n'existe pas…"}
    ]
  }
}

Appuyez-vous sur code, jamais sur message. Un code publié n'est ni renommé ni réutilisé. request_id est aussi dans l'en-tête X-Request-ID : donnez-le au support, il nous suffit et nous évite de vous demander des données personnelles.

Codes HTTP

HTTP type Quand
200 Succès. Les endpoints validate répondent 200 même si valid est false.
400 validation_error, invalid_request_error Données métier invalides (generate), version inconnue, limite du mode test
401 authentication_error Clé absente, inconnue ou révoquée
404 not_found Ressource inconnue, ou appartenant à une autre organisation
409 idempotency_error Idempotency-Key réutilisée avec un autre corps
410 invalid_request_error Fichier expiré ou généré avec store: false
413 invalid_request_error Corps ou fichier trop volumineux, trop de lignes
415 invalid_request_error Le fichier envoyé n'est pas un CSV
422 invalid_request_error JSON mal formé, champ inconnu, type incorrect
429 rate_limit_error, quota_error Trop de requêtes, ou quota mensuel atteint
500 api_error Erreur interne
503 reference_error Référentiel indisponible : rien n'a été validé, réessayez

Codes de validation

Fichier entier rejeté

Code Signification
INVALID_ENCODING Le fichier n'est pas en UTF-8
INVALID_SEPARATOR Le séparateur n'est pas \|
INVALID_HEADER Colonne manquante, inconnue, ou dans le mauvais ordre
INVALID_FILENAME Plus de 200 caractères, ou caractère interdit
EMPTY_FILE Aucune déclaration

Ligne ou champ

Code Signification
INVALID_COLUMN_COUNT La ligne n'a pas le bon nombre de colonnes
REQUIRED_FIELD Champ toujours obligatoire, vide
CONDITIONAL_FIELD_REQUIRED Champ obligatoire à cause d'un autre champ
FIELD_MUST_BE_EMPTY Champ qui doit rester vide dans ce cas
VALUE_TOO_LONG Longueur maximale dépassée
INVALID_CHARACTER \| ou saut de ligne dans une valeur
INVALID_FORMAT Liste de codes mal formée
INVALID_VALUE Valeur hors de l'énumération
INVALID_DATE Pas une date jj/mm/aaaa valide
DATE_IN_FUTURE Date de formation postérieure à aujourd'hui
END_BEFORE_START Fin de formation avant le début
VALIDITY_BEFORE_TRAINING_END Début de validité avant la fin de formation
VALIDITY_END_BEFORE_START Fin de validité avant le début de validité
INVALID_SIRET Pas 14 chiffres, ou clé de contrôle fausse
INVALID_NIR Pas 13 caractères
INVALID_URL LIEN_PREUVE ne commence pas par http:// ou https://
INVALID_CODE_COUNT Trop ou pas assez de codes
INVALID_FORMACODE, INVALID_NSF, INVALID_ROME_SKILL, UNKNOWN_CERTIFICATION Code absent du référentiel
DUPLICATE_ENTRY ID_UNIQUE_PARTENAIRE déjà présent dans le fichier
INCONSISTENT_DECLARATION Deux lignes du même ID_DECLARATION décrivent la formation différemment
TOO_MANY_HOLDERS Plus de 500 titulaires pour une déclaration
CSV_INJECTION_RISK Texte commençant par = + - @ (erreur à la génération, avertissement à la validation)

Avertissements seulement

BOM_PRESENT, EMPTY_ROW, SURROUNDING_WHITESPACE, QUOTED_VALUE, NIR_UNUSUAL_FORMAT, DUPLICATE_CODE, AMBIGUOUS_RULE, FIELD_NOT_IN_FILE_TYPE.

Un avertissement signale un point que la documentation officielle ne tranche pas. Il n'empêche jamais la génération.