> ## 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.

# API de mise à jour du statut AML : valider ou confirmer

> Marquez les correspondances AML comme confirmées, faux positifs ou non concluantes, individuellement ou en masse, directement via l'API Didit.



Prompt : mise à jour du statut d'un hit AML
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Set the review status (disposition) of AML screening hits on a Didit session — one hit, or many at once.

AML screening returns a list of HITS (potential sanction / PEP / watchlist / adverse-media matches). Each hit carries a review_status you can change to record your compliance decision. This does NOT change the overall session decision.

Two endpoints:

1\) Single hit
PATCH https://verification.didit.me/v3/session/{session_id}/update-aml-hit-status/
Body:
\- hit_id (string, required) — the "id" of the hit in the AML check's "hits" array (see GET /v3/session/{id}/decision/), for example "hit_7c1e9a40b2d35f86e0a4c912". A hit id returned in the earlier format is still accepted; the response always returns the current "id".
\- review_status (string, required) — one of "Unreviewed", "Confirmed Match", "False Positive", "Inconclusive".
\- node_id (string, optional) — graph node ID, only if the session has multiple AML checks.

2\) Bulk
PATCH https://verification.didit.me/v3/session/{session_id}/bulk-update-aml-hit-status/
Body:
\- hit_updates (array, required) — list of { "hit_id": "...", "review_status": "..." }.
\- node_id (string, optional).
All-or-nothing: if any hit_id is missing, returns 404 and nothing changes.

Authentication:
x-api-key (client API key) or a user-auth token. Privilege: write:sessions.

Status values:
\- Unreviewed — default for hits at/above the match threshold; still needs review.
\- Confirmed Match — a true match.
\- False Positive — not the same entity; default for hits below the match threshold.
\- Inconclusive — could not determine.

Reviewer decisions are PRESERVED across ongoing-monitoring re-screens.

curl — clear one hit as a false positive:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "False Positive" }'

curl — bulk:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/bulk-update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_updates": [ { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" }, { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" } ] }'

Side effects:
\- Fires a data.updated webhook.
\- Appends an activity entry (with actor attribution) to the session review trail.

Failure modes:
\- 400 — review_status not a valid value, hit_id empty, or hit_updates empty.
\- 403 — missing credentials (a wrong, revoked or expired key gets 401), or the caller lacks write:sessions.
\- 404 — session not found, no AML check, or a hit_id was not found.

Related: to change the overall AML step status (Approved/Declined/In Review) use PATCH /v3/session/{id}/features/{node_id}/update-status/ (see /sessions-api/update-feature-status).

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Coller dans

## Ce que fait cet endpointLe filtrage AML renvoie une liste de **hits** : des correspondances potentielles avec des listes de sanctions, des bases de PEP, des listes de surveillance et de la presse négative. Chaque hit possède un `review_status` (sa décision) qui commence à `Unreviewed` ou à `False Positive`, selon le score de correspondance. Cet endpoint permet à votre équipe (ou à votre automatisation) d'enregistrer une décision sur chaque hit, sans modifier la décision globale de la session.Vous trouverez les hits et leurs identifiants dans la [décision de la session](https://docs.didit.me/fr/sessions-api/retrieve-session.md) : le tableau `hits` de la vérification AML, où le `id` de chaque hit correspond au `hit_id` que vous transmettez ici.L'`id` d'un hit est constitué de `hit_` suivi de 24 caractères hexadécimaux. Il reste le même lorsque la personne est de nouveau contrôlée. Un identifiant de hit au format précédent est toujours accepté : la réponse indique toujours le hit par son `id` actuel.## Statuts de revue| `review_status` | Signification |
| - | - |
| `Unreviewed` | Valeur par défaut pour les hits égaux ou supérieurs au seuil de correspondance : une décision reste à prendre. |
| `Confirmed Match` | Une véritable correspondance avec la personne ou l'entité contrôlée. |
| `False Positive` | Il ne s'agit pas de la même entité. Valeur par défaut pour les hits inférieurs au seuil de correspondance. |
| `Inconclusive` | Impossible à déterminer. |> [!NOTE]
>
> Les décisions des réviseurs sont **conservées lors des nouveaux filtrages de la surveillance continue** : un hit que vous marquez `False Positive` conserve ce statut lorsque le fournisseur relance le filtrage de l'entité.## Mettre à jour un seul hit**`PATCH /v3/session/{sessionId}/update-aml-hit-status/`**```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
    "review_status": "False Positive"
  }'
```Pour une session comportant plusieurs vérifications AML (workflows en graphe), ajoutez `?node_id=feature_aml_1` à l'URL ou incluez `"node_id"` dans le corps de la requête pour cibler une vérification précise.## Mettre à jour plusieurs hits en une fois**`PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/`**Transmettez `hit_updates`, une liste de paires `{ hit_id, review_status }`. L'opération est **tout ou rien** : si un `hit_id` est introuvable, la requête renvoie `404` et aucun hit n'est modifié.```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../bulk-update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_updates": [
      { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" },
      { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" }
    ]
  }'
```Un appel groupé réussi déclenche un seul webhook `data.updated` et enregistre une seule entrée d'activité couvrant l'ensemble des modifications.## Ce qui se passe après une mise à jour- **Webhook** : un événement `data.updated` est déclenché sur la session.
- **Piste d’audit** : la modification est enregistrée dans la piste de revue de la session, avec l'auteur (clé API ou utilisateur), visible dans la chronologie d'activité de la console.
- **Le statut global de l'étape AML ne change pas** : modifier la décision d'un hit ne modifie pas, à lui seul, le statut de l'étape AML ni la décision de la session. Pour changer le statut de l'**étape** AML (`Approved`, `Declined` ou `In Review`), utilisez [update-feature-status](https://docs.didit.me/fr/sessions-api/update-feature-status.md). Pour changer la décision de la **session**, utilisez [update-status](https://docs.didit.me/fr/sessions-api/update-status.md).## Prise en charge KYC et KYBCet endpoint fonctionne pour les sessions **Vérification des utilisateurs (KYC)** et **Vérification d'entreprise (KYB)** : Didit retrouve le `sessionId` dans les deux cas. Pour le KYB, le filtrage AML porte sur l'entreprise et sur ses personnes clés ; chaque vérification AML expose ses propres hits.## AutorisationRequiert le privilège `write:sessions`, avec une clé API client (`x-api-key`) ou un en-tête d'autorisation utilisateur.## Erreurs| Statut | Signification |
| - | - |
| `400` | `review_status` n'est pas une valeur valide, `hit_id` est vide ou `hit_updates` est vide. |
| `403` | Identifiants absents ou invalides, ou l'appelant ne dispose pas de `write:sessions`. |
| `404` | Session introuvable, session sans vérification AML, ou `hit_id` introuvable (en groupé : aucune modification n'est effectuée). |## Liens connexes- [Mettre à jour le statut d'une fonctionnalité](https://docs.didit.me/fr/sessions-api/update-feature-status.md) : modifier le statut de l'**étape** AML (ou de toute autre étape).
- [Mettre à jour le statut de la session](https://docs.didit.me/fr/sessions-api/update-status.md) : modifier la décision globale de la session.
- [Récupérer la session](https://docs.didit.me/fr/sessions-api/retrieve-session.md) : lire les `hits` AML et leurs identifiants.
- [Filtrage AML](https://docs.didit.me/fr/standalone-apis/aml-screening.md) : fonctionnement du filtrage et de la notation.


## OpenAPI

````yaml fr/openapi-25.json PATCH /v3/session/{sessionId}/update-aml-hit-status/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/update-aml-hit-status/:
    patch:
      tags:
        - Sessions
      summary: Mettre à jour le statut d'examen d'une alerte AML
      description: >-
        Définissez le statut d'examen d'un **résultat AML individuel** (une
        correspondance potentielle avec des sanctions / PEP / listes de
        surveillance / presse négative) renvoyé par le filtrage AML, sans
        modifier la décision globale de la session. Identifiez le résultat par
        son `hit_id` (le champ `id` d'une entrée dans le tableau `hits` du
        contrôle AML — voir la décision de la session). Un identifiant de
        résultat renvoyé sous l'ancien format est toujours accepté ; la réponse
        nomme toujours le résultat par son `id` actuel.


        `review_status` prend l'une des valeurs suivantes : `Unreviewed`,
        `Confirmed Match`, `False Positive` ou `Inconclusive`. Les décisions du
        réviseur sont conservées lors des mises à jour de la surveillance
        continue ; ainsi, un résultat marqué comme `False Positive` reste tel
        quel lorsque le fournisseur effectue un nouveau filtrage.


        Un appel réussi déclenche un webhook `data.updated` et ajoute une entrée
        d'activité (avec attribution de l'auteur) au journal d'examen de la
        session. Pour les workflows de type graphe comportant plusieurs
        contrôles AML, transmettez `node_id` pour cibler un contrôle spécifique.


        Authentifiez-vous avec votre clé API (`x-api-key`) ou un en-tête
        d'autorisation utilisateur — l'un ou l'autre doit comporter le privilège
        `write:sessions`.
      operationId: patch_v3_session_update_aml_hit_status
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID de la session de vérification. Accepte les identifiants de
            session d'utilisateur (KYC) et d'entreprise (KYB) — le service
            résout l'identifiant pour les deux types de session.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - in: query
          name: node_id
          required: false
          description: >-
            ID de nœud du graphe de workflow. Requis uniquement lorsque la
            session comporte plusieurs contrôles AML (un par nœud) ; omettez-le
            pour les sessions avec un seul contrôle AML.
          schema:
            type: string
            example: feature_aml_1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - hit_id
                - review_status
              properties:
                hit_id:
                  type: string
                  description: >-
                    L'`id` du résultat dans le tableau `hits` du contrôle AML
                    (`hit_...`). Un identifiant de résultat renvoyé dans
                    l'ancien format est toujours accepté.
                  example: hit_7c1e9a40b2d35f86e0a4c912
                review_status:
                  type: string
                  description: Le nouveau statut d'examen pour la correspondance.
                  enum:
                    - Unreviewed
                    - Confirmed Match
                    - False Positive
                    - Inconclusive
                  example: False Positive
                node_id:
                  type: string
                  description: >-
                    Identifiant de nœud de graphe optionnel. Utilisez-le (ici ou
                    comme paramètre de requête) lorsque la session comporte
                    plusieurs vérifications AML.
                  example: feature_aml_1
            example:
              hit_id: hit_7c1e9a40b2d35f86e0a4c912
              review_status: False Positive
      responses:
        '200':
          description: Statut d'examen des correspondances mis à jour.
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - hit_id
                  - review_status
                properties:
                  message:
                    type: string
                    description: Toujours `Hit status updated successfully`.
                  hit_id:
                    type: string
                    description: >-
                      L'`id` du résultat mis à jour, tel que renvoyé par la
                      décision de session, y compris lorsque la requête a
                      désigné le résultat par un identifiant à l'ancien format.
                  review_status:
                    type: string
                    enum:
                      - Unreviewed
                      - Confirmed Match
                      - False Positive
                      - Inconclusive
                    description: >-
                      Le statut d'examen désormais enregistré sur la
                      correspondance.
              example:
                message: Hit status updated successfully
                hit_id: hit_7c1e9a40b2d35f86e0a4c912
                review_status: False Positive
        '400':
          description: >-
            Erreur de validation — `hit_id` vide ou `review_status` ne fait pas
            partie des valeurs autorisées.
          content:
            application/json:
              example:
                review_status:
                  - '"Maybe" is not a valid choice.'
        '403':
          description: >-
            Identifiants manquants ou autorisations insuffisantes. Une clé
            manquante renvoie `403` ; une clé erronée, révoquée ou expirée
            renvoie `401`.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key manquant ou invalide
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: La clé API ne dispose pas de l'autorisation write:sessions
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            La session n'a pas été trouvée, la session ne comporte aucune
            vérification AML (le cas échéant pour le `node_id` indiqué), ou
            aucun résultat ne correspond à `hit_id`.
          content:
            application/json:
              examples:
                No AML Check:
                  summary: La session n'a aucune vérification AML
                  value:
                    detail: The session does not have an AML check.
                Hit Not Found:
                  summary: hit_id inconnu
                  value:
                    detail: >-
                      Hit with ID 'hit_9d2e7f41c0a8b3e65d1f0c47' not found in
                      the AML check.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X PATCH \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-hit-status/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "hit_id": "abc123",
                "review_status": "False Positive"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.update_aml_hit_status(
                "11111111-2222-3333-4444-555555555555",
                hit_id="hit_7c1e9a40b2d35f86e0a4c912",
                review_status="False Positive",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.sessions.updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            {
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLHitStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLHitStatusParams{\n\tHitID:        \"hit_7c1e9a40b2d35f86e0a4c912\",\n\tReviewStatus: \"False Positive\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsUpdateAmlHitStatusParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            SessionsUpdateAmlHitStatusParams.builder()
                    .hitId("hit_7c1e9a40b2d35f86e0a4c912")
                    .reviewStatus(SessionsUpdateAmlHitStatusParams.ReviewStatus.of("False Positive"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->sessions->updateAmlHitStatus('11111111-2222-3333-4444-555555555555',
            [
                'hit_id' => 'hit_7c1e9a40b2d35f86e0a4c912',
                'review_status' => 'False Positive',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.sessions.update_aml_hit_status(
              "11111111-2222-3333-4444-555555555555",
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Sessions.UpdateAmlHitStatusAsync("11111111-2222-3333-4444-555555555555",
            new SessionsUpdateAmlHitStatusParams

            {
                HitId = "hit_7c1e9a40b2d35f86e0a4c912",
                ReviewStatus = "False Positive",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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