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

# Daftar Tinjauan Sesi API: Log Audit KYC

> Ambil setiap catatan tinjauan manual dan perubahan status untuk sesi verifikasi Didit. Log kepatuhan siap audit, bayar per panggilan, tanpa kontrak.



Prompt Daftar Peninjauan Sesi
        Salin prompt ke papan klip



      
      

\<pre>

\``Goal: Fetch the full review/activity feed for a Didit verification session — manual comments, status changes, KYC/KYB edits, file uploads, AML events, tags. Mirrors the timeline shown on the Console session-detail page.

Endpoint: GET https://verification.didit.me/v3/sessions/{session_id}/reviews/
Auth header: x-api-key: YOUR_API_KEY

Path param:
\- session_id (UUID, REQUIRED) — verification session UUID. Cross-application reads return 404.

curl:
curl -s 'https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/' \
-H "x-api-key: $DIDIT_API_KEY"

Response 200: JSON ARRAY (no envelope, no pagination — feed is bounded). Newest first. Each entry (ReviewItem) has:
\- uuid (UUID)
\- activity_type: "COMMENT" | "STATUS_UPDATED" | "KYC_DATA_UPDATED" | "POA_DATA_UPDATED" | "FILE_ADDED" | "FILE_REMOVED" | "AML_ONGOING_MATCH" | "AML_STATUS_UPDATED" | "AML_HIT_STATUS_UPDATED" | "KYB_DATA_UPDATED" | "KYB_DOCUMENT_UPLOADED" | "TAG_ADDED" | "TAG_REMOVED"
\- actor_email, actor_display, actor_type: "API_KEY" | "CONSOLE_USER" | "SYSTEM"
\- new_status, previous_status — only populated for STATUS_UPDATED/AML_STATUS_UPDATED. Values from the SESSION status enum: "Not Started" | "In Progress" | "Awaiting User" | "In Review" | "Approved" | "Declined" | "Resubmitted" | "Expired" | "Kyc Expired" | "Abandoned".
\- comment (string | null)
\- mentioned_emails (string[]) — extracted @mentions, only for COMMENT activities
\- previous_value, new_value, changed_fields — diff payload for *_DATA_UPDATED, FILE_*, TAG_* (opaque JSON, shape varies per activity_type)
\- metadata (object | null)
\- created_at (ISO 8601 UTC)
Empty array means the session has had no recorded activity yet.

When to use:
\- Render an audit trail mirror on your own dashboard.
\- Export the feed for compliance archives.
\- Poll for manual-review decisions when you can't consume webhooks (filter activity_type === "STATUS_UPDATED"; inspect new_status). Webhooks are still preferred — see /integration/webhooks.

Failure modes (envelope {"detail": "..."}):
\- 401 — missing/invalid `x-api-key` header. Re-fetch your application API key from the Auth API if needed.
\- 403 — API key valid but the application is not allowed (revoked, expired, or wrong app).
\- 404 — session UUID does not exist, has been deleted, or belongs to a different application.
\- 429 — rate-limited. Inspect Retry-After.

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

\</pre>



      
      

Tempel ke



## OpenAPI

````yaml id/openapi-25.json GET /v3/sessions/{session_id}/reviews/
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/sessions/{session_id}/reviews/:
    get:
      tags:
        - Sessions
      summary: Mencantumkan daftar peninjauan sesi dan log aktivitas
      description: >-
        Mengembalikan log audit / feed aktivitas untuk sesi Verifikasi Pengguna
        (KYC), terbaru terlebih dahulu, dalam amplop terpaginasi (`count` /
        `next` / `previous` / `results`, default 50 entri per halaman).


        Entri feed ditulis oleh setiap pihak yang berinteraksi dengan sesi ini:
        keputusan manual yang dibuat melalui `PATCH
        /v3/session/{session_id}/update-status/` (yang mencatat
        `previous_status` → `new_status`), aktivitas peninjau Console (komentar
        yang menyebut `@email`, pengeditan data KYC/POA, unggahan/penghapusan
        file, perubahan tag, tampilan halaman detail), kecocokan pemantauan AML
        berkelanjutan, dan catatan yang ditambahkan melalui `POST` pada jalur
        yang sama ini. Membaca feed ini merupakan padanan di sisi API dari panel
        **Activity** pada tampilan sesi Didit Console.


        Hanya sesi Verifikasi Pengguna (KYC) yang dapat diakses di sini; ID sesi
        Verifikasi Bisnis (KYB) mengembalikan `404`.
      operationId: list_session_reviews
      parameters:
        - name: session_id
          in: path
          required: true
          description: >-
            UUID dari sesi Verifikasi Pengguna (KYC). Harus dimiliki oleh
            aplikasi yang sama dengan kunci API — UUID lintas aplikasi, sesi
            yang dihapus, dan ID sesi Verifikasi Bisnis (KYB) semuanya
            mengembalikan `404`.
          schema:
            type: string
            format: uuid
            example: 8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d
        - name: limit
          in: query
          required: false
          description: Ukuran halaman. Nilai default-nya `50`.
          schema:
            type: integer
            default: 50
            example: 50
        - name: offset
          in: query
          required: false
          description: >-
            Jumlah entri yang dilewati dari awal feed (terurut). Default-nya
            `0`. URL `next` / `previous` dalam respons memuat nilai yang tepat
            untuk menyusuri feed.
          schema:
            type: integer
            default: 0
            example: 0
        - name: ordering
          in: query
          required: false
          description: >-
            Urutan pengurutan. Feed data secara default menampilkan yang terbaru
            terlebih dahulu (`-created_at`); teruskan `created_at` untuk
            membacanya dari yang terlama terlebih dahulu. Nilai yang tidak
            dikenal diabaikan secara diam-diam (urutan default digunakan); nama
            kolom serializer lainnya juga diterima.
          schema:
            type: string
            default: '-created_at'
            example: created_at
      responses:
        '200':
          description: >-
            Feed aktivitas berpaginasi, secara default diurutkan dari yang
            terbaru. `count` adalah jumlah total entri; `next` / `previous`
            adalah URL halaman siap pakai (`null` di kedua ujung). `count`
            bernilai `0` dengan `results` kosong berarti belum ada aktivitas
            yang dicatat.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: Jumlah total entri feed untuk sesi ini (di semua halaman).
                    example: 3
                  next:
                    type: string
                    nullable: true
                    description: URL halaman berikutnya, atau `null` pada halaman terakhir.
                    example: null
                  previous:
                    type: string
                    nullable: true
                    description: URL halaman sebelumnya, atau `null` pada halaman pertama.
                    example: null
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/ReviewItem'
                    description: Entri feed untuk halaman ini.
              examples:
                DecisionTrail:
                  summary: Persetujuan manual ditambah catatan yang ditambahkan via API
                  value:
                    count: 3
                    next: null
                    previous: null
                    results:
                      - uuid: de0561bc-5583-4409-9171-1a31a4c8a5f4
                        activity_type: STATUS_UPDATED
                        actor_display: API Client
                        actor_email: null
                        actor_type: API_KEY
                        new_status: Approved
                        previous_status: In Review
                        comment: Document re-checked manually; address matches.
                        mentioned_emails: []
                        previous_value:
                          status: In Review
                        new_value:
                          status: Approved
                        changed_fields:
                          - status
                        metadata: null
                        created_at: '2026-06-12T00:19:31.918735Z'
                      - uuid: 35370f58-5098-44ee-8a06-8c9af80b2455
                        activity_type: STATUS_UPDATED
                        actor_display: Unknown
                        actor_email: null
                        actor_type: CONSOLE_USER
                        new_status: null
                        previous_status: null
                        comment: Note without status.
                        mentioned_emails: []
                        previous_value: null
                        new_value: null
                        changed_fields: []
                        metadata: null
                        created_at: '2026-06-12T00:18:44.504157Z'
                      - uuid: 00338f82-f1c5-4f57-8614-c49bb258af1a
                        activity_type: STATUS_UPDATED
                        actor_display: Unknown
                        actor_email: null
                        actor_type: CONSOLE_USER
                        new_status: In Review
                        previous_status: null
                        comment: Flagging for manual document re-check.
                        mentioned_emails: []
                        previous_value: null
                        new_value: null
                        changed_fields: []
                        metadata: null
                        created_at: '2026-06-12T00:18:44.466537Z'
                PaginatedFirstPage:
                  summary: Halaman pertama dengan limit=2 — next memuat URL kelanjutan
                  value:
                    count: 4
                    next: >-
                      https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/?limit=2&offset=2
                    previous: null
                    results:
                      - uuid: de0561bc-5583-4409-9171-1a31a4c8a5f4
                        activity_type: STATUS_UPDATED
                        actor_display: API Client
                        actor_email: null
                        actor_type: API_KEY
                        new_status: Approved
                        previous_status: In Review
                        comment: Document re-checked manually; address matches.
                        mentioned_emails: []
                        previous_value:
                          status: In Review
                        new_value:
                          status: Approved
                        changed_fields:
                          - status
                        metadata: null
                        created_at: '2026-06-12T00:19:31.918735Z'
                      - uuid: bd4e6227-bdd2-42b2-a726-1d12f785a457
                        activity_type: STATUS_UPDATED
                        actor_display: Unknown
                        actor_email: null
                        actor_type: CONSOLE_USER
                        new_status: null
                        previous_status: null
                        comment: null
                        mentioned_emails: []
                        previous_value: null
                        new_value: null
                        changed_fields: []
                        metadata: null
                        created_at: '2026-06-12T00:18:44.540238Z'
                Empty:
                  summary: Sesi yang belum memiliki aktivitas tercatat
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '403':
          description: >-
            `x-api-key` tidak ada, salah format, kedaluwarsa, atau dicabut.
            Autentikasi diperiksa sebelum pencarian sesi, sehingga kunci yang
            tidak ada mengembalikan `403` meskipun UUID sesi tidak ada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: You do not have permission to perform this action.
              examples:
                InvalidKey:
                  summary: Header x-api-key tidak ada atau tidak valid
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Tidak ada sesi Verifikasi Pengguna (KYC) dengan UUID ini yang
            terlihat oleh aplikasi Anda: UUID tidak ada, sesi telah dihapus,
            atau sesi tersebut milik aplikasi lain. ID sesi Verifikasi Bisnis
            (KYB) juga mengembalikan `404` di sini — feed ulasan hanya dapat
            diakses untuk sesi KYC.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Session not found.
              examples:
                NotFound:
                  summary: UUID sesi tidak dikenal, telah dihapus, atau lintas aplikasi
                  value:
                    detail: Session not found.
        '429':
          description: >-
            Batas laju terlampaui. Periksa header respons `Retry-After` dan
            `X-RateLimit-*`. Lihat [Pembatasan
            laju](/id/integration/rate-limiting).
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -s
            'https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/?limit=50'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.sessions.reviews.list(
                "8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d",
            ):
                print(item)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            for await (const item of
            didit.sessions.reviews.list("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"))
            {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.Reviews.ListAutoPaging(ctx, \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", didit.SessionsReviewsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            for (var item :
            client.sessions().reviews().list("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"))
            {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            foreach
            ($didit->sessions->reviews->list('8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d')
            as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            didit.sessions.reviews.list("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d").auto_paging_each
            do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            await foreach (var item in await
            client.Sessions.Reviews.ListAsync("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"))

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    ReviewItem:
      type: object
      description: >-
        Satu entri dalam umpan peninjauan / aktivitas sesi. Perubahan status
        memuat `previous_status`, `new_status`, `previous_value`, `new_value`,
        dan `changed_fields`; komentar memuat `comment` dan (untuk komentar
        Console) `mentioned_emails`; kolom selebihnya bernilai `null` atau
        kosong jika tidak berlaku untuk jenis aktivitas tersebut.
      properties:
        uuid:
          type: string
          format: uuid
          description: Pengenal unik entri feed ini.
          example: de0561bc-5583-4409-9171-1a31a4c8a5f4
        activity_type:
          type: string
          enum:
            - COMMENT
            - STATUS_UPDATED
            - KYC_DATA_UPDATED
            - POA_DATA_UPDATED
            - FILE_ADDED
            - FILE_REMOVED
            - AML_ONGOING_MATCH
            - AML_STATUS_UPDATED
            - AML_HIT_STATUS_UPDATED
            - KYB_DATA_UPDATED
            - KYB_DOCUMENT_UPLOADED
            - TAG_ADDED
            - TAG_REMOVED
            - FEATURE_OVERRIDE_PENDING
            - FEATURE_OVERRIDE_APPLIED
            - FEATURE_OVERRIDE_CANCELLED
          description: >-
            Jenis aktivitas yang dicatat oleh entri ini. Baris `STATUS_UPDATED`
            berasal dari keputusan manual (`PATCH
            /v3/session/{session_id}/update-status/`) dan dari entri yang
            ditambahkan melalui `POST …/reviews/` (yang secara default berjenis
            ini meskipun tidak ada status yang dicatat). Baris `COMMENT` berasal
            dari peninjau Console; tampilan halaman detail Console juga disimpan
            sebagai baris `COMMENT` yang ditandai dengan `metadata.system_event
            = "DETAIL_VIEWED"`. Jenis lainnya melacak pengeditan data, perubahan
            file, tag, dan aktivitas pemantauan AML. Baris STATUS_UPDATED juga
            ditulis oleh aktor sistem (misalnya Pemantauan AML Berkelanjutan
            dengan actor_type SYSTEM, dan pembaruan status fitur otomatis),
            bukan hanya oleh endpoint update-status dan entri peninjauan manual.
            `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED`, dan
            `FEATURE_OVERRIDE_CANCELLED` mencatat override status satu
            pemeriksaan (`PATCH
            /v3/session/{session_id}/features/{node_id}/update-status/`):
            diminta untuk menunggu alur selesai, diterapkan, atau dibatalkan.
            Entri tersebut membawa status pemeriksaan dalam `previous_value` /
            `new_value` (`{"status": ...}`), membiarkan `previous_status` dan
            `new_status` bernilai `null`, dan menyebutkan nama override dalam
            `metadata` (`feature_override_id`, `node_id`, `feature_model`,
            `forced`, `state`, `cancel_reason`). Entri untuk permintaan membawa
            `comment` peninjau; override yang diterapkan saat alur selesai
            dicatat dengan `actor_type` `SYSTEM`.
          example: STATUS_UPDATED
        actor_display:
          type: string
          description: >-
            Label pembuat yang mudah dibaca manusia, diselesaikan secara
            berurutan: nama lengkap aktor → pengidentifikasi akun Console →
            bagian lokal dari `actor_email` → `"API Client"` (untuk aktor
            `API_KEY`) → `"System"` (untuk aktor `SYSTEM`) → `"Unknown"`. Entri
            yang dibuat melalui `POST …/reviews/` selalu menampilkan `"Unknown"`
            karena endpoint tersebut tidak mencatat atribusi aktor.
          example: API Client
        actor_email:
          type: string
          nullable: true
          description: >-
            Email pengguna Console yang melakukan tindakan tersebut. `null`
            untuk aktor kunci API dan sistem.
          example: null
        actor_type:
          type: string
          enum:
            - API_KEY
            - CONSOLE_USER
            - SYSTEM
          description: >-
            Pihak yang melakukan tindakan: kunci API, pengguna Konsol, atau
            Didit sendiri (`SYSTEM`, misalnya Pemantauan AML Berkelanjutan).
            Entri yang dibuat melalui `POST …/reviews/` membawa nilai default
            `CONSOLE_USER` terlepas dari pemanggilnya.
          example: API_KEY
        new_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
          description: >-
            Status sesi yang dicatat oleh entri ini (untuk pembaruan status).
            `null` untuk komentar dan entri perubahan data.
          example: Approved
        previous_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
          description: >-
            Status sesi sebelum perubahan. Diisi pada entri `STATUS_UPDATED`
            yang ditulis oleh endpoint pembaruan status; `null` pada entri yang
            ditambahkan melalui `POST …/reviews/`. Juga diisi pada baris
            STATUS_UPDATED yang ditulis sistem.
          example: In Review
        comment:
          type: string
          nullable: true
          description: Catatan teks bebas yang dilampirkan pada entri, atau `null`.
          example: Document re-checked manually; address matches.
        mentioned_emails:
          type: array
          items:
            type: string
            format: email
          description: >-
            Pengguna Console yang disebut dengan `@email` dalam komentar. Selalu
            kosong untuk entri yang dibuat melalui API ini — pemrosesan sebutan
            adalah fitur khusus Console.
          example: []
        previous_value:
          type: object
          nullable: true
          description: >-
            Cuplikan data yang diubah sebelum tindakan, misalnya `{"status": "In
            Review"}` pada perubahan status. `null` jika tidak ada yang diubah.
          example:
            status: In Review
        new_value:
          type: object
          nullable: true
          description: >-
            Cuplikan data yang diubah setelah tindakan, misalnya `{"status":
            "Approved"}`. Bernilai `null` jika tidak ada yang diubah.
          example:
            status: Approved
        changed_fields:
          type: array
          items:
            type: string
          description: >-
            Nama kolom yang dimodifikasi oleh aktivitas ini (misalnya
            `["status"]`). Kosong untuk komentar dan entri yang ditambahkan
            melalui `POST …/reviews/`.
          example:
            - status
        metadata:
          type: object
          nullable: true
          description: >-
            Konteks tambahan untuk entri yang dibuat oleh sistem. Tampilan
            halaman detail Console memuat `{"system_event": "DETAIL_VIEWED",
            "detail_type": "verification"}` sehingga dapat difilter dari logika
            notifikasi. `COMMENT` yang diedit oleh penulisnya di Console memuat
            `edited_at`, waktu ISO 8601 dari pengeditan terakhir (`comment` dan
            `mentioned_emails` kemudian memuat teks yang diedit beserta
            mention-nya). `null` untuk entri biasa.
          example: null
        created_at:
          type: string
          format: date-time
          description: Waktu ketika entri ditulis, ISO 8601 UTC.
          example: '2026-06-12T00:19:31.918735Z'
  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.