> ## 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 liste des revues de session : journal d'audit KYC

> Didit : récupérez toutes les notes d'examen manuel et changements de statut d'une session. Journal d'audit KYC, paiement à l'appel, sans contrat.



Prompt pour lister les examens de session
        Copier le prompt dans le presse-papiers



      
      

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



      
      

Coller dans



## OpenAPI

````yaml fr/openapi-25.json GET /v3/sessions/{session_id}/reviews/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/{session_id}/reviews/:
    get:
      tags:
        - Sessions
      summary: Lister les examens de session et le journal d'activité
      description: >-
        Renvoie le journal d'audit / fil d'activité pour une session de
        Vérification des utilisateurs (KYC), du plus récent au plus ancien, dans
        une enveloppe paginée (`count` / `next` / `previous` / `results`, 50
        entrées par page par défaut).


        Les entrées du fil sont générées par chaque intervenant interagissant
        avec la session : les décisions manuelles prises via `PATCH
        /v3/session/{session_id}/update-status/` (qui enregistre
        `previous_status` → `new_status`), l'activité des réviseurs dans la
        Console (commentaires avec mentions `@email`, modifications de données
        KYC/POA, téléversements/suppressions de fichiers, changements de tags,
        consultations de la page de détails), les correspondances de
        surveillance continue AML et les notes ajoutées via `POST` sur ce même
        chemin. La lecture de ce fil est l'équivalent côté API du panneau
        **Activité** dans la vue de session de la Console Didit.


        Seules les sessions de Vérification des utilisateurs (KYC) sont
        accessibles ici ; les identifiants de session de Vérification
        d'entreprise (KYB) renvoient `404`.
      operationId: list_session_reviews
      parameters:
        - name: session_id
          in: path
          required: true
          description: >-
            UUID de la session de Vérification des utilisateurs (KYC). Doit
            appartenir à la même application que la clé API — les UUID
            inter-applications, les sessions supprimées et les identifiants de
            session de Vérification d'entreprise (KYB) renvoient tous `404`.
          schema:
            type: string
            format: uuid
            example: 8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d
        - name: limit
          in: query
          required: false
          description: Taille de page. Vaut `50` par défaut.
          schema:
            type: integer
            default: 50
            example: 50
        - name: offset
          in: query
          required: false
          description: >-
            Nombre d'entrées à ignorer depuis le début du flux (ordonné). Vaut
            `0` par défaut. Les URL `next` / `previous` dans la réponse
            contiennent les bonnes valeurs pour parcourir le flux.
          schema:
            type: integer
            default: 0
            example: 0
        - name: ordering
          in: query
          required: false
          description: >-
            Ordre de tri. Le flux est défini par défaut sur le plus récent en
            premier (`-created_at`) ; transmettez `created_at` pour le lire du
            plus ancien au plus récent. Les valeurs inconnues sont ignorées sans
            avertissement (l'ordre par défaut est appliqué) ; d'autres noms de
            champs de sérialiseur sont également acceptés.
          schema:
            type: string
            default: '-created_at'
            example: created_at
      responses:
        '200':
          description: >-
            Flux d'activité paginé, du plus récent au plus ancien par défaut.
            `count` est le nombre total d'entrées ; `next` / `previous` sont des
            URL de page prêtes à l'emploi (`null` aux extrémités). Un `count` de
            `0` avec des `results` vides indique qu'aucune activité n'a encore
            été enregistrée.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Nombre total d'entrées de flux pour cette session (toutes
                      pages confondues).
                    example: 3
                  next:
                    type: string
                    nullable: true
                    description: URL de la page suivante, ou `null` sur la dernière page.
                    example: null
                  previous:
                    type: string
                    nullable: true
                    description: URL de la page précédente, ou `null` sur la première page.
                    example: null
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/ReviewItem'
                    description: Entrées de flux pour cette page.
              examples:
                DecisionTrail:
                  summary: Approbation manuelle accompagnée de notes ajoutées par l'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: >-
                    Première page avec limit=2 — le champ next contient l'URL de
                    suivi
                  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: Session sans activité enregistrée pour le moment
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '403':
          description: >-
            `x-api-key` manquant, malformé, expiré ou révoqué.
            L'authentification est vérifiée avant la recherche de la session,
            donc une clé manquante renvoie `403` même lorsque l'UUID de session
            n'existe pas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: You do not have permission to perform this action.
              examples:
                InvalidKey:
                  summary: En-tête x-api-key manquant ou invalide
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Aucune session de vérification des utilisateurs (KYC) avec cet UUID
            n'est visible pour votre application : l'UUID n'existe pas, la
            session a été supprimée ou elle appartient à une autre application.
            Les ID de session de vérification d'entreprise (KYB) renvoient
            également `404` ici — le flux des examens n'est accessible que pour
            les sessions KYC.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Session not found.
              examples:
                NotFound:
                  summary: >-
                    UUID de session inconnu, supprimé ou appartenant à une autre
                    application
                  value:
                    detail: Session not found.
        '429':
          description: >-
            Limite de débit dépassée. Examinez les en-têtes de réponse
            `Retry-After` et `X-RateLimit-*`. Voir [Limitation de
            débit](/fr/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: >-
        Une entrée dans le flux d'examen / d'activité d'une session. Les
        changements de statut comportent `previous_status`, `new_status`,
        `previous_value`, `new_value` et `changed_fields` ; les commentaires
        comportent `comment` et (pour les commentaires de la Console)
        `mentioned_emails` ; les champs restants sont `null` ou vides lorsqu'ils
        ne s'appliquent pas au type d'activité.
      properties:
        uuid:
          type: string
          format: uuid
          description: Identifiant unique de cette entrée de flux.
          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: >-
            Le type d'activité enregistré par cette entrée. Les lignes
            `STATUS_UPDATED` proviennent de décisions manuelles (`PATCH
            /v3/session/{session_id}/update-status/`) et d'entrées ajoutées via
            `POST …/reviews/` (qui prennent ce type par défaut même si aucun
            statut n'est enregistré). Les lignes `COMMENT` proviennent des
            réviseurs de la Console ; les consultations de la page de détails
            dans la Console sont également stockées sous forme de lignes
            `COMMENT` avec l'indicateur `metadata.system_event =
            "DETAIL_VIEWED"`. Les autres types assurent le suivi des
            modifications de données, des changements de fichiers, des tags et
            de l'activité de surveillance AML. Les lignes STATUS_UPDATED sont
            également écrites par des acteurs système (par exemple la
            surveillance AML continue avec un actor_type SYSTEM, et les mises à
            jour automatiques des statuts de fonctionnalités), et pas uniquement
            par l'endpoint update-status et les publications d'examen manuel.
            `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED` et
            `FEATURE_OVERRIDE_CANCELLED` enregistrent le remplacement du statut
            d'une vérification (`PATCH
            /v3/session/{session_id}/features/{node_id}/update-status/`) :
            demandé en attente de la fin du flux, appliqué ou annulé. Ils
            contiennent le statut de la vérification dans `previous_value` /
            `new_value` (`{"status": ...}`), laissent `previous_status` et
            `new_status` à `null`, et désignent le remplacement dans `metadata`
            (`feature_override_id`, `node_id`, `feature_model`, `forced`,
            `state`, `cancel_reason`). L'entrée de la demande contient le
            `comment` du réviseur ; un remplacement appliqué lorsque le flux se
            termine est enregistré avec un `actor_type` `SYSTEM`.
          example: STATUS_UPDATED
        actor_display:
          type: string
          description: >-
            Libellé d'auteur lisible par l'humain, résolu dans l'ordre : nom
            complet de l'acteur → identifiant du compte Console → partie locale
            de `actor_email` → `"API Client"` (pour les acteurs `API_KEY`) →
            `"System"` (pour les acteurs `SYSTEM`) → `"Unknown"`. Les entrées
            créées via `POST …/reviews/` affichent toujours `"Unknown"` car cet
            endpoint n'enregistre aucune attribution d'acteur.
          example: API Client
        actor_email:
          type: string
          nullable: true
          description: >-
            E-mail de l'utilisateur de la Console ayant effectué l'action.
            `null` pour les acteurs de type clé API et système.
          example: null
        actor_type:
          type: string
          enum:
            - API_KEY
            - CONSOLE_USER
            - SYSTEM
          description: >-
            Qui a effectué l'action : une clé API, un utilisateur de la Console
            ou Didit lui-même (`SYSTEM`, par ex. la surveillance AML continue).
            Les entrées créées via `POST …/reviews/` portent la valeur par
            défaut `CONSOLE_USER`, quel que soit l'appelant.
          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: >-
            Statut de session enregistré par cette entrée (pour les mises à jour
            de statut). `null` pour les commentaires et les entrées de
            modification de données.
          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: >-
            Statut de la session avant la modification. Renseigné sur les
            entrées `STATUS_UPDATED` écrites par l'endpoint de mise à jour du
            statut ; `null` sur les entrées ajoutées via `POST …/reviews/`.
            Également renseigné sur les lignes STATUS_UPDATED générées par le
            système.
          example: In Review
        comment:
          type: string
          nullable: true
          description: Note en texte libre associée à l'entrée, ou `null`.
          example: Document re-checked manually; address matches.
        mentioned_emails:
          type: array
          items:
            type: string
            format: email
          description: >-
            Utilisateurs de la Console mentionnés avec `@email` dans le
            commentaire. Toujours vide pour les entrées créées via cette API —
            le traitement des mentions est une fonctionnalité réservée à la
            Console.
          example: []
        previous_value:
          type: object
          nullable: true
          description: >-
            Instantané des données modifiées avant l'action, par exemple
            `{"status": "In Review"}` lors d'un changement de statut. `null`
            lorsque rien n'a été modifié.
          example:
            status: In Review
        new_value:
          type: object
          nullable: true
          description: >-
            Instantané des données modifiées après l'action, par exemple
            `{"status": "Approved"}`. `null` lorsque rien n'a été modifié.
          example:
            status: Approved
        changed_fields:
          type: array
          items:
            type: string
          description: >-
            Noms des champs modifiés par cette activité (par ex. `["status"]`).
            Vide pour les commentaires et pour les entrées ajoutées via `POST
            …/reviews/`.
          example:
            - status
        metadata:
          type: object
          nullable: true
          description: >-
            Contexte supplémentaire pour les entrées générées par le système.
            Les consultations de la page de détails de la Console comportent
            `{"system_event": "DETAIL_VIEWED", "detail_type": "verification"}`
            afin de pouvoir être exclues de la logique de notification. Un
            `COMMENT` modifié par son auteur dans la Console comporte
            `edited_at`, l'horodatage ISO 8601 de la dernière modification
            (`comment` et `mentioned_emails` contiennent alors le texte modifié
            et ses mentions). `null` pour les entrées ordinaires.
          example: null
        created_at:
          type: string
          format: date-time
          description: Date et heure d'écriture de l'entrée, ISO 8601 UTC.
          example: '2026-06-12T00:19:31.918735Z'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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