> ## 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: 벤더 사용자 엔티티 조회

> Didit 애플리케이션의 벤더 사용자 엔티티를 모두 조회합니다. 상태, 검색, 날짜 필터를 지원하며 사용자 수명 주기를 프로그래밍 방식으로 관리할 수 있습니다.



사용자 목록 조회 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Goal: Page through Didit User entities for an application and consume them in your backend.

Endpoint: GET https://verification.didit.me/v3/users/
Auth header: x-api-key: <DIDIT_API_KEY>

Query params (all optional):
\- status: "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices, NOT the session enum).
\- search: free-text over vendor_data, display_name, full_name, approved_emails, approved_phones.
\- country: ISO 3166-1 alpha-3 (e.g. "USA", "ESP") — filters by issuing country of approved documents.
\- limit: integer, 1–200, default 50.
\- offset: integer, 0+, default 0. Prefer following the "next" URL from the previous page.

curl:
curl -X GET 'https://verification.didit.me/v3/users/?limit=50&status=ACTIVE' \
-H 'x-api-key: YOUR_API_KEY'

Response 200 (envelope):
\{
"count": <int — exact up to 100, capped above; pagination still works via "next">,
"next": <URL of next page or null>,
"previous": <URL of previous page or null>,
"results": [ UserListItem, ... ]
}

UserListItem key fields: didit_internal_id (UUID), vendor_data (string, may be null), display_name, full_name, effective_name, status, portrait_image_url, session_count, approved_count, declined_count, in_review_count, issuing_states, approved_emails, approved_phones, features (map of feature -> "Approved" | "Declined" | "In Review" | ...), features_list, last_session_at, first_session_at, tags, created_at. See /reference/data-models for the full shape.

Notes:
\- Ordered by last_session_at desc (most recently active first).
\- Deleted users are not returned.
\- vendor_data is a free-form client-supplied string, NOT a UUID. It may be null when the originating session did not provide one.

Pagination loop:
url = 'https://verification.didit.me/v3/users/?limit=200&status=ACTIVE'
while url:
r = requests.get(url, headers={'x-api-key': API_KEY})
r.raise_for_status()
page = r.json()
for user in page['results']:
    ...handle user...
url = page['next']

Failure modes (all return {"detail": "..."} unless noted):
\- 401 — missing or revoked x-api-key.
\- 403 — the API key is revoked or is not valid for this application.
\- 429 — rate-limited. Honour Retry-After header.

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

\</pre>



      
      

붙여넣을 곳

## 개요인증된 애플리케이션의 [사용자 엔터티](https://docs.didit.me/ko/entities/users/overview.md) 목록을 페이지 단위로 반환합니다. 사용자를 웨어하우스에 동기화하거나, 분석가의 확인이 필요한 사용자를 찾거나, 표시 이름으로 검색할 때 사용하세요.## 사용 시기- **정기 동기화**: 사용자 테이블을 외부 BI 또는 웨어하우스에 동기화합니다.
- **분석가 대기열**: `status=FLAGGED` 또는 오래된 `last_activity_at`으로 필터링해 검토용 수신함으로 활용하세요.
- **사용자 검색**: `display_name`, `full_name`, `vendor_data`로 사용자를 검색합니다.## 필터 및 페이지네이션| 쿼리 파라미터 | 설명 |
| - | - |
| `status` | `ACTIVE`, `FLAGGED`, `BLOCKED` 중 하나로 필터링합니다. |
| `search` | `vendor_data`, `display_name`, `full_name`, 이메일, 전화번호에 대한 부분 문자열 일치 검색입니다. |
| `country_code` | `issuing_states`(ISO 3166-1 alpha-3)로 필터링합니다. |
| `created_after`, `created_before` | 생성 날짜 범위(ISO 8601)입니다. |
| `last_activity_after`, `last_activity_before` | 활동 기간 범위입니다. |
| `page_size` | 1–200. 기본값: 50. |
| `cursor` | 이전 응답에서 반환된 페이지네이션 커서입니다. |## 참고 사항- 각 응답 항목에는 `didit_internal_id`가 포함됩니다. 원본 세션 또는 거래가 값을 제공하지 않은 경우 `vendor_data`는 `null`일 수 있습니다.
- 이 엔드포인트는 커서 기반으로 페이지네이션됩니다. 호출 사이에 `next` 커서를 저장하고, `next`가 비어 있으면 호출을 중단하세요.
- 사용자 행의 모든 필드는 [사용자 데이터 모델](https://docs.didit.me/ko/entities/users/data-model.md)에서 확인하세요.## 권한애플리케이션의 활성 API 키는 모두 이 엔드포인트를 호출할 수 있습니다. Didit API 키는 **역할이 아닌 애플리케이션 범위**로 적용됩니다. 콘솔의 [역할 및 권한](https://docs.didit.me/ko/console/roles-permissions.md)(`list:users` 등)은 *사람*이 콘솔에서 할 수 있는 작업을 결정하며, Management API 트래픽에는 평가되지 않습니다. 이 엔드포인트를 호출할 수 있는 대상은 애플리케이션의 API 키를 읽을 수 있는 사람으로 통제하세요.## 관련 문서- [사용자 개요](https://docs.didit.me/ko/entities/users/overview.md)
- [사용자 조회](https://docs.didit.me/ko/management-api/users/get.md)
- [사용자 작업](https://docs.didit.me/ko/entities/users/operations.md)


## OpenAPI

````yaml ko/openapi-25.json GET /v3/users/
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/users/:
    get:
      tags:
        - Users
      summary: 사용자 목록 조회
      description: >-
        동일한 `vendor_data`(UUID가 아닌 자유 형식 문자열)를 공유하는 KYC 세션으로부터 Didit이 취합한
        [사용자](/entities/users) 및 API를 통해 생성된 사용자 목록을 조회합니다. 페이지네이션이 적용되며,
        `last_session_at` 기준 내림차순으로 정렬됩니다. 이 엔드포인트는 필터링이나 검색 파라미터를 지원하지 않으므로
        페이지를 가져온 후 클라이언트 측에서 필터링하십시오.
      operationId: list_users
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: 페이지 크기입니다. 생략 시 기본값은 50입니다. 강제된 최댓값은 없으나 지연 시간을 줄이려면 페이지를 작게 유지하십시오.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            반환할 첫 번째 레코드의 0부터 시작하는 오프셋입니다. 직접 계산하기보다는 이전 페이지의 `next` URL을 따르는 것이
            좋습니다.
      responses:
        '200':
          description: 인증 상태, 세션 수 및 기능 분석 정보가 포함된 페이지 단위로 제공되는 사용자 목록입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      일치하는 행 수입니다. 최대 100개까지 정확하며, 성능을 위해 그 이상은 100개로 제한됩니다. 마지막
                      페이지를 감지하는 데 사용하지 마십시오. 대신 `next`가 `null`인지 확인하십시오.
                  next:
                    type: string
                    nullable: true
                    description: 다음 페이지의 절대 URL이며, 마지막 페이지에서는 `null`입니다.
                  previous:
                    type: string
                    nullable: true
                    description: 이전 페이지의 절대 URL이며, 첫 번째 페이지에서는 `null`입니다.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserListItem'
              examples:
                Example:
                  value:
                    count: 2
                    next: null
                    previous: null
                    results:
                      - didit_internal_id: f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418
                        vendor_data: user-abc-123
                        display_name: null
                        full_name: John Michael Doe
                        date_of_birth: '1990-05-15'
                        effective_name: John Michael Doe
                        status: ACTIVE
                        portrait_image_url: https://<media-host>/...
                        session_count: 3
                        approved_count: 2
                        declined_count: 0
                        in_review_count: 1
                        issuing_states:
                          - USA
                        approved_emails:
                          - john@example.com
                        approved_phones:
                          - '+14155551234'
                        features:
                          ID_VERIFICATION: Approved
                          LIVENESS: Approved
                          FACE_MATCH: Approved
                          AML: Approved
                        features_list:
                          - feature: ID_VERIFICATION
                            status: Approved
                          - feature: LIVENESS
                            status: Approved
                          - feature: FACE_MATCH
                            status: Approved
                          - feature: AML
                            status: Approved
                        last_session_at: '2025-06-15T10:30:00Z'
                        last_activity_at: '2025-06-15T10:30:00Z'
                        first_session_at: '2025-06-01T08:00:00Z'
                        tags:
                          - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                            name: VIP
                            color: '#2567FF'
                        created_at: '2025-06-01T08:00:00Z'
                      - didit_internal_id: 6ed99d53-e8f5-4cf8-9ac1-4a506cb40f6b
                        vendor_data: null
                        display_name: Jane S.
                        full_name: Jane Elizabeth Smith
                        date_of_birth: '1985-11-22'
                        effective_name: Jane S.
                        status: FLAGGED
                        portrait_image_url: null
                        session_count: 1
                        approved_count: 0
                        declined_count: 0
                        in_review_count: 1
                        issuing_states: []
                        approved_emails: []
                        approved_phones: []
                        features:
                          ID_VERIFICATION: In Review
                        features_list:
                          - feature: ID_VERIFICATION
                            status: In Review
                        last_session_at: '2025-06-20T14:00:00Z'
                        last_activity_at: '2025-06-20T14:05:00Z'
                        first_session_at: '2025-06-20T14:00:00Z'
                        tags: []
                        created_at: '2025-06-20T14:00:00Z'
        '401':
          description: >-
            자격 증명이 제공되지 않았습니다. `x-api-key` 헤더(또는 `Authorization: Bearer` token)가
            없는 `/v3/users/*` 경로에 대한 요청은 API에 도달하기 전에 인증 미들웨어에 의해 거부됩니다.
          content:
            application/json:
              examples:
                Missing credentials:
                  value:
                    detail: >-
                      You must be authenticated with a valid access token to
                      access this endpoint.
        '403':
          description: >-
            키가 이 애플리케이션의 사용자를 나열할 수 없습니다. 키가 누락되면 `403`을 반환하고, 잘못되었거나 취소되었거나 만료된
            키는 `401`을 반환합니다.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: 속도 제한 초과. 대기 후 `Retry-After`에 지정된 시간 간격이 지난 뒤 재시도하세요.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X GET 'https://verification.didit.me/v3/users/?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.users.list():
                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.users.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Users.ListAutoPaging(ctx, didit.UsersListParams{})\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.users().list()) {
                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->users->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            didit.users.list.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.Users.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    UserListItem:
      type: object
      description: 인증된 사용자입니다.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: 이 사용자에 대한 Didit의 고유 내부 UUID입니다.
        vendor_data:
          type: string
          nullable: true
          description: >-
            귀하가 지정한 해당 사용자의 고유 식별자입니다(세션 생성 시 전달됨). 벤더 식별자가 제공되지 않은 경우 null일 수
            있습니다.
        display_name:
          type: string
          nullable: true
          description: 직접 설정한 커스텀 표시 이름
        full_name:
          type: string
          nullable: true
          description: 인증된 문서에서 추출된 성명
        date_of_birth:
          type: string
          format: date
          nullable: true
        effective_name:
          type: string
          nullable: true
          description: '사용 가능한 최적의 이름: display_name이 설정된 경우 해당 값, 그렇지 않으면 full_name'
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            사용자 레코드의 수명 주기 상태입니다(세션 상태가 아님). 기본값은 `ACTIVE`이며, `FLAGGED`는 사용자를 수동
            확인 필요로 표시하고, `BLOCKED`는 해당 `vendor_data`에 대한 새 세션을 방지합니다.
        portrait_image_url:
          type: string
          nullable: true
          description: 사용자의 사전 서명된 인물 사진 URL(몇 시간 후 만료됨)
        session_count:
          type: integer
          description: 해당 사용자의 총 인증 세션 수
        approved_count:
          type: integer
          description: 승인된 세션 수
        declined_count:
          type: integer
          description: 거부된 세션 수
        in_review_count:
          type: integer
          description: 검토 중인 세션 수
        issuing_states:
          type: array
          items:
            type: string
          description: >-
            이 사용자의 승인된 신분증 문서에서 확인된 발급 국가의 ISO 3166-1 alpha-3 코드 목록입니다(예:
            `["USA", "ESP"]`). 없는 경우 빈 배열입니다.
        approved_emails:
          type: array
          items:
            type: string
          description: '이 사용자의 승인된 세션에서 수집된 인증된 이메일 주소입니다(예: `["john@example.com"]`).'
        approved_phones:
          type: array
          items:
            type: string
          description: '이 사용자의 승인된 세션에서 수집된 인증된 전화번호입니다(예: `["+14155551234"]`).'
        features:
          type: object
          description: >-
            이 사용자의 모든 세션에 걸쳐 집계된 기능별 상태입니다. 가능한 키: `ID_VERIFICATION`, `NFC`,
            `LIVENESS`, `FACE_MATCH`, `POA`, `QUESTIONNAIRE`,
            `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`,
            `AGE_ESTIMATION`, `DATABASE_VALIDATION`. 가능한 값: `Approved`,
            `Declined`, `In Review`, `Not Finished`, `Resub Requested`.
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: '`features`와 동일한 데이터로, `{feature, status}` 객체의 정렬된 배열입니다.'
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: 가장 최근 세션의 타임스탬프
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: 첫 번째 세션의 타임스탬프
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: 이 사용자에 대한 가장 최근 활동(세션, 거래, 상태 변경, 데이터 편집 등)의 타임스탬프입니다.
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: 이 사용자에게 할당된 태그
        created_at:
          type: string
          format: date-time
  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.