> ## 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 aggiornamento stato hit AML: conferma o chiudi

> Aggiorna lo stato degli hit AML come Match confermato, Falso positivo o Inconcludente, singolarmente o in blocco, tramite l'API di Didit.



Prompt per l'aggiornamento dello stato degli hit AML
        Copia il prompt negli appunti



      
      

\<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>



      
      

Incolla in

## Cosa faLo screening AML restituisce un elenco di **hit**, ovvero potenziali corrispondenze con liste delle sanzioni, database PEP, watchlist e notizie negative. Ogni hit ha un `review_status` (il suo esito), che parte come `Unreviewed` o `False Positive` in base al punteggio di corrispondenza. Questo endpoint permette al tuo team (o alla tua automazione) di registrare una decisione su ciascun hit, senza modificare la decisione complessiva della sessione.Trovi gli hit e i loro ID nella [decisione della sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md): nell'array `hits` del controllo AML, dove l'`id` di ogni hit è l'`hit_id` da passare qui.L'`id` di un hit è `hit_` seguito da 24 caratteri esadecimali e resta invariato quando il soggetto viene sottoposto di nuovo a screening. L'ID di un hit restituito nel formato precedente è comunque accettato; la risposta indica sempre l'hit con il suo `id` attuale.## Stati di revisione| `review_status` | Significato |
| - | - |
| `Unreviewed` | Valore predefinito per gli hit pari o superiori alla soglia di corrispondenza: richiede ancora una decisione. |
| `Confirmed Match` | Una corrispondenza reale con la persona o l'entità sottoposta a screening. |
| `False Positive` | Non si tratta della stessa entità. Valore predefinito per gli hit sotto la soglia di corrispondenza. |
| `Inconclusive` | Non è stato possibile determinarlo. |> [!NOTE]
>
> Le decisioni del revisore vengono **conservate durante i nuovi screening del monitoraggio continuo**: un hit contrassegnato come `False Positive` mantiene quello stato quando il provider ripete lo screening dell'entità.## Aggiornare un singolo 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"
  }'
```Per una sessione con più controlli AML (workflow a grafo), aggiungi `?node_id=feature_aml_1` all'URL oppure includi `"node_id"` nel corpo della richiesta per indirizzare un controllo specifico.## Aggiornare più hit insieme**`PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/`**Passa `hit_updates`, un elenco di coppie `{ hit_id, review_status }`. L'operazione è **tutto o niente**: se un `hit_id` non viene trovato, la richiesta restituisce `404` e nessun hit viene modificato.```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" }
    ]
  }'
```Una chiamata in blocco riuscita invia un unico webhook `data.updated` e registra una sola voce di attività che copre tutte le modifiche.## Cosa succede dopo un aggiornamento- **Webhook**: un evento `data.updated` viene attivato per la sessione.
- **Registro di audit**: la modifica viene registrata nel registro di revisione della sessione, con l'attore (chiave API o utente), ed è visibile nella cronologia delle attività della console.
- **Lo stato complessivo del passaggio AML non cambia**: modificare l'esito di un hit non modifica, di per sé, lo stato del passaggio AML né la decisione della sessione. Per cambiare lo stato del **passaggio** AML (`Approved` / `Declined` / `In Review`), usa [update-feature-status](https://docs.didit.me/it/sessions-api/update-feature-status.md). Per cambiare la decisione della **sessione**, usa [update-status](https://docs.didit.me/it/sessions-api/update-status.md).## Supporto KYC e KYBFunziona sia per le sessioni **Verifica degli utenti (KYC)** sia per quelle **Verifica aziendale (KYB)**: Didit risolve il `sessionId` in entrambi i casi. Per il KYB, lo screening AML viene eseguito sull'azienda e sulle sue persone chiave, e ogni controllo AML espone i propri hit.## AutorizzazioneRichiede il privilegio `write:sessions`, con una chiave API del client (`x-api-key`) oppure un'intestazione di autorizzazione dell'utente.## Errori| Stato | Significato |
| - | - |
| `400` | `review_status` non è un valore valido, `hit_id` è vuoto oppure `hit_updates` è vuoto. |
| `403` | Credenziali mancanti o non valide, oppure il chiamante non ha `write:sessions`. |
| `404` | Sessione non trovata, la sessione non ha un controllo AML oppure un `hit_id` non è stato trovato (in blocco: non viene modificato nulla). |## Contenuti correlati- [Aggiornare lo stato del passaggio](https://docs.didit.me/it/sessions-api/update-feature-status.md): modifica lo stato del passaggio AML (o di qualsiasi altro passaggio).
- [Aggiornare lo stato della sessione](https://docs.didit.me/it/sessions-api/update-status.md): modifica la decisione complessiva della sessione.
- [Recuperare la sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md): leggi gli `hits` AML e i loro ID.
- [Screening AML](https://docs.didit.me/it/standalone-apis/aml-screening.md): come funzionano lo screening e il punteggio.


## OpenAPI

````yaml it/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 di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/update-aml-hit-status/:
    patch:
      tags:
        - Sessions
      summary: Aggiorna lo stato di revisione di un riscontro AML
      description: >-
        Imposta lo stato di revisione di un **singolo hit AML** (una potenziale
        corrispondenza con sanzioni / PEP / watchlist / notizie negative)
        restituito dallo Screening AML, senza modificare la decisione
        complessiva della sessione. Identifica l'hit tramite il relativo
        `hit_id` (l'`id` di una voce nell'array `hits` del controllo AML — vedi
        la decisione della sessione). Un ID hit restituito nel formato
        precedente viene comunque accettato; la risposta identifica sempre l'hit
        tramite il suo `id` attuale.


        `review_status` è uno tra `Unreviewed`, `Confirmed Match`, `False
        Positive` o `Inconclusive`. Le decisioni del revisore vengono mantenute
        durante gli aggiornamenti del monitoraggio continuo, quindi un hit
        contrassegnato come `False Positive` rimane tale quando il provider
        esegue un nuovo screening.


        Una chiamata riuscita attiva un webhook `data.updated` e aggiunge una
        voce di attività (con attribuzione dell'autore) al registro di revisione
        della sessione. Per i workflow a grafo con controlli AML multipli, passa
        `node_id` per indirizzare un controllo specifico.


        Autenticati con la tua chiave API (`x-api-key`) o con un'intestazione di
        autorizzazione utente — entrambi devono disporre del privilegio
        `write:sessions`.
      operationId: patch_v3_session_update_aml_hit_status
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID della sessione di verifica. Accetta sia ID di sessione utente
            (KYC) sia ID di sessione aziendale (KYB): il servizio risolve l'ID
            per entrambi i tipi di sessione.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - in: query
          name: node_id
          required: false
          description: >-
            ID del nodo del grafo del workflow. Richiesto solo quando la
            sessione contiene più controlli AML (uno per nodo); omettere per le
            sessioni con un singolo controllo 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` dell'hit nell'array `hits` del controllo AML
                    (`hit_...`). Un id hit restituito nel formato precedente
                    viene ancora accettato.
                  example: hit_7c1e9a40b2d35f86e0a4c912
                review_status:
                  type: string
                  description: Il nuovo stato di revisione per il match.
                  enum:
                    - Unreviewed
                    - Confirmed Match
                    - False Positive
                    - Inconclusive
                  example: False Positive
                node_id:
                  type: string
                  description: >-
                    ID opzionale del nodo del grafo. Usalo (qui o come parametro
                    di query) quando la sessione include più controlli AML.
                  example: feature_aml_1
            example:
              hit_id: hit_7c1e9a40b2d35f86e0a4c912
              review_status: False Positive
      responses:
        '200':
          description: Stato di revisione del riscontro aggiornato.
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - hit_id
                  - review_status
                properties:
                  message:
                    type: string
                    description: Sempre `Hit status updated successfully`.
                  hit_id:
                    type: string
                    description: >-
                      L'`id` dell'hit aggiornato, così come restituito dalla
                      decisione della sessione, anche se la richiesta ha
                      indicato l'hit tramite un id nel formato precedente.
                  review_status:
                    type: string
                    enum:
                      - Unreviewed
                      - Confirmed Match
                      - False Positive
                      - Inconclusive
                    description: >-
                      Lo stato di revisione ora memorizzato per la
                      corrispondenza (hit).
              example:
                message: Hit status updated successfully
                hit_id: hit_7c1e9a40b2d35f86e0a4c912
                review_status: False Positive
        '400':
          description: >-
            Errore di validazione — `hit_id` vuoto o `review_status` non
            compreso tra i valori consentiti.
          content:
            application/json:
              example:
                review_status:
                  - '"Maybe" is not a valid choice.'
        '403':
          description: >-
            Credenziali mancanti o autorizzazioni insufficienti. L'assenza della
            chiave restituisce `403`; una chiave errata, revocata o scaduta
            restituisce `401`.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key mancante o non valida
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: La chiave API non dispone dell'autorizzazione write:sessions
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            La sessione non è stata trovata, la sessione non include alcun
            controllo AML (opzionalmente per il `node_id` specificato) oppure
            nessun riscontro corrisponde a `hit_id`.
          content:
            application/json:
              examples:
                No AML Check:
                  summary: La sessione non ha alcun controllo AML
                  value:
                    detail: The session does not have an AML check.
                Hit Not Found:
                  summary: hit_id sconosciuto
                  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 chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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