> ## 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: KYC 감사 로그

> Didit 인증 세션의 모든 수동 검토 메모와 상태 변경 내역을 조회하세요. 감사 대응이 가능한 컴플라이언스 로그이며, 호출당 과금되고 약정은 없습니다.



세션 검토 목록 조회 프롬프트
        프롬프트를 클립보드에 복사



      
      

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



      
      

붙여넣을 곳



## OpenAPI

````yaml ko/openapi-25.json GET /v3/sessions/{session_id}/reviews/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 신분증 인증 API입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/{session_id}/reviews/:
    get:
      tags:
        - Sessions
      summary: 세션 검토 및 활동 로그 목록 조회
      description: >-
        사용자 인증(KYC) 세션의 감사 추적 / 활동 피드를 최신순으로 페이지네이션된 봉투(`count` / `next` /
        `previous` / `results`, 기본값 페이지당 50개 항목)로 반환합니다.


        피드 항목은 세션과 상호작용하는 모든 행위자에 의해 작성됩니다: `PATCH
        /v3/session/{session_id}/update-status/`를 통한 수동 결정(`previous_status` →
        `new_status` 기록), Console 검토자 활동(`@email` 멘션이 포함된 댓글, KYC/POA 데이터 수정, 파일
        업로드/삭제, 태그 변경, 상세 페이지 조회), 지속적인 AML 모니터링 일치 항목, 동일한 경로에 `POST`로 추가된 메모.
        이 피드를 읽는 것은 Didit Console 세션 보기의 **Activity** 패널과 API 측면에서 동일합니다.


        사용자 인증(KYC) 세션만 여기서 처리할 수 있으며, 기업 확인(KYB) 세션 ID는 `404`를 반환합니다.
      operationId: list_session_reviews
      parameters:
        - name: session_id
          in: path
          required: true
          description: >-
            사용자 인증(KYC) 세션의 UUID입니다. API 키와 동일한 애플리케이션에 속해야 합니다. 다른 애플리케이션의
            UUID, 삭제된 세션 및 기업 확인(KYB) 세션 ID는 모두 `404`를 반환합니다.
          schema:
            type: string
            format: uuid
            example: 8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d
        - name: limit
          in: query
          required: false
          description: 페이지 크기입니다. 기본값은 `50`입니다.
          schema:
            type: integer
            default: 50
            example: 50
        - name: offset
          in: query
          required: false
          description: >-
            (정렬된) 피드의 시작 부분부터 건너뛸 항목 수입니다. 기본값은 `0`입니다. 응답의 `next` / `previous`
            URL에 피드를 순회하기 위한 올바른 값이 포함되어 있습니다.
          schema:
            type: integer
            default: 0
            example: 0
        - name: ordering
          in: query
          required: false
          description: >-
            정렬 순서입니다. 피드의 기본값은 최신순(`-created_at`)이며, 오래된 순으로 조회하려면 `created_at`을
            전달합니다. 알 수 없는 값은 오류 없이 무시되며(기본 순서 적용), 다른 시리얼라이저 필드 이름도 허용됩니다.
          schema:
            type: string
            default: '-created_at'
            example: created_at
      responses:
        '200':
          description: >-
            페이지가 나뉜 활동 피드이며 기본적으로 최신순으로 정렬됩니다. `count`는 전체 항목 수이며, `next` /
            `previous`는 사전에 구성된 페이지 URL입니다(양 끝에서는 `null`). 빈 `results`와 함께
            `count`가 `0`인 경우 아직 기록된 활동이 없음을 의미합니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: 이 세션의 피드 항목 총 개수입니다(모든 페이지 합산).
                    example: 3
                  next:
                    type: string
                    nullable: true
                    description: 다음 페이지의 URL이며, 마지막 페이지에서는 `null`입니다.
                    example: null
                  previous:
                    type: string
                    nullable: true
                    description: 이전 페이지의 URL이며, 첫 번째 페이지에서는 `null`입니다.
                    example: null
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/ReviewItem'
                    description: 이 페이지의 피드 항목입니다.
              examples:
                DecisionTrail:
                  summary: 수동 승인 및 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: limit=2가 적용된 첫 번째 페이지 — next에 후속 URL이 포함됩니다.
                  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: 아직 기록된 활동이 없는 세션
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '403':
          description: >-
            `x-api-key`가 누락되었거나 잘못된 형식이거나 만료되었거나 폐기되었습니다. 세션 조회 전에 인증을 먼저 확인하므로
            세션 UUID가 존재하지 않는 경우에도 누락된 키는 `403`을 반환합니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: You do not have permission to perform this action.
              examples:
                InvalidKey:
                  summary: x-api-key 헤더가 누락되었거나 유효하지 않음
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            이 UUID를 가진 사용자 인증(KYC) 세션을 애플리케이션에서 확인할 수 없습니다. UUID가 존재하지 않거나 세션이
            삭제되었거나 다른 애플리케이션에 속해 있습니다. 기업 확인(KYB) 세션 ID 또한 여기서 `404`를 반환합니다. 검토
            피드는 KYC 세션에 대해서만 조회할 수 있습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Session not found.
              examples:
                NotFound:
                  summary: 알 수 없거나, 삭제되었거나, 다른 애플리케이션에 속한 세션 UUID
                  value:
                    detail: Session not found.
        '429':
          description: >-
            속도 제한을 초과했습니다. `Retry-After` 및 `X-RateLimit-*` 응답 헤더를 확인하세요. [속도
            제한](/ko/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: >-
        세션의 검토/활동 피드 항목 1개입니다. 상태 변경에는 `previous_status`, `new_status`,
        `previous_value`, `new_value`, `changed_fields`가 포함되고, 댓글에는 `comment` 및
        (Console 댓글의 경우) `mentioned_emails`가 포함되며, 나머지 필드는 해당 활동 유형에 적용되지 않는 경우
        `null`이거나 비어 있습니다.
      properties:
        uuid:
          type: string
          format: uuid
          description: 이 피드 항목의 고유 식별자입니다.
          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: >-
            이 항목이 기록하는 활동의 종류입니다. `STATUS_UPDATED` 행은 수동 결정(`PATCH
            /v3/session/{session_id}/update-status/`) 및 `POST …/reviews/`를 통해
            추가된 항목(상태가 기록되지 않은 경우에도 기본적으로 이 유형이 됨)에서 생성됩니다. `COMMENT` 행은 Console
            검토자로부터 생성되며, Console 상세 페이지 조회 또한 `metadata.system_event =
            "DETAIL_VIEWED"`로 표시된 `COMMENT` 행으로 저장됩니다. 나머지 유형은 데이터 수정, 파일 변경, 태그
            및 AML 모니터링 활동을 추적합니다. STATUS_UPDATED 행은 update-status endpoint 및 수동
            검토 게시물뿐만 아니라 시스템 주체(예: actor_type이 SYSTEM인 지속적인 AML 모니터링 및 자동 기능 상태
            업데이트)에 의해서도 작성됩니다. `FEATURE_OVERRIDE_PENDING`,
            `FEATURE_OVERRIDE_APPLIED` 및 `FEATURE_OVERRIDE_CANCELLED`는 하나의 검사
            상태에 대한 재정의(`PATCH
            /v3/session/{session_id}/features/{node_id}/update-status/`)를
            기록합니다(워크플로가 완료될 때까지 대기하도록 요청됨, 적용됨 또는 취소됨). 이들은 검사의 상태를
            `previous_value` / `new_value`(`{"status": ...}`)에 담고,
            `previous_status` 및 `new_status`는 `null`로 두며,
            `metadata`(`feature_override_id`, `node_id`, `feature_model`,
            `forced`, `state`, `cancel_reason`)에 재정의 정보를 명시합니다. 요청 항목에는 검토자의
            `comment`가 포함되며, 워크플로 완료 시 적용된 재정의는 `SYSTEM`인 `actor_type`으로 기록됩니다.
          example: STATUS_UPDATED
        actor_display:
          type: string
          description: >-
            사람이 읽기 쉬운 작성자 라벨로, 작업자의 성명 → 콘솔 계정 식별자 → `actor_email`의 로컬 파트 →
            `"API Client"`(`API_KEY` 작업자의 경우) → `"System"`(`SYSTEM` 작업자의 경우) →
            `"Unknown"` 순으로 확인됩니다. `POST …/reviews/`를 통해 생성된 항목은 해당 endpoint가
            작업자 귀속 정보를 기록하지 않으므로 항상 `"Unknown"`으로 표시됩니다.
          example: API Client
        actor_email:
          type: string
          nullable: true
          description: 작업을 수행한 Console 사용자의 이메일입니다. API 키 및 시스템 행위자의 경우 `null`입니다.
          example: null
        actor_type:
          type: string
          enum:
            - API_KEY
            - CONSOLE_USER
            - SYSTEM
          description: >-
            작업을 수행한 주체: API 키, 콘솔 사용자 또는 Didit 자체(`SYSTEM`, 예: 지속적인 AML
            모니터링)입니다. `POST …/reviews/`를 통해 생성된 항목은 호출자와 관계없이 기본값
            `CONSOLE_USER`를 갖습니다.
          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: 이 항목에 기록된 세션 상태입니다(상태 업데이트의 경우). 댓글 및 데이터 변경 항목의 경우 `null`입니다.
          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: >-
            변경 전 세션의 상태입니다. 상태 업데이트 endpoint가 작성한 `STATUS_UPDATED` 항목에 채워지며,
            `POST …/reviews/`를 통해 추가된 항목에서는 `null`입니다. 시스템이 작성한 STATUS_UPDATED
            행에도 채워집니다.
          example: In Review
        comment:
          type: string
          nullable: true
          description: 항목에 첨부된 자유 형식 메모 또는 `null`입니다.
          example: Document re-checked manually; address matches.
        mentioned_emails:
          type: array
          items:
            type: string
            format: email
          description: >-
            댓글에서 `@email`로 언급된 콘솔 사용자입니다. 멘션 처리는 콘솔 전용 기능이므로 이 API를 통해 생성된 항목의
            경우 항상 비어 있습니다.
          example: []
        previous_value:
          type: object
          nullable: true
          description: >-
            상태 변경 등 작업 전 변경 대상 데이터의 스냅샷입니다(예: `{"status": "In Review"}`). 변경된
            사항이 없으면 `null`입니다.
          example:
            status: In Review
        new_value:
          type: object
          nullable: true
          description: >-
            작업 후 변경된 데이터의 스냅샷입니다(예: `{"status": "Approved"}`). 변경된 사항이 없으면
            `null`입니다.
          example:
            status: Approved
        changed_fields:
          type: array
          items:
            type: string
          description: >-
            이 활동에 의해 수정된 필드의 이름입니다(예: `["status"]`). 댓글 및 `POST …/reviews/`를 통해
            추가된 항목의 경우 비어 있습니다.
          example:
            - status
        metadata:
          type: object
          nullable: true
          description: >-
            시스템 생성 항목에 대한 추가 컨텍스트입니다. 콘솔 상세 페이지 조회는 알림 로직에서 제외할 수 있도록
            `{"system_event": "DETAIL_VIEWED", "detail_type": "verification"}`을
            전달합니다. 작성자가 콘솔에서 수정한 `COMMENT`는 마지막 수정 시점을 나타내는 ISO 8601 형식의
            `edited_at`을 전달합니다(`comment` 및 `mentioned_emails`에는 수정된 텍스트와 멘션된 대상이
            포함됩니다). 일반 항목의 경우 `null`입니다.
          example: null
        created_at:
          type: string
          format: date-time
          description: 항목이 작성된 시점(ISO 8601 UTC)입니다.
          example: '2026-06-12T00:19:31.918735Z'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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