> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Vérification d'identité : avertissements et codes d'erreur

> Tous les avertissements de vérification d'identité Didit : déclencheurs de refus automatique, risques et remédiations.

## Vue d'ensemble

Les avertissements du rapport de vérification d'identité signalent chaque condition observée par Didit lors de la lecture et de la validation du document. Ils figurent dans le tableau `warnings[]` de chaque élément de `id_verifications[]` (voir [Rapport de vérification d'identité](https://docs.didit.me/fr/core-technology/id-verification/report-id-verification.md)), avec la structure décrite dans [Modèles de données — Objet d'avertissement](https://docs.didit.me/fr/reference/data-models.md#objet-d’avertissement) : `feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`.

Chaque avertissement comporte trois niveaux :

1. **Le code `risk`** — un identifiant stable que vous pouvez utiliser pour effectuer des correspondances dans votre code.
2. **Le `log_type`** — dérivé de l'action que votre configuration attribue au risque au moment de l'évaluation : **Refuser → `error`**, **Examen → `warning`**, toute autre valeur → `information`.
3. **L'impact sur la décision** — défini par les groupes de risques configurables du workflow. Le même code `risk` peut être orienté vers **Approuver**, **Examen** ou **Refuser** selon la configuration de votre application.

## Conditions de refus automatique

Dans les workflows, les risques suivants font systématiquement passer le rapport d'identité (et la session) à `Declined`. Ils ne peuvent pas être configurés :

| Risque | Déclencheur |
| - | - |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | Le type de document soumis ne figure pas sur la liste des documents autorisés de votre application. `additional_data` inclut `issuing_state`, `document_type`, `document_subtype`, `document_region` et `document_region_with_subtype` afin que vous puissiez activer le document exact dans votre workflow. |
| `DOCUMENT_EXPIRED` | La date d'expiration du document est dépassée au moment de la capture. |
| `PORTRAIT_IMAGE_NOT_DETECTED` | Aucune image de portrait n'a pu être localisée sur le document. |
| `ID_DOCUMENT_IN_BLOCKLIST` | Le document correspond à une entrée de la liste de blocage de votre application. |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | Le selfie pris par la caméra frontale lors de la capture du document correspond à un visage de votre liste de blocage de visages. |
| `AGE_BELOW_MINIMUM` | Uniquement dans les workflows de vérification d'âge adaptative : l'âge extrait est inférieur au minimum. |
| `AGE_NOT_DETECTED` | Uniquement dans les workflows de vérification d'âge adaptative : l'âge n'a pas pu être extrait du document. |

Pour l'**API OCR autonome**, l'ensemble des refus inconditionnels comprend `DOCUMENT_EXPIRED`, `MINIMUM_AGE_NOT_MET`, `PORTRAIT_IMAGE_NOT_DETECTED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED` et `PUBLIC_DOCUMENT_IMAGE_DETECTED`. Dans les workflows, l'âge minimum est configurable (par défaut Refuser) et les trois risques de détection du vivant du document dépendent de seuils (voir ci-dessous).

Les risques configurables de cette API acceptent `DECLINE` ou `NO_ACTION` comme paramètres de requête, plutôt qu'un verdict d'Examen. Le seul résultat d'Examen qu'elle peut renvoyer n'est pas configurable : lorsqu'une vérification de détection du vivant du document demandée ne produit aucun score utilisable, la réponse est `In Review` avec un avertissement `DOCUMENT_LIVENESS_NOT_COMPUTED` (voir [Détection du vivant du document](#détection-du-vivant-du-document-falsification)).

| Paramètre de requête | Risques | Par défaut |
| - | - | - |
| `invalid_mrz_action` | `MRZ_VALIDATION_FAILED`, `MRZ_NOT_DETECTED` | `DECLINE` |
| `inconsistent_data_action` | `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`, `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | `DECLINE` |
| `expiration_date_not_detected_action` | `EXPIRATION_DATE_NOT_DETECTED` | `NO_ACTION` |
| `critical_field_occlusion_action` | `CRITICAL_FIELD_OCCLUSION_DETECTED` | `DECLINE` |
| `document_or_personal_number_format_mismatch_action` | `DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH` | `NO_ACTION` |

## Paramètres de vérification configurables

Dans la console Didit, les risques restants liés à la pièce d'identité sont regroupés dans des paramètres que vous pouvez acheminer vers **Approuver**, **Examen** ou **Refuser** (par workflow et par nœud dans les workflows sous forme de graphe) :

| Groupe | Risques | Action par défaut |
| - | - | - |
| **Âge minimum** | `MINIMUM_AGE_NOT_MET` | Refuser |
| **Âge maximum** | `MAXIMUM_AGE_EXCEEDED` | Refuser |
| **Utilisateur dupliqué** | `POSSIBLE_DUPLICATED_USER` (ignoré lorsque le numéro de document figure dans votre liste d'autorisation de documents) | Approuver (information) |
| **Code invalide** | `QR_NOT_DETECTED`, `BARCODE_NOT_DETECTED`, `QR_VALIDATION_FAILED`, `BARCODE_VALIDATION_FAILED` | Approuver (information) |
| **MRZ invalide** | `MRZ_VALIDATION_FAILED`, `MRZ_NOT_DETECTED` | Approuver (information) |
| **Incohérence des données** | `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`, `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`, `DOCUMENT_SIDES_MISMATCH`, `ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | Approuver (information) |
| **Validation non valide** | `INVALID_DATE`, `COULD_NOT_RECOGNIZE_DOCUMENT`, `DOCUMENT_NUMBER_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`, `NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED` | Examen |
| **Non-concordance des informations attendues** | `FULL_NAME_MISMATCH_WITH_PROVIDED`, `GENDER_MISMATCH_WITH_PROVIDED`, `DOB_MISMATCH_WITH_PROVIDED`, `COUNTRY_MISMATCH_WITH_PROVIDED`, `NATIONALITY_MISMATCH_WITH_PROVIDED`, `IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | Examen |
| **Date d'expiration non détectée** | `EXPIRATION_DATE_NOT_DETECTED` | Approuver (information) |
| **Non-concordance du format du numéro de document ou du numéro personnel** | `DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH` (une action partagée) | Examen |
| **Champ critique masqué** | `CRITICAL_FIELD_OCCLUSION_DETECTED` | Examen |
| **Adresse non analysée** | `UNPARSED_ADDRESS` | Approuver (information) |
| **Qualité de l'image** | `IMAGE_TOO_BLURRY`, `IMAGE_TOO_DARK`, `IMAGE_TOO_BRIGHT` (une action par risque) | Approuver (information) |
| **Document sans portrait** | `DOCUMENT_HAS_NO_PORTRAIT` | Examen |
| **Visage dupliqué en capture silencieuse** | `FRONT_CAMERA_DUPLICATED_FACE`, `POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE` (une action partagée) | Approuver (information) |
| **Doublon en capture silencieuse avec un nom différent** | `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH` (peut uniquement rendre plus stricte l'issue du visage dupliqué) | Examen |
| **Doublon en capture silencieuse avec une date de naissance différente** | `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH` (peut uniquement rendre plus stricte l'issue du visage dupliqué) | Examen |

Les risques de doublon et de liste de blocage en capture silencieuse proviennent de la [Recherche faciale sur le selfie pris lors de la capture du document](https://docs.didit.me/fr/core-technology/face-search/overview.md#le-selfie-pris-pendant-la-capture-du-document). La recherche s'exécute lorsque l'option **Recherche faciale par capture silencieuse** (`document_selfie_face_search_enabled`) est activée, ce qui est le cas par défaut, et que Recherche faciale n'est pas désactivée à l'étape Détection du vivant ; sinon, aucun de ces six risques n'est déclenché.

Deux familles de risques liés à la pièce d'identité sont **basées sur des seuils** plutôt que sur des options Approuver/Examen/Refuser :

* **Détection du vivant du document** — `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`. Chaque type de fraude possède ses propres seuils de refus et d'examen : score inférieur au seuil de refus → `error` + Refusé ; inférieur au seuil d'examen → `warning` + En cours d'examen ; sinon `information`.
* **Correspondance faciale multi-caméras** — `LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY`, régie par `document_selfie_portrait_match_decline_threshold` / `document_selfie_portrait_match_review_threshold`.

### Configuration des seuils de détection du vivant du document

Dans l'éditeur de workflow, ces seuils se trouvent dans l'onglet **Falsification** de l'étape Vérification d'identité, avec une carte par type de fraude : **Remplacement du portrait**, **Copie imprimée** et **Capture d'écran**.

Chaque contrôle attribue au document un score de `0` à `100` évaluant son authenticité. **Un score plus élevé signifie que le document est plus susceptible d'être authentique.** Les deux valeurs figurant sur une carte divisent cette échelle en trois plages :

| Score | Résultat |
| - | - |
| Inférieur à la valeur **Refuser** | `error`, la session est Refusée |
| Supérieur ou égal à la valeur **Refuser** et inférieur à la valeur **Examen** | `warning`, la session passe à l'état En cours d'examen |
| Supérieur ou égal à la valeur **Examen** | `information`, le contrôle est réussi |

Augmenter l'une de ces valeurs rend le contrôle plus strict : davantage de sessions se retrouvent dans la plage supérieure. Diminuer une valeur permet à davantage de sessions de passer. Dans l'éditeur, la valeur de refus ne peut pas dépasser la valeur d'examen. Via l'API, une valeur de refus supérieure à la valeur d'examen supprime la plage En cours d'examen.

Valeurs par défaut de la plateforme, utilisées lorsqu'un workflow ne définit pas de valeur :

| Type de fraude | Refuser si inférieur à | Examen si inférieur à | Clés de configuration du workflow |
| - | - | - | - |
| Remplacement du portrait | `35` | `70` | `document_liveness_portrait_replace_decline_threshold`, `document_liveness_portrait_replace_review_threshold` |
| Copie imprimée | `35` | `77` | `document_liveness_printed_copy_decline_threshold`, `document_liveness_printed_copy_review_threshold` |
| Capture d'écran | `30` | `70` | `document_liveness_screen_replay_decline_threshold`, `document_liveness_screen_replay_review_threshold` |

Commencez par les valeurs par défaut et modifiez une valeur à la fois. Chaque carte affiche sa valeur par défaut ainsi qu'un bouton **Rétablir les valeurs par défaut**, vous permettant de toujours y revenir. L'éditeur vous avertit également concernant ces configurations :

* **Examen à `100`.** Seul un score parfait est validé, de sorte que presque toutes les sessions passent à l'état En cours d'examen ou sont refusées.
* **Refuser à `100`.** Seul un score parfait évite un refus, de sorte que presque toutes les sessions sont refusées.
* **Les deux valeurs à `0`.** Aucun score n'est jamais signalé, le contrôle est donc effectivement désactivé.

Définir les deux valeurs sur le même nombre supprime la plage En cours d'examen : un score inférieur à ce nombre est refusé et tout autre score est validé.

Lorsque **Copie imprimée** et **Capture d'écran** signaleraient toutes deux le même document, seul `SCREEN_CAPTURE_DETECTED` est rapporté.

La correspondance faciale multi-caméras repose sur le même principe, avec une différence au niveau de la limite : un score égal à son seuil d'examen passe tout de même à l'état En cours d'examen.

Quatre risques liés à l'identité ne sont ni configurables ni régis par des seuils. `POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST` est toujours orienté vers **Examen** : un selfie proche d'un visage figurant sur une liste de blocage, sans être une correspondance confirmée, doit être évalué par une personne, sans jamais faire l'objet d'un refus automatique ni être ignoré. `BARCODE_SIGNATURE_INVALID` est toujours orienté vers **Examen**. Il ne se déclenche que lorsqu'un code-barres comporte la signature d'une autorité de délivrance qui échoue à la vérification cryptographique, de sorte qu'il n'existe aucune configuration dans laquelle une falsification avérée est ignorée. `DOCUMENT_BACK_SIDE_NOT_AVAILABLE` est toujours une **information** et n'affecte jamais la décision : il signale une limitation du catalogue de documents de Didit, et non une propriété du document présenté, de sorte qu'il n'existe aucune configuration dans laquelle il peut refuser ou envoyer en examen un titulaire légitime.
`FRONT_CAMERA_CAPTURED_DOCUMENT` est toujours orienté vers **Examen**.
Il ne se déclenche que lorsque l'image prise par la caméra frontale pendant la capture du document montre une pièce d'identité sans aucune personne, garantissant ainsi qu'une capture n'apportant aucune information sur la personne qui tenait le document parvienne toujours à un réviseur.
Il est vérifié dès lors que la correspondance de portrait lors de la capture de document (`is_document_selfie_portrait_match_enabled`) est activée.

## Avertissements générés

Vérifié par rapport à `collect_ocr_logs`, au flux de capture de document et à `process_ocr_logs_and_get_status`. Les descriptions courtes ci-dessous correspondent exactement aux chaînes `short_description` renvoyées par l'API.

### Reconnaissance et qualité des documents

| Risque | Description courte | Cause | Gravité |
| - | - | - | - |
| `COULD_NOT_RECOGNIZE_DOCUMENT` | Could not validate Document | Le système n'a pas pu confirmer l'authenticité ou la validité du document soumis — souvent en raison d'une mauvaise qualité d'image ou d'un type de document non pris en charge. Également utilisé comme solution de repli pour les échecs de traitement non reconnus. | Configurable — Invalid Validation, Review par défaut |
| `COULD_NOT_DETECT_DOCUMENT_TYPE` | Could not detect document type | Le recto du document ne correspond pas à un modèle de document officiel connu avec un niveau de confiance élevé, ou le moteur d'OCR n'a pas pu classifier la famille du document (passeport, pièce d'identité ou permis de conduire). Un document qui contient des données valides mais dont la mise en page ne correspond à aucun modèle officiel (un document modifié, généré par ordinateur ou un nouveau modèle pas encore pris en charge) aboutit ici. Lorsque ce risque se déclenche, `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` est supprimé (le type étant inconnu, indiquer « non pris en charge » serait contradictoire). | Configurable — Invalid Validation, Review par défaut |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | Document not supported for your application | Le type de document reconnu ne figure pas sur la liste des documents autorisés de l'application. `additional_data` indique le pays, le type de document, le sous-type et le sous-type régional. | `error` — **refus automatique** |
| `DOCUMENT_EXPIRED` | Document expired | Au moment de la capture : la date d'expiration du document est dépassée (`error`, refus automatique). Après approbation : la surveillance continue de l'expiration ajoute cet avertissement avec `log_type: "warning"` lorsque la date d'un document approuvé est dépassée, et le statut du rapport devient `Expired`. | `error` à la capture ; `warning` pour la surveillance |
| `DOCUMENT_SIDES_MISMATCH` | Document sides mismatch | Les images du recto et du verso n'appartiennent pas au même document. | Configurable — Data Inconsistency, information par défaut |
| `DOCUMENT_BACK_SIDE_NOT_AVAILABLE` | Back side not available for this document | Le workflow a demandé les deux faces, le recto a été reconnu et le catalogue de documents de Didit n'enregistre aucun verso pour ce document précis, de sorte que seul le recto a pu être collecté. Les éléments probants du rapport ne concernent qu'une seule face. Le document présenté ne présente aucune anomalie, le titulaire n'est jamais invité à le reprendre en photo et une nouvelle numérisation ne peut pas ajouter de verso. `additional_data` indique le `front_document_name` reconnu. | `information` — n'affecte jamais la décision |
| `PORTRAIT_IMAGE_NOT_DETECTED` | Portrait image not detected | Aucun portrait n'a pu être localisé sur un document qui devrait en comporter un (différé lorsque l'utilisateur téléverse d'abord la face sans portrait). | `error` — **refus automatique** |
| `DOCUMENT_HAS_NO_PORTRAIT` | Document has no portrait | La famille de documents reconnue ne comporte jamais de photo d'identité sur aucune face (certains titres de séjour, cartes de santé, certificats d'immatriculation, cartes fiscales et un sous-ensemble de permis de conduire/pièces d'identité). Il s'agit d'une caractéristique du type de document au niveau du catalogue, et non d'un problème de qualité d'image — rescanner le document ne peut pas modifier le résultat. | Configurable — Document Without Portrait, Review par défaut |
| `IMAGE_TOO_BLURRY` / `IMAGE_TOO_DARK` / `IMAGE_TOO_BRIGHT` | Document image is too blurry / too dark / too bright | La barrière de qualité d'image a rejeté un téléversement (l'utilisateur est invité à reprendre la photo). `additional_data` indique le côté (`side`) défaillant. Une nouvelle prise de vue réussie efface l'avertissement obsolète ; la barrière est ignorée lors de la dernière tentative autorisée de l'utilisateur afin qu'il ne fasse jamais l'objet d'un blocage strict. | Configurable — action Image Quality par risque, information par défaut |

> [!NOTE]
>
> Le flux de capture peut également rejeter un téléversement avec les codes de retour `IMAGE_RESOLUTION_TOO_LOW`, `DOCUMENT_NOT_FULLY_VISIBLE`, `IMAGE_QUALITY_TOO_LOW` et `DOCUMENT_OCCLUSION_DETECTED` (un doigt ou un objet est considéré comme recouvrant physiquement du texte imprimé). Chacun invite à une nouvelle prise dans le SDK et est enregistré dans le rapport sous son propre risque, acheminé selon les paramètres Image Quality — `DOCUMENT_OCCLUSION_DETECTED` et `IMAGE_QUALITY_TOO_LOW` partageant une même action. Ils décrivent la *capture* : une nouvelle prise réussie efface l'avertissement. La question de savoir si un champ masqué doit affecter la décision relève de l'intégrité avec le risque distinct `CRITICAL_FIELD_OCCLUSION_DETECTED` ci-dessous, qui est émis au moment de la décision et dont l'action est configurée sur Review par défaut.

> [!TIP]
>
> Si votre workflow ancre l'identité sur Face Match plutôt que sur le portrait du document, envisagez de router **Document Without Portrait** vers Decline — sinon, une famille de documents sans portrait atteint l'étape Face Match sans aucun élément de comparaison.

### Extraction des champs

| Risque | Description courte | Cause | Gravité |
| - | - | - | - |
| `NAME_NOT_DETECTED` | First name and/or last name not detected | Le prénom et le nom n'ont pas pu être extraits. Ce risque ne s'applique pas lorsque le titulaire ne possède légitimement qu'un seul nom (pays où les personnes portent légitimement un seul nom, ou la MRZ elle-même ne comporte qu'un seul nom) et qu'au moins une valeur de nom a été extraite. | Configurable — Invalid Validation, Review par défaut |
| `DATE_OF_BIRTH_NOT_DETECTED` | Date of birth not detected | La date de naissance n'a pas pu être extraite d'un document qui devrait en comporter une. | Configurable — Invalid Validation, Review par défaut |
| `DOCUMENT_NUMBER_NOT_DETECTED` | Document number not detected | Ni le numéro de document ni un numéro personnel n'ont pu être extraits. | Configurable — Invalid Validation, Review par défaut |
| `EXPIRATION_DATE_NOT_DETECTED` | Expiration date not detected | La date d'expiration n'a pas pu être extraite d'un document qui devrait en comporter une. | Configurable — Expiration Date Not Detected, information par défaut |
| `INVALID_DATE` | Invalid Date | Une date figurant sur le document (date de naissance ou expiration) ne correspond pas à une date valide. Dans le flux de capture actuel, cela se manifeste par une invite à reprendre la photo lors du téléversement plutôt que par un avertissement stocké ; le code reste dans le groupe de routage Invalid Validation et peut apparaître sur des sessions plus anciennes. | Configurable — Invalid Validation, Review par défaut |
| `DOCUMENT_NUMBER_FORMAT_MISMATCH` | Format du numéro de document non concordant | Le numéro de document ne correspond pas au format attendu configuré pour ce type de document. `additional_data` contient `expected_format` et `extracted_value`. | Configurable — Discordance de format, examen manuel par défaut |
| `PERSONAL_NUMBER_FORMAT_MISMATCH` | Format du numéro personnel non concordant | Le numéro personnel ne correspond pas au format attendu configuré pour ce type de document. | Configurable — Discordance de format, examen manuel par défaut |
| `CRITICAL_FIELD_OCCLUSION_DETECTED` | Un champ critique du document est masqué | Le contrôle d'occlusion a signalé qu'un champ imprimé critique était physiquement masqué lors de la capture — un numéro d'identité, un nom, la date de naissance ou la date d'expiration. Il s'agit d'un signal d'intégrité du document, et non d'un signal de qualité de la capture : masquer précisément les numéros sur lesquels un rapport est rapproché correspond à l'apparence d'un document caviardé ou falsifié. La valeur lue pour un champ masqué est supprimée de l'extraction plutôt que renvoyée comme valeur confirmée, de sorte que le risque `*_NOT_DETECTED` correspondant accompagne généralement cet avertissement. `additional_data` contient les noms des champs masqués dans `covered_fields`, ainsi que `covered_identifiers` lorsque l'un d'eux alimente `document_number` ou `personal_number`. | Configurable — Champ critique masqué, examen manuel par défaut |

### MRZ, QR, code-barres

Les trois risques liés à la MRZ sont ignorés pour les types de documents dont les MRZ sont notoirement peu fiables.

| Risque | Description courte | Cause | Gravité |
| - | - | - | - |
| `MRZ_NOT_DETECTED` | MRZ non détectée | La MRZ n'a pas pu être localisée sur un document qui devrait en comporter une. | Configurable — MRZ non valide, information par défaut |
| `MRZ_VALIDATION_FAILED` | La MRZ n'est pas valide | La MRZ a échoué à la validation du format / de la somme de contrôle. Souvent une capture de faible qualité ; peut indiquer une falsification. | Configurable — MRZ non valide, information par défaut |
| `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` | Divergences entre la MRZ et les données extraites de l'OCR | Le contenu de la MRZ ne concorde pas avec l'OCR de la VIZ (zone visible). Altération possible. | Configurable — Incohérence des données, information par défaut |
| `QR_NOT_DETECTED` | QR code non détecté | Le QR code n'a pas pu être localisé sur un document qui devrait en comporter un. | Configurable — Code non valide, information par défaut |
| `QR_VALIDATION_FAILED` | Échec de la validation du QR code | Le contenu du QR code n'a pas pu être validé par rapport au reste du document. | Configurable — Code non valide, information par défaut |
| `BARCODE_NOT_DETECTED` | Code-barres non détecté | Le code-barres n'a pas pu être localisé sur un document qui devrait en comporter un. | Configurable — Code non valide, information par défaut |
| `BARCODE_VALIDATION_FAILED` | Échec de la validation du code-barres | Le contenu du code-barres n'a pas pu être validé par rapport au reste du document. | Configurable — Code non valide, information par défaut |
| `BARCODE_SIGNATURE_INVALID` | Signature du code-barres non valide | Le code-barres comporte une signature numérique de l'autorité de délivrance, et cette signature n'a pas pu être vérifiée : les données contenues dans le code-barres ne correspondent pas à celles signées par l'autorité, ce qui indique un document falsifié ou altéré. Actuellement vérifié pour les codes-barres **2D-Doc français (ANTS)**, où une signature vérifiée permet à Didit de valider des champs sans nécessiter de corroboration par la MRZ ; les signatures AAMVA (permis de conduire et cartes d'identité des États-Unis et du Canada) sont uniquement détectées et journalisées, sans application de règle pour le moment. | Fixe - Examen manuel (groupe d'actions propre `invalid_barcode_signature_action` ; pas encore configurable via la console ou l'API) |
| `DATA_INCONSISTENT` | Données OCR non cohérentes dans le document | Les données extraites de différentes parties du document ne concordent pas — généralement entre le recto et le verso d'un même document. | Configurable — Incohérence des données, information par défaut |

> [!NOTE]
>
> La vérification de signature des codes-barres couvre actuellement les cartes nationales d'identité françaises, dont le code-barres 2D-Doc ANTS est signé par l'autorité de délivrance. `BARCODE_SIGNATURE_INVALID` n'est déclenché que lorsque le contrôle de signature rejette lui-même le payload. Un code-barres sans signature, un code-barres signé par une autorité qui ne figure pas encore dans le magasin de confiance de Didit, ou dont la signature ne peut pas être décodée, est traité comme une donnée non authentifiée et validé par rapport à la MRZ et au texte imprimé comme auparavant, sans déclencher ce risque.
>
> Les codes-barres des permis de conduire des États-Unis et du Canada (AAMVA) ne font pas l'objet d'une vérification cryptographique : la signature numérique y est facultative et propre à chaque juridiction, et aucune juridiction ne publie de clés de vérification. Didit se contente donc de détecter et de journaliser si un payload comporte une signature ; la signature elle-même n'est jamais vérifiée. Les échecs de signature AAMVA ne constituent pas un signal de risque aujourd'hui. Un payload AAMVA altéré n'apparaît que sous la forme de `BARCODE_VALIDATION_FAILED`, et uniquement si l'altération entraîne également une discordance entre le code-barres et la MRZ ou les données imprimées/OCR - une signature falsifiée sur un payload par ailleurs cohérent en interne passe sans aucun signal.
>
> L'utilisateur n'est jamais invité à reprendre une capture en cas de `BARCODE_SIGNATURE_INVALID` : une signature qui ne correspond pas au payload ne peut pas être corrigée en prenant une meilleure photo.

### Correspondance d'identité

| Risque | Description courte | Cause | Gravité |
| - | - | - | - |
| `ID_DOCUMENT_IN_BLOCKLIST` | Document d'identité sur liste de blocage | Le document correspond à un document figurant sur liste de blocage (la même date de naissance, le même pays de délivrance et le même numéro de document) ou à un numéro de document placé manuellement sur liste de blocage. `additional_data` contient la référence de la session placée sur liste de blocage. | `error` — **refus automatique** |
| `ID_DOCUMENT_IN_ALLOWLIST` | Document d'identité sur liste d'autorisation | Le numéro de document correspond à votre liste d'autorisation de documents, l'action relative aux utilisateurs dupliqués a donc été ignorée. `additional_data` contient le `document_number`. | `information` |
| `POSSIBLE_DUPLICATED_USER` | Utilisateur potentiellement dupliqué depuis une autre session | Un autre document dans votre application présente la même date de naissance, le même pays de délivrance et un nom complet très similaire — associé à un autre utilisateur (`vendor_data`), quel que soit le statut de cette session. `additional_data` contient la référence de la session dupliquée. | Configurable — Utilisateur dupliqué, information par défaut |
| `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | Le nom sur le document diffère des autres documents approuvés | Le nom figurant sur ce document diffère de celui des documents précédemment approuvés pour le même utilisateur. Généré uniquement pour les comptes sous protocole Didit (UserKYC), et non pour les sessions d'API standard. | Configurable — Incohérence des données, information par défaut |
| `ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | Discordance de données entre les documents de vérification d'identité | Deux documents d'identité d'une même session ne concordent pas sur le nom / la date de naissance. | Configurable — Incohérence des données, information par défaut |
| `LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY` | Le selfie lors de la capture du document ne correspond pas au portrait du document | Le visage capturé depuis la caméra frontale de l'utilisateur lors de la capture du document ne correspond pas suffisamment au portrait présent sur le document. | Basé sur un seuil : `error` en dessous du seuil de refus, `warning` au niveau ou en dessous du seuil d'examen |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | Le selfie lors de la capture du document correspond à un visage sur liste de blocage | Le visage sur un selfie pris par la caméra frontale lors de la capture du document correspond de manière fiable à un visage de votre liste de blocage de visages, que ce visage ait été ajouté à partir d'un contrôle de détection du vivant, du selfie de capture de document d'une autre session ou par importation. `additional_data` contient la référence de la session associée au visage inscrit sur la liste de blocage (`blocklisted_session_id`, `blocklisted_session_number`) lorsque le visage bloqué provient d'une session, et `face_image_source` (`front_image_camera_front` ou `back_image_camera_front`) pour le selfie ayant généré la correspondance. | `error` — **refus automatique** |
| `POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST` | Le selfie lors de la capture du document peut correspondre à un visage sur liste de blocage | Le visage sur un selfie de capture de document est similaire à un visage de votre liste de blocage de visages, sans être suffisamment similaire pour constituer une correspondance confirmée. Même `additional_data` que ci-dessus. | `warning` — **toujours Examen** |
| `FRONT_CAMERA_DUPLICATED_FACE` | Le selfie lors de la capture du document correspond à un utilisateur approuvé | Le visage sur le selfie pris par la caméra frontale lors de la capture du document correspond de manière fiable au visage d'un utilisateur déjà approuvé dans votre application ; la même personne tente donc peut-être de se vérifier à nouveau sous un autre compte. `additional_data` contient la session correspondante (`duplicated_session_id`, `duplicated_session_number`) et `face_image_source` pour le selfie ayant généré la correspondance. | Selon **Visage dupliqué en capture silencieuse** (Approuver par défaut, `information`) |
| `POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE` | Le selfie lors de la capture du document peut correspondre à un utilisateur approuvé | Le visage sur un selfie de capture de document est similaire au visage d'un utilisateur déjà approuvé dans votre application, sans être suffisamment similaire pour constituer une correspondance confirmée. Même `additional_data` que ci-dessus. | Selon **Visage dupliqué en capture silencieuse** (Approuver par défaut, `information`) |
| `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH` | Le selfie de capture de document correspond à un utilisateur avec un nom différent | Déclenché en plus de `FRONT_CAMERA_DUPLICATED_FACE` lorsque l'utilisateur approuvé a été vérifié sous un nom différent. `additional_data` ajoute `name_match_score` ; il ne contient jamais le nom de l'autre utilisateur. | Selon **Doublon en capture silencieuse avec un nom différent** (Examen par défaut, `warning`) |
| `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH` | Le selfie de capture de document correspond à un utilisateur avec une date de naissance différente | Déclenché en plus de `FRONT_CAMERA_DUPLICATED_FACE` lorsque le document d'identité de l'utilisateur approuvé indique une date de naissance différente. Un document distinct de la même personne (par exemple un passeport après une carte d'identité), un document renouvelé ou le même numéro de document provenant du même pays n'est pas signalé. `additional_data` ajoute `mismatch_dimensions`, sans jamais inclure les données du document de l'autre utilisateur. | Selon **Doublon en capture silencieuse avec une date de naissance différente** (Examen par défaut, `warning`) |
| `FRONT_CAMERA_CAPTURED_DOCUMENT` | La caméra frontale a capturé un document d'identité au lieu de l'utilisateur | La vue de la caméra frontale prise lors de la numérisation du document montre un document d'identité (par exemple une carte tenue devant la caméra) et aucune personne. La correspondance du selfie de capture de document n'est pas calculée pour cette vue. | Toujours **Examen** |

### Détection du vivant du document (falsification)

Géré par des seuils selon le type de fraude dans les workflows. Sur l'API OCR autonome, ces trois risques entraînent un refus sans condition, et un contrôle demandé ne produisant aucun score exploitable renvoie `In Review` au lieu d'approuver.

Les scores eux-mêmes figurent sur chaque rapport V3 sous [`document_liveness`](https://docs.didit.me/fr/core-technology/id-verification/report-id-verification#scores-de-détection-du-vivant-du-document), y compris lorsqu'aucun avertissement n'a été émis, permettant ainsi d'auditer un document approuvé.

| Risque | Description courte | Cause | Gravité |
| - | - | - | - |
| `SCREEN_CAPTURE_DETECTED` | Capture d'écran du document détectée | Le document a été capturé depuis un écran plutôt qu'à partir d'un document physique. | `error` en dessous du seuil de refus, `warning` en dessous du seuil d'examen, sinon `information` |
| `PRINTED_COPY_DETECTED` | Copie imprimée du document détectée | Le document semble être une copie imprimée plutôt que l'original. | Mêmes seuils à trois niveaux |
| `PORTRAIT_MANIPULATION_DETECTED` | Manipulation du portrait détectée | La zone du portrait semble avoir été remplacée ou modifiée. | Mêmes seuils à trois niveaux |
| `DOCUMENT_LIVENESS_NOT_COMPUTED` | Le contrôle de détection du vivant du document n'a pas pu être calculé | Le contrôle demandé de détection du vivant du document (contrefaçon) n'a renvoyé aucun score exploitable — le fournisseur a échoué, n'a pas renvoyé de code 200 ou a répondu HTTP 200 avec `status="ERR"` — de sorte que le document n'a jamais été vérifié pour substitution de portrait, copie imprimée ou rejeu sur écran. L'absence de score ne constitue pas une preuve de l'authenticité d'un document. API OCR autonome uniquement. | `warning` + `In Review` (non configurable ; ne prévaut jamais sur un `Declined`) |

### Intégrité du canal de capture

| Risque | Description courte | Cause | Configurable via | Par défaut |
| - | - | - | - | - |
| `INJECTION_ATTACK_DETECTED` | Attaque par injection détectée | La capture a fait l'objet d'une injection plutôt que d'être enregistrée par la caméra propre à l'appareil : une caméra virtuelle logicielle capable de diffuser n'importe quelle vidéo, un flux de caméra généré par la page ou par automatisation de navigateur, une caméra détournée ou un outil d'instrumentation greffé à l'application a fourni les images. `additional_data.reasons` liste uniquement les motifs qui le prouvent, et `source` prend la valeur `capture_integrity`. Cela s'applique à la capture du document ainsi qu'au selfie pris pour la recherche d'identité. | `id_verification_injection_attack_action` | **Refuser** |

Le champ `log_type` reflète l'action configurée : `error` pour Refus, `warning` pour Examen, `information` pour Aucune action.
Action recommandée : traitez une session refusée comme une capture injectée et demandez à la personne de réessayer sur un appareil physique doté de sa caméra intégrée.
Les signaux qu'une personne authentique peut produire ne déclenchent jamais `INJECTION_ATTACK_DETECTED` et restent informatifs.
Les applications qui relaient une véritable caméra, comme un téléphone utilisé comme webcam ou une couche d'effets appliquée sur une véritable webcam, ne sont pas signalées comme des attaques par injection.
Il s'agit d'une détection des attaques par injection, distincte de la détection des attaques par présentation (un faux présenté devant une véritable caméra).

### Images de documents publics connus

| Risque | Brève description | Cause | Gravité |
| - | - | - | - |
| `PUBLIC_DOCUMENT_IMAGE_DETECTED` | Image de document public connue détectée sur Internet | L'image du document soumis correspond à une image connue accessible publiquement sur Internet (par exemple un spécimen, une photo de presse ou une photo de banque d'images d'un document) ; il ne peut donc pas s'agir d'une photo du document physique propre à l'utilisateur. La correspondance utilise une empreinte exacte et perceptive (pHash/dHash) comparée au corpus Didit d'images de documents publics connus ; `additional_data` contient `match_type` (`exact` ou `perceptual`), `source`, `source_url` et un `similarity_score` (0-100). | Fixe - Examen dans les workflows ; **refus automatique** sur l'API `/id-verification` autonome |

### Discordances avec les informations attendues

Lorsque vous transmettez `expected_details` à une session, Didit génère un avertissement de discordance pour chaque champ qui ne correspond pas. Un seul regroupement (`expected_details_mismatch_action`, par défaut Examen) contrôle le routage de tous ces avertissements :

| Risque | Brève description | Cause |
| - | - | - |
| `FULL_NAME_MISMATCH_WITH_PROVIDED` | Discordance du nom complet avec les informations fournies | Le nom fourni obtient un score inférieur au seuil de correspondance de nom par rapport au document. |
| `DOB_MISMATCH_WITH_PROVIDED` | Discordance de la date de naissance avec les informations fournies | La date de naissance fournie ne correspond pas. |
| `GENDER_MISMATCH_WITH_PROVIDED` | Discordance du genre avec les informations fournies | Le genre fourni ne correspond pas. |
| `COUNTRY_MISMATCH_WITH_PROVIDED` | Discordance du pays avec les informations fournies | Le pays fourni ne correspond pas à `issuing_state`. |
| `NATIONALITY_MISMATCH_WITH_PROVIDED` | Discordance de la nationalité avec les informations fournies | La nationalité fournie ne correspond pas. |
| `IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | Discordance du numéro d'identification avec les informations fournies | Le numéro d'identification fourni ne correspond pas au numéro de document, au numéro personnel ou au numéro fiscal. |

Chaque avertissement de discordance contient les valeurs attendues et extraites dans `additional_data`.

### Âge

| Risque | Brève description | Cause | Gravité |
| - | - | - | - |
| `MINIMUM_AGE_NOT_MET` | Âge minimum non atteint | Le titulaire est en dessous de l'âge minimum configuré (global ou par pays/État). `additional_data` contient `min_age_allowed` et `user_age`. | Configurable — Âge minimum, par défaut Refus (`error`) ; refus inconditionnel sur l'API OCR autonome |
| `MAXIMUM_AGE_EXCEEDED` | Âge maximum dépassé | Le titulaire dépasse l'âge maximum configuré. `additional_data` contient `max_age_allowed` et `user_age`. | Configurable — Âge maximum, par défaut Refus (`error`) |
| `AGE_NOT_DETECTED` | Âge non détecté | Workflows adaptatifs de vérification de l'âge : l'âge n'a pas pu être extrait du document. | `error` — **refus automatique** |
| `AGE_BELOW_MINIMUM` | Âge inférieur au minimum | Workflows adaptatifs de vérification de l'âge : l'âge extrait est inférieur au minimum. | `error` — **refus automatique** |

### Adresse

| Risque | Brève description | Cause | Gravité |
| - | - | - | - |
| `UNPARSED_ADDRESS` | Impossible de déterminer la localisation de l'adresse | Le document définit un champ d'adresse, mais l'adresse extraite n'a pas pu être analysée ou géolocalisée. | Configurable — Adresse non analysée, par défaut information |

## Correspondances de documents entre sessions

En plus des avertissements ci-dessus, le rapport de vérification d'identité V3 inclut un tableau `matches[]` — contenant jusqu'à 5 autres documents dans votre application présentant la même date de naissance, le même pays de délivrance et un nom complet très similaire (les documents sur liste de blocage nécessitent en plus une correspondance exacte du numéro de document), à l'exclusion des sessions appartenant au même utilisateur. Les documents ajoutés à votre liste de blocage apparaissent avec `is_blocklisted: true`. Les documents figurant sur votre liste d'autorisation apparaissent toujours dans les correspondances, mais l'action associée aux utilisateurs en double est ignorée.

Chaque correspondance comprend `session_id`, `session_number`, `vendor_data`, `verification_date`, `user_details` (`name`, `document_type`, `document_number`), `status`, `is_blocklisted`, `api_service` et une `front_image_url` signée.

## Exemples

### Avertissement configurable avec son acheminement par défaut (information)

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "QR_NOT_DETECTED",
    "additional_data": null,
    "log_type": "information",
    "short_description": "QR not detected",
    "long_description": "The system couldn't find or read the QR code on the document. This could be due to poor image quality or an unsupported document type.",
    "node_id": "id_primary"
  }
]
```

### Refus automatique sur document expiré

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOCUMENT_EXPIRED",
    "additional_data": null,
    "log_type": "error",
    "short_description": "Document expired",
    "long_description": "The document's expiration date has passed, rendering it no longer valid for use.",
    "node_id": "id_primary"
  }
]
```

### Discordance des détails attendus avec le payload

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOB_MISMATCH_WITH_PROVIDED",
    "additional_data": {
      "expected_dob": "1990-01-01",
      "extracted_dob": "1991-03-15"
    },
    "log_type": "warning",
    "short_description": "Date of birth mismatch with provided information",
    "long_description": "The provided date of birth in `expected_details` doesn't match the date extracted from the document.",
    "node_id": "id_primary"
  }
]
```

## Types d'avertissements

Une gravité est attribuée à chaque risque en fonction de la configuration de votre application. Les trois niveaux de gravité sont :

## Pages connexes

* [Rapport de vérification d'identité](https://docs.didit.me/fr/core-technology/id-verification/report-id-verification.md) — schéma complet du rapport et statuts.
* [Surveillance des documents](https://docs.didit.me/fr/core-technology/id-verification/document-monitoring-id-verification.md) — comment Didit détecte les altérations et les doublons entre sessions.
* [Webhooks](https://docs.didit.me/fr/integration/webhooks.md) — `session.status.updated` transmet les avertissements dès que l'étape d'identification se termine.
* [Modèles de données — Vérification d'identité](https://docs.didit.me/fr/reference/data-models.md#vérification-d’identité) — schéma canonique champ par champ.
* [Modèles de données — Objet d'avertissement](https://docs.didit.me/fr/reference/data-models.md#objet-d’avertissement) — la structure de chaque entrée dans `warnings[]`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.