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

# Feature-Overrides auflisten: Schritt-Status-Verlauf (API)

> Didit-API: Alle Overrides des Status eines Schritts pro Sitzung auflisten, neueste zuerst. Angewendet, ausstehend oder abgebrochen.



Prompt: Feature-Overrides auflisten
        Prompt in die Zwischenablage kopieren



      
      

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



      
      

Einfügen in

Jeder Aufruf von [Feature-Status aktualisieren](https://docs.didit.me/de/sessions-api/update-feature-status.md) erfasst einen Override für den Status einer Prüfung.
Dieser Endpoint listet alle Overrides für eine Sitzung auf, neueste zuerst, ohne Paginierung.## Override-Zustände| `state` | Bedeutung |
| - | - |
| `applied` | Die Prüfung hat den neuen Status. `applied_at` gibt an, wann das geschehen ist. |
| `pending_until_flow_finishes` | Der Override wartet und wird angewendet, sobald die Person den Ablauf abschließt. |
| `cancelled` | Der Override hat gewartet und wurde nie angewendet. `cancel_reason` gibt den Grund an. |Ein Override mit `forced: true` wurde sofort angewendet, während sich die Person noch im Ablauf befand.## Warum ein wartender Override abgebrochen wurde| `cancel_reason` | Was passiert ist |
| - | - |
| `cancelled_by_reviewer` | Jemand hat ihn mit [Feature-Override abbrechen](https://docs.didit.me/de/sessions-api/cancel-feature-override.md) abgebrochen. |
| `replaced` | Ein neuerer Override für dieselbe Prüfung hat ihn ersetzt. |
| `check_changed` | Die Person hat die Prüfung vor Abschluss des Ablaufs erneut durchgeführt, daher ist das überschriebene Ergebnis nicht mehr vorhanden. |
| `session_closed` | Die Sitzung wurde beendet, bevor die Person den Ablauf abgeschlossen hat: abgebrochen, abgelaufen oder mitten im Ablauf entschieden. |## Wo sich die Person im Ablauf befindet`person_in_flow` ist `true`, solange die Sitzung `Not Started`, `In Progress` oder `Resubmitted` ist und die Person den Ablauf nicht abgeschlossen hat.
Solange der Wert `true` ist, wartet ein neuer Override mit `defer_until_flow_finishes: true`.
`flow_finished_at` ist der Zeitpunkt, zu dem die Person den Ablauf zuletzt abgeschlossen hat.
Der Wert ist `null`, solange sie sich noch im Ablauf befindet, einschließlich einer erneuten Einreichung, und wenn die Sitzung geschlossen wurde, bevor sie den Ablauf abgeschlossen hat.## Verwandte Themen- [Feature-Status aktualisieren](https://docs.didit.me/de/sessions-api/update-feature-status.md): den Status eines Schritts jetzt oder erst nach Abschluss des Ablaufs überschreiben.
- [Feature-Override abbrechen](https://docs.didit.me/de/sessions-api/cancel-feature-override.md): verhindern, dass ein wartender Override angewendet wird.
- [Sitzung abrufen](https://docs.didit.me/de/sessions-api/retrieve-session.md): `node_id` und aktueller Status jedes Features.


## OpenAPI

````yaml de/openapi-25.json GET /v3/session/{sessionId}/features/overrides/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/features/overrides/:
    get:
      tags:
        - Sessions
      summary: Prüfungsüberschreibungen einer Sitzung auflisten
      description: >-
        Jede Überschreibung des Status einer einzelnen Funktion (Schritts) in
        einer Sitzung zur Benutzerverifizierung (KYC) oder
        Unternehmensverifizierung (KYB), die neueste zuerst und nicht paginiert:
        angewendete Überschreibungen, solche, die darauf warten, dass die Person
        den Flow abschließt (`pending_until_flow_finishes`), und stornierte
        Überschreibungen, jeweils mit Angaben dazu, wer sie angefordert hat, dem
        Grund und ob sie angewendet wurden, während sich die Person noch im Flow
        befand (`forced`).


        `person_in_flow` gibt an, ob eine neue Überschreibung mit
        `defer_until_flow_finishes: true` warten würde. `flow_finished_at` gibt
        an, wann die Person den Flow zuletzt abgeschlossen hat; dieser Wert ist
        `null`, während sie sich noch darin befindet (eine erneute Einreichung
        eingeschlossen) und wenn die Sitzung geschlossen wurde, bevor sie ihn
        abgeschlossen hat.


        Erfordert die Berechtigung `read:sessions`; ein
        berechtigungsbeschränkter API-Schlüssel benötigt Lesezugriff auf
        Entscheidungen.
      operationId: get_v3_session_feature_overrides
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID der Verifizierungssitzung. Akzeptiert sowohl Benutzer- (KYC)
            als auch Unternehmens- (KYB) Sitzungs-IDs.
          schema:
            type: string
            format: uuid
            example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
      responses:
        '200':
          description: Die Prüfungsüberschreibungen der Sitzung, neueste zuerst.
          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: >-
                      Gibt an, ob sich die Person noch im Ablauf befindet,
                      sodass ein neuer Override mit `defer_until_flow_finishes:
                      true` warten würde.
                    example: true
                  flow_finished_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Wann die Person den Ablauf zuletzt abgeschlossen hat.
                      `null`, während sie sich noch darin befindet
                      (einschließlich einer erneuten Einreichung) und wenn die
                      Sitzung geschlossen wurde, bevor sie abgeschlossen wurde
                      (abgebrochen, abgelaufen oder eine Entscheidung mitten im
                      Ablauf getroffen wurde).
                    example: null
                  overrides:
                    type: array
                    description: Jede Überschreibung der Sitzung, die neueste zuerst.
                    items:
                      $ref: '#/components/schemas/FeatureStatusOverride'
              examples:
                Overrides:
                  summary: Eine ausstehende Überschreibung, eine angewendete
                  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: >-
            Der API-Schlüssel mit eingeschränktem Geltungsbereich ist
            abgelaufen.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: >-
                    API-Schlüssel mit eingeschränktem Berechtigungsumfang nach
                    Ablaufdatum
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Fehlende Anmeldedaten, ein Aufrufer ohne das
            `read:sessions`-Privileg, ein API-Schlüssel mit Gültigkeitsbereich
            ohne den für diesen Endpoint erforderlichen Zugriff oder eine
            `session_id`, die zu einer anderen Anwendung gehört.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: Fehlender oder ungültiger x-api-key
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: Dem Aufrufer fehlt read:sessions
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: >-
                    API-Schlüssel mit eingeschränktem Berechtigungsumfang ohne
                    diesen Zugriff
                  value:
                    detail: This API key has no read access to decisions.
        '404':
          description: Es existiert keine KYC- oder KYB-Sitzung mit dieser `session_id`.
          content:
            application/json:
              examples:
                Not Found:
                  summary: Unbekannte session_id
                  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: >-
        Eine Überschreibung eines Prüfungs- bzw. Funktionsstatus, vorgenommen
        mit `PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/`:
        was geändert wird, ob sie angewendet wurde oder noch darauf wartet, dass
        die Person den Flow abschließt, wer die Anfrage gestellt hat und warum.
      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: Kennung des Overrides. Übergeben Sie sie an den Cancel-Endpoint.
          example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        node_id:
          type: string
          description: >-
            Der in der Anfrage angegebene Workflow-Knoten (`default` für einen
            Schritt ohne Knoten).
          example: feature_ocr_1
        feature_type:
          type: string
          description: >-
            Der von der Anfrage übergebene `feature_type` oder eine leere
            Zeichenkette, wenn keiner übergeben wurde.
          example: ''
        feature_model:
          type: string
          description: >-
            Die Art der Prüfung, die überschrieben wurde, beispielsweise `KYC`,
            `Face`, `AML` oder `GeolocationCheck`.
          example: KYC
        previous_status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: Der Status der Überprüfung zum Zeitpunkt der Anfrage des Overrides.
          example: In Review
        new_status:
          type: string
          enum:
            - Approved
            - Declined
            - In Review
          description: Der Status, den die Überschreibung festlegt.
          example: Approved
        state:
          type: string
          enum:
            - applied
            - pending_until_flow_finishes
            - cancelled
          description: >-
            `applied`: Die Prüfung hat den neuen Status.
            `pending_until_flow_finishes`: Das Override wartet und greift, wenn
            die Person den Ablauf beendet. `cancelled`: Es hat gewartet und
            wurde nie angewendet (siehe `cancel_reason`).
          example: applied
        forced:
          type: boolean
          description: >-
            `true`, wenn die Überschreibung sofort angewendet wurde, während die
            Person sich noch im Ablauf befand.
          example: false
        reason:
          type: string
          nullable: true
          description: Der mit der Anfrage gesendete `comment` oder `null`.
          example: Document manually verified by compliance.
        requested_by:
          type: object
          nullable: true
          description: >-
            Wer die Übersteuerung angefordert hat, oder `null`, wenn dies nicht
            bekannt ist.
          properties:
            email:
              type: string
              format: email
              nullable: true
              description: >-
                E-Mail des Console-Benutzers oder `null` für API-Schlüssel und
                das System.
              example: reviewer@example.com
            name:
              type: string
              nullable: true
              description: Anzeigename des Anfragenden oder `null`.
              example: Alex Reviewer
            type:
              type: string
              enum:
                - CONSOLE_USER
                - API_KEY
                - SYSTEM
              description: >-
                Wer die Anfrage gestellt hat: ein Benutzer der Konsole, ein
                API-Schlüssel oder Didit selbst.
              example: CONSOLE_USER
        requested_at:
          type: string
          format: date-time
          description: Wann die Übersteuerung angefordert wurde.
          example: '2026-10-13T09:15:00Z'
        applied_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann die Überprüfung den neuen Status angenommen hat, oder `null`,
            während sie wartet oder sobald sie storniert wurde.
          example: '2026-10-13T09:15:00Z'
        cancelled_at:
          type: string
          format: date-time
          nullable: true
          description: Wann ein wartender Override abgebrochen wurde, oder `null`.
          example: null
        cancel_reason:
          type: string
          nullable: true
          enum:
            - cancelled_by_reviewer
            - replaced
            - check_changed
            - session_closed
            - null
          description: >-
            Warum ein wartendes Override nie angewendet wurde, oder `null`.
            `cancelled_by_reviewer`: über den Abbrechen-Endpoint storniert.
            `replaced`: ein neueres Override für denselben Check hat es ersetzt.
            `check_changed`: die Person hat die Prüfung vor dem Abschluss des
            Ablaufs wiederholt. `session_closed`: die Sitzung wurde beendet,
            bevor die Person den Ablauf abgeschlossen hat (abgebrochen,
            abgelaufen oder mitten im Ablauf entschieden).
          example: null
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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