> ## 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 Update Status Pemeriksaan AML

> Atur status pemeriksaan AML sesi, misalnya Disetujui setelah hasil cocok dibersihkan, tanpa mengubah keputusan sesi secara keseluruhan di Didit.



Prompt API untuk Memperbarui Status Pemeriksaan AML
        Salin prompt ke papan klip



      
      

\<pre>

\`Set the status of the AML screening check of a Didit verification session through the API.

Endpoint:
PATCH https://verification.didit.me/v3/session/{session_id}/update-aml-status/

Authentication:
Send my Didit API key in the x-api-key header. A scoped key needs decisions: write.

Goal:
\- Record my compliance decision on a session's AML check as a whole (the status of an aml_screenings[] entry in the session decision), for example Approved after my team cleared every hit.

Request body (JSON):
\- status (required): "Approved", "Declined", "In Review", "Not Finished" or "Resub Requested".
\- node_id (optional): the workflow node ID of the AML check when the session ran several AML steps. It can also be sent as the node_id query parameter. Without it the most recent AML check is updated.

Behavior:
\- Works for user (KYC) and business (KYB) session IDs.
\- Only the AML check changes. The session status is not recomputed: use PATCH /v3/session/{session_id}/update-status/ to change the session decision, and PATCH /v3/session/{session_id}/update-aml-hit-status/ to mark individual hits.
\- When the status changes, Didit adds an AML_STATUS_UPDATED activity entry and sends a data.updated webhook.
\- Sending the status the check already has returns 200 and changes nothing (no activity entry, no webhook).

Example call:
curl -X PATCH "https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-status/" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "Approved"}'

What to read from the response:
\- status: the AML check status now.
\- previous_status: the status before the call (equal to status when nothing changed).

Failure modes:
\- 400: status missing or not one of the allowed values.
\- 401: the API key has expired.
\- 403: missing key (a wrong, revoked or expired key gets 401), a key of another application, a scoped key without decisions: write, or a request from outside the key's IP allowlist.
\- 404: the session does not exist, was deleted, or is outside a scoped key's limits, or it has no AML check (for that node_id). This is checked before the body, so it wins over a 400.

Side effects: changes the AML check status, adds an activity entry and sends a data.updated webhook (only when the status changed).

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

Untuk memutuskan masing-masing kecocokan alih-alih seluruh pemeriksaan, gunakan [Perbarui status temuan AML](https://docs.didit.me/id/sessions-api/update-aml-hit-status.md). Untuk mengetahui cara hasil dan status skrining dihasilkan, lihat [Skrining AML](https://docs.didit.me/id/core-technology/aml-screening/overview.md).


## OpenAPI

````yaml id/openapi-25.json PATCH /v3/session/{sessionId}/update-aml-status/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/update-aml-status/:
    patch:
      tags:
        - Sessions
      summary: Perbarui status pemeriksaan AML
      description: >-
        Tetapkan status pemeriksaan Skrining AML sesi secara keseluruhan
        (`status` dari entri `aml_screenings[]` dalam keputusan sesi), misalnya
        `Approved` setelah tim Anda menyelesaikan setiap hit. Berfungsi untuk ID
        sesi KYC dan KYB; teruskan `node_id` (parameter kueri atau kolom body)
        jika sesi menjalankan lebih dari satu langkah AML, jika tidak
        pemeriksaan AML terbaru yang akan diperbarui. Saat status benar-benar
        berubah, entri aktivitas `AML_STATUS_UPDATED` dicatat dan
        [webhook](https://docs.didit.me/id/integration/webhooks) `data.updated`
        dikirim; mengirimkan status saat ini mengembalikan `200` dan tidak
        mengubah apa pun. Status sesi tidak dihitung ulang: gunakan `PATCH
        /v3/session/{sessionId}/update-status/` untuk keputusan sesi dan `PATCH
        /v3/session/{sessionId}/update-aml-hit-status/` untuk hit tunggal. Kunci
        API dengan cakupan memerlukan `decisions: write`.
      operationId: patch_v3_session_update_aml_status
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID sesi verifikasi (`session_id` yang dikembalikan oleh `POST
            /v3/session/`). Menerima ID sesi Verifikasi Pengguna (KYC) dan
            Verifikasi Bisnis (KYB): server mencari ID tersebut di kedua jenis
            sesi. Harus berupa UUID dengan format yang benar; nilai yang salah
            format tidak cocok dengan rute dan mengembalikan HTML `404`.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: node_id
          in: query
          required: false
          description: >-
            ID node graf alur kerja dari pemeriksaan AML yang akan diperbarui.
            Hanya diperlukan jika sesi menjalankan lebih dari satu langkah AML.
            Memiliki prioritas lebih tinggi daripada `node_id` di dalam badan
            permintaan.
          schema:
            type: string
            example: feature_aml_1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  type: string
                  enum:
                    - Not Finished
                    - Approved
                    - Declined
                    - In Review
                    - Resub Requested
                  description: Status baru dari pemeriksaan AML.
                  example: Approved
                node_id:
                  type: string
                  description: >-
                    ID node graf alur kerja dari pemeriksaan AML, sebagai
                    alternatif untuk parameter kueri.
                  example: feature_aml_1
            example:
              status: Approved
      responses:
        '200':
          description: >-
            Status pemeriksaan AML ditetapkan (atau tidak berubah jika sudah
            memiliki nilai ini).
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - status
                  - previous_status
                properties:
                  message:
                    type: string
                    description: Selalu `AML status updated successfully`.
                  status:
                    type: string
                    enum:
                      - Not Finished
                      - Approved
                      - Declined
                      - In Review
                      - Resub Requested
                    description: Status pemeriksaan AML saat ini.
                  previous_status:
                    type: string
                    enum:
                      - Not Finished
                      - Approved
                      - Declined
                      - In Review
                      - Resub Requested
                    description: >-
                      Status sebelum pemanggilan. Sama dengan `status` jika
                      tidak ada yang berubah.
              example:
                message: AML status updated successfully
                status: Approved
                previous_status: In Review
        '400':
          description: >-
            Kesalahan validasi: `status` tidak ada atau bukan salah satu dari
            nilai yang diizinkan. Pencarian pemeriksaan AML dijalankan terlebih
            dahulu, sehingga sesi tanpa pemeriksaan AML mengembalikan `404`
            bahkan dengan isi permintaan yang tidak valid.
          content:
            application/json:
              examples:
                Missing status:
                  summary: Isi kosong atau tanpa status
                  value:
                    status:
                      - This field is required.
                Invalid status:
                  summary: status tidak ada di dalam enum
                  value:
                    status:
                      - '"Cleared" is not a valid choice.'
        '401':
          description: >-
            Kunci API dengan cakupan terbatas telah kedaluwarsa. Ini
            satu-satunya kasus yang mengembalikan `401`: kunci yang hilang,
            tidak valid, atau dicabut mengembalikan `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Pesan kesalahan yang mudah dibaca manusia.
              examples:
                Expired key:
                  summary: Tanggal kedaluwarsa kunci telah lewat
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Kegagalan autentikasi atau otorisasi. Kunci yang hilang
            mengembalikan `403`, begitu juga dengan kunci dari aplikasi lain,
            kunci dengan cakupan tanpa izin yang dibutuhkan endpoint ini, dan
            permintaan dari luar daftar izin IP kunci tersebut; kunci yang
            salah, dicabut, atau kedaluwarsa mengembalikan `401`. Bedakan
            kegagalan tersebut berdasarkan `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Pesan kesalahan yang mudah dibaca manusia.
              examples:
                Missing or invalid credentials:
                  summary: Tidak ada header x-api-key, atau kunci gagal divalidasi
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: Kunci valid milik aplikasi yang berbeda dari sesi
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'Kunci ber-scope tidak memiliki decisions: write'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: Permintaan dari luar daftar izin IP kunci
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            Sesi tidak ada, telah dihapus, atau berada di luar batas kunci
            dengan cakupan terbatas, atau tidak memiliki pemeriksaan AML (untuk
            `node_id` yang diberikan). Pencarian sesi berjalan sebelum
            pemeriksaan kredensial, sehingga `sessionId` yang tidak dikenal
            mengembalikan `404` bahkan tanpa kunci yang valid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Pesan kesalahan yang mudah dibaca manusia.
              examples:
                Unknown session:
                  summary: Tidak ada sesi dengan ID ini, atau telah dihapus
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    Sesi berada di luar batas kunci dengan cakupan terbatas
                    (juga dikembalikan untuk sesi yang baru saja dihapus)
                  value:
                    detail: Session not found.
                No AML check:
                  summary: Sesi tidak pernah menjalankan langkah AML
                  value:
                    detail: The session does not have an AML check.
                No AML check for node:
                  summary: >-
                    node_id tidak cocok dengan pemeriksaan AML pada sesi
                    tersebut
                  value:
                    detail: >-
                      The session does not have an AML check for node
                      'feature_aml_2'.
        '429':
          description: >-
            Batas laju terlampaui: 300 permintaan penulisan (POST, PATCH,
            DELETE) per menit per kunci API. Tunggu selama `Retry-After` detik
            sebelum mencoba lagi; header `X-RateLimit-*` menunjukkan anggaran
            tersebut.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Pesan kesalahan yang mudah dibaca manusia.
              examples:
                Rate limited:
                  summary: Anggaran untuk menit saat ini habis
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: Detik untuk menunggu sebelum mencoba lagi.
              schema:
                type: integer
                minimum: 1
                example: 30
      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-status/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"status": "Approved"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.update_aml_status(
                "11111111-2222-3333-4444-555555555555",
                status="Approved",
            )
            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.updateAmlStatus("11111111-2222-3333-4444-555555555555",
            {
              status: "Approved",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLStatusParams{\n\tStatus: \"Approved\",\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.SessionsUpdateAmlStatusParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().updateAmlStatus("11111111-2222-3333-4444-555555555555",
            SessionsUpdateAmlStatusParams.builder()
                    .status(SessionsUpdateAmlStatusParams.Status.of("Approved"))
                    .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->updateAmlStatus('11111111-2222-3333-4444-555555555555',
            [
                'status' => 'Approved',
            ]);

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

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

            result = didit.sessions.update_aml_status(
              "11111111-2222-3333-4444-555555555555",
              status: "Approved"
            )
            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.UpdateAmlStatusAsync("11111111-2222-3333-4444-555555555555",
            new SessionsUpdateAmlStatusParams

            {
                Status = "Approved",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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