> ## 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 Daftar Override Fitur: Riwayat Status Langkah

> Daftar semua override status satu langkah pada sesi di Didit, terbaru dulu: diterapkan, menunggu pengguna menyelesaikan alur, atau dibatalkan.



Prompt Daftar Override Fitur
        Salin prompt ke papan klip



      
      

\<pre>

\`List the check (feature) status overrides of a Didit session: the ones that applied, the ones still waiting for the person to finish the flow, and the cancelled ones.

Endpoint:
GET https://verification.didit.me/v3/session/{session_id}/features/overrides/

Authentication:
x-api-key (client API key) or a user-auth token. Privilege: read:sessions. A scoped API key needs read access to decisions.

Path parameter:
\- session_id (UUID): KYC or KYB; Didit resolves it against both session types.

Response (200, not paginated):
\- session_id (UUID).
\- person_in_flow (boolean): true while the person is still in the flow, so a new override with defer_until_flow_finishes=true would wait.
\- flow_finished_at (date-time or null): when the person last finished the flow. null while they are still in it (a resubmission included) and when the session closed before they finished.
\- overrides (array, newest first). Each override:
\- id (UUID): pass it to the cancel endpoint.
\- node_id, feature_type ("" when the request passed none), feature_model (for example "KYC", "Face", "AML").
\- previous_status, new_status.
\- state: "applied", "pending_until_flow_finishes" or "cancelled".
\- forced (boolean): true when it applied at once while the person was still in the flow.
\- reason: the comment sent with the request, or null.
\- requested_by: { email, name, type } with type "CONSOLE_USER", "API_KEY" or "SYSTEM"; or null.
\- requested_at, applied_at (null while waiting or once cancelled), cancelled_at.
\- cancel_reason: null, "cancelled_by_reviewer", "replaced", "check_changed" or "session_closed".

curl example:
curl https://verification.didit.me/v3/session/<SESSION_ID>/features/overrides/ \
-H "x-api-key: <API_KEY>"

Failure modes:
\- 401: the scoped API key has expired.
\- 403: missing credentials (a wrong, revoked or expired key gets 401), the caller lacks read:sessions, a scoped key lacks decisions read, or the session belongs to another application ({ "detail": "You do not have permission to perform this action." }).
\- 404: { "detail": "Not found." } when no session with this session_id exists.

Related: create overrides with PATCH /v3/session/{session_id}/features/{node_id}/update-status/ (see /sessions-api/update-feature-status); cancel a waiting one with POST /v3/session/{session_id}/features/overrides/{override_id}/cancel/ (see /sessions-api/cancel-feature-override).

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

\</pre>



      
      

Tempel ke

Setiap panggilan ke [Perbarui Status Fitur](https://docs.didit.me/id/sessions-api/update-feature-status.md) mencatat override status satu pemeriksaan.
Endpoint ini mencantumkan semua override tersebut untuk satu sesi, dari yang terbaru hingga yang terlama, tanpa paginasi.## Status override| `state` | Artinya |
| - | - |
| `applied` | Pemeriksaan sudah memiliki status baru. `applied_at` menunjukkan kapan. |
| `pending_until_flow_finishes` | Override menunggu dan baru diterapkan saat pengguna akhir menyelesaikan alur. |
| `cancelled` | Override menunggu dan tidak pernah diterapkan. `cancel_reason` menunjukkan alasannya. |Override dengan `forced: true` langsung diterapkan saat pengguna akhir masih berada dalam alur.## Mengapa override yang menunggu dibatalkan| `cancel_reason` | Yang terjadi |
| - | - |
| `cancelled_by_reviewer` | Peninjau membatalkannya dengan [Batalkan Override Fitur](https://docs.didit.me/id/sessions-api/cancel-feature-override.md). |
| `replaced` | Override yang lebih baru pada pemeriksaan yang sama menggantikannya. |
| `check_changed` | Pengguna akhir mengulang pemeriksaan sebelum menyelesaikan alur, sehingga hasil yang Anda override sudah tidak ada. |
| `session_closed` | Sesi keluar dari alur sebelum pengguna akhir menyelesaikannya: ditinggalkan, kedaluwarsa, atau diputuskan di tengah alur. |## Posisi pengguna akhir dalam alur`person_in_flow` bernilai `true` selama sesi berstatus `Not Started`, `In Progress` atau `Resubmitted` dan pengguna akhir belum menyelesaikan alur.
Selama bernilai `true`, override baru dengan `defer_until_flow_finishes: true` akan menunggu.
`flow_finished_at` adalah waktu terakhir pengguna akhir menyelesaikan alur.
Nilainya `null` selama mereka masih berada dalam alur, termasuk saat pengiriman ulang, dan ketika sesi ditutup sebelum mereka menyelesaikan alur.## Terkait- [Perbarui Status Fitur](https://docs.didit.me/id/sessions-api/update-feature-status.md): override status satu langkah, sekarang atau setelah alur selesai.
- [Batalkan Override Fitur](https://docs.didit.me/id/sessions-api/cancel-feature-override.md): hentikan override yang menunggu agar tidak diterapkan.
- [Ambil Sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md): `node_id` dan status terkini setiap fitur.


## OpenAPI

````yaml id/openapi-25.json GET /v3/session/{sessionId}/features/overrides/
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}/features/overrides/:
    get:
      tags:
        - Sessions
      summary: Daftar penimpaan pemeriksaan sesi
      description: >-
        Setiap penggantian status fitur (langkah) individu pada sesi Verifikasi
        Pengguna (KYC) atau Verifikasi Bisnis (KYB), yang terbaru terlebih
        dahulu dan tidak dipaginasi: yang diterapkan, yang menunggu orang
        tersebut menyelesaikan alur (`pending_until_flow_finishes`), dan yang
        dibatalkan, masing-masing memuat pihak yang meminta, alasannya, dan
        apakah itu diterapkan saat orang tersebut masih berada di dalam alur
        (`forced`).


        `person_in_flow` memberi tahu Anda apakah penggantian baru dengan
        `defer_until_flow_finishes: true` akan menunggu. `flow_finished_at`
        adalah waktu saat orang tersebut terakhir kali menyelesaikan alur;
        bernilai `null` selama mereka masih berada di dalamnya (termasuk
        pengiriman ulang) dan ketika sesi ditutup sebelum mereka selesai.


        Memerlukan hak istimewa `read:sessions`; kunci API dengan cakupan
        terbatas memerlukan akses baca ke keputusan.
      operationId: get_v3_session_feature_overrides
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID sesi verifikasi. Menerima ID sesi pengguna (KYC) dan bisnis
            (KYB).
          schema:
            type: string
            format: uuid
            example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
      responses:
        '200':
          description: Penimpaan pemeriksaan sesi, yang terbaru terlebih dahulu.
          content:
            application/json:
              schema:
                type: object
                required:
                  - session_id
                  - person_in_flow
                  - flow_finished_at
                  - overrides
                properties:
                  session_id:
                    type: string
                    format: uuid
                    example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  person_in_flow:
                    type: boolean
                    description: >-
                      Apakah orang tersebut masih berada di dalam alur, sehingga
                      override baru dengan `defer_until_flow_finishes: true`
                      akan menunggu.
                    example: true
                  flow_finished_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Waktu pengguna terakhir menyelesaikan alur. `null` selama
                      mereka masih berada di dalamnya (termasuk pengiriman
                      ulang) dan saat sesi ditutup sebelum mereka selesai
                      (ditinggalkan, kedaluwarsa, atau diputuskan di tengah
                      alur).
                    example: null
                  overrides:
                    type: array
                    description: >-
                      Setiap penggantian pada sesi, yang terbaru terlebih
                      dahulu.
                    items:
                      $ref: '#/components/schemas/FeatureStatusOverride'
              examples:
                Overrides:
                  summary: Satu penimpaan menunggu, satu diterapkan
                  value:
                    session_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                    person_in_flow: true
                    flow_finished_at: null
                    overrides:
                      - id: 9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3
                        node_id: feature_liveness_1
                        feature_type: ''
                        feature_model: Face
                        previous_status: Declined
                        new_status: Approved
                        state: pending_until_flow_finishes
                        forced: false
                        reason: Liveness retried with a reviewer present.
                        requested_by:
                          email: reviewer@example.com
                          name: Alex Reviewer
                          type: CONSOLE_USER
                        requested_at: '2026-10-13T09:15:00Z'
                        applied_at: null
                        cancelled_at: null
                        cancel_reason: null
                      - id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                        node_id: feature_ocr_1
                        feature_type: ''
                        feature_model: KYC
                        previous_status: In Review
                        new_status: Approved
                        state: applied
                        forced: true
                        reason: Document manually verified by compliance.
                        requested_by:
                          email: reviewer@example.com
                          name: Alex Reviewer
                          type: CONSOLE_USER
                        requested_at: '2026-10-13T09:15:00Z'
                        applied_at: '2026-10-13T09:15:00Z'
                        cancelled_at: null
                        cancel_reason: null
        '401':
          description: Kunci API dengan cakupan terbatas telah kedaluwarsa.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: Kunci API ber-scope melewati tanggal kedaluwarsanya
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Kredensial tidak ada, pemanggil tanpa hak istimewa `read:sessions`,
            kunci API dengan pembatasan cakupan tanpa akses yang dibutuhkan
            endpoint ini, atau `session_id` milik aplikasi lain.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key tidak ada atau tidak valid
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: Pemanggil tidak memiliki izin read:sessions
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: Kunci API ber-scope tanpa akses ini
                  value:
                    detail: This API key has no read access to decisions.
        '404':
          description: Tidak ada sesi KYC atau KYB dengan `session_id` ini.
          content:
            application/json:
              examples:
                Not Found:
                  summary: session_id tidak dikenal
                  value:
                    detail: Not found.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X GET \
              https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/ \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.list_feature_overrides(
                "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            )
            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.listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ListFeatureOverrides(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");

            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->listFeatureOverrides('3fa85f64-5717-4562-b3fc-2c963f66afa6');

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


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.sessions.list_feature_overrides("3fa85f64-5717-4562-b3fc-2c963f66afa6")

            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.ListFeatureOverridesAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FeatureStatusOverride:
      type: object
      description: >-
        Satu penimpaan status pemeriksaan (fitur) yang dibuat dengan `PATCH
        /v3/session/{sessionId}/features/{nodeId}/update-status/`: apa yang
        diubahnya, apakah sudah diterapkan atau masih menunggu orang tersebut
        menyelesaikan alur, siapa yang meminta dan alasannya.
      required:
        - id
        - node_id
        - feature_type
        - feature_model
        - previous_status
        - new_status
        - state
        - forced
        - reason
        - requested_by
        - requested_at
        - applied_at
        - cancelled_at
        - cancel_reason
      properties:
        id:
          type: string
          format: uuid
          description: Pengenal penimpaan (override). Teruskan ke endpoint pembatalan.
          example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        node_id:
          type: string
          description: >-
            Node alur kerja yang disebutkan dalam permintaan (`default` untuk
            langkah tanpa node).
          example: feature_ocr_1
        feature_type:
          type: string
          description: >-
            `feature_type` yang diteruskan oleh permintaan, atau string kosong
            jika tidak meneruskan apa pun.
          example: ''
        feature_model:
          type: string
          description: >-
            Jenis pemeriksaan yang ditimpa, misalnya `KYC`, `Face`, `AML`, atau
            `GeolocationCheck`.
          example: KYC
        previous_status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: Status pemeriksaan saat override diminta.
          example: In Review
        new_status:
          type: string
          enum:
            - Approved
            - Declined
            - In Review
          description: Status yang ditetapkan oleh penggantian (override).
          example: Approved
        state:
          type: string
          enum:
            - applied
            - pending_until_flow_finishes
            - cancelled
          description: >-
            `applied`: pemeriksaan memiliki status baru.
            `pending_until_flow_finishes`: penggantian menunggu dan diterapkan
            saat orang tersebut menyelesaikan alur. `cancelled`: penggantian
            menunggu dan tidak pernah diterapkan (lihat `cancel_reason`).
          example: applied
        forced:
          type: boolean
          description: >-
            `true` saat penggantian diterapkan seketika saat orang tersebut
            masih berada dalam alur.
          example: false
        reason:
          type: string
          nullable: true
          description: '`comment` yang dikirim bersama permintaan, atau `null`.'
          example: Document manually verified by compliance.
        requested_by:
          type: object
          nullable: true
          description: Pihak yang meminta override, atau `null` jika tidak diketahui.
          properties:
            email:
              type: string
              format: email
              nullable: true
              description: Email pengguna konsol, atau `null` untuk kunci API dan sistem.
              example: reviewer@example.com
            name:
              type: string
              nullable: true
              description: Nama tampilan pemohon, atau `null`.
              example: Alex Reviewer
            type:
              type: string
              enum:
                - CONSOLE_USER
                - API_KEY
                - SYSTEM
              description: >-
                Pihak yang membuat permintaan: pengguna konsol, kunci API, atau
                Didit sendiri.
              example: CONSOLE_USER
        requested_at:
          type: string
          format: date-time
          description: Waktu pengesampingan diminta.
          example: '2026-10-13T09:15:00Z'
        applied_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu ketika pemeriksaan beralih ke status baru, atau `null` saat
            masih menunggu atau setelah dibatalkan.
          example: '2026-10-13T09:15:00Z'
        cancelled_at:
          type: string
          format: date-time
          nullable: true
          description: Saat penimpaan yang menunggu dibatalkan, atau `null`.
          example: null
        cancel_reason:
          type: string
          nullable: true
          enum:
            - cancelled_by_reviewer
            - replaced
            - check_changed
            - session_closed
            - null
          description: >-
            Alasan mengapa override yang tertunda tidak pernah diterapkan, atau
            `null`. `cancelled_by_reviewer`: dibatalkan dengan endpoint
            pembatalan. `replaced`: digantikan oleh override yang lebih baru
            pada pemeriksaan yang sama. `check_changed`: pengguna mengulangi
            pemeriksaan sebelum menyelesaikan alur. `session_closed`: sesi
            meninggalkan alur sebelum pengguna menyelesaikannya (ditinggalkan,
            kedaluwarsa, atau diputuskan di tengah alur).
          example: null
  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.