> ## 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 애플리케이션에 새 허용 목록 또는 사용자 지정 목록을 만드는 POST /v3/lists/ API입니다. 시스템 차단 목록은 자동으로 프로비저닝됩니다. 호출당 과금, 약정 없음.



목록 생성 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Create a new allowlist or custom list in my Didit application through the Management API.

Endpoint:
POST https://verification.didit.me/v3/lists/

Authentication:
Use the x-api-key header with my Didit API key. A scoped API key needs workflows: write.

Goal:
\- Create an allowlist (matching items are treated as trusted, for example to skip a duplicated-face or duplicated-IP action; it never overrides a blocklist match) or a custom list (for workflow conditions, transaction rules, or manual review).
\- System blocklists are provisioned by Didit, one per entry type. You cannot create a blocklist.

Request body (application/json):
\{
"name": "Trusted office IPs",          // required, at most 255 characters, unique among the application's lists
"description": "Office egress ranges", // optional
"list_type": "allowlist",              // required: "allowlist" or "custom"
"entry_type": "ip_address"             // required: face | document | phone | email | ip_address | device_fingerprint | wallet_address | bank_account | country | user | business | key
}

entry_type is fixed once the list exists: it decides how entry values are validated and matched.

Example call:
curl -X POST "https://verification.didit.me/v3/lists/" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Trusted office IPs", "list_type": "allowlist", "entry_type": "ip_address"}'

Example response (201):
\{
"uuid": "66666666-7777-8888-9999-000000000000",
"name": "Trusted office IPs",
"description": "",
"list_type": "allowlist",
"entry_type": "ip_address",
"is_system": false,
"entry_count": 0,
"last_entry_added_at": null,
"created_at": "2026-10-12T09:15:44.031876Z",
"updated_at": "2026-10-12T09:15:44.031876Z"
}

Persist the returned uuid: use it as list_uuid in the entry calls, and as the value of a workflow or transaction rule condition with value_type "list".

Failure modes:
\- 400: list_type is "blocklist", a required field is missing, name is longer than 255 characters, entry_type is unknown, or another list of the application already has this name ({ "name": ["A list with this name already exists for this application."] }).
\- 401: the API key has expired.
\- 403: missing x-api-key (a wrong, revoked or expired key gets 401) ({ "detail": "You do not have permission to perform this action." }), or a scoped key without workflows: write.
\- 429: rate limited (see /integration/rate-limiting); back off and retry.

Side effects:
\- Creates a new list in the application the API key belongs to.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳

애플리케이션용 목록을 생성합니다. `allowlist`와 `custom` 목록만 생성할 수 있습니다. Didit은 항목 유형마다 시스템 차단 목록을 하나씩 프로비저닝하며, 이 차단 목록에 항목을 추가하려면 [항목 생성](https://docs.didit.me/ko/management-api/lists/create-entry.md)을 사용합니다.`entry_type`은 신중하게 선택하십시오. 나중에 변경할 수 없으며, 추가하는 각 값을 어떻게 검증할지 결정합니다. 각 목록 유형의 동작은 [목록](https://docs.didit.me/ko/management-api/lists/overview.md)을 참조하십시오.


## OpenAPI

````yaml ko/openapi-25.json POST /v3/lists/
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/lists/:
    post:
      tags:
        - Lists
      summary: 목록 생성
      description: >-
        API 키가 속한 애플리케이션에 허용 목록 또는 커스텀 목록을 생성합니다. 차단 목록은 생성할 수 없습니다. Didit은 항목
        유형당 하나의 시스템 차단 목록을 프로비저닝하며, [목록 항목
        생성](https://docs.didit.me/ko/management-api/lists/create-entry)을 통해 항목을
        추가할 수 있습니다. `entry_type`은 생성 후 변경할 수 없으며 항목 값이 검증되고 일치되는 방식을 결정합니다. 허용
        목록 항목은 일치하는 항목을 신뢰할 수 있는 항목으로 표시하며(예: 얼굴 허용 목록은 중복 얼굴 작업을 건너뜀) 차단 목록 일치
        항목을 재정의하지 않습니다. 워크플로 또는 거래 규칙 조건에서 `value_type: "list"`로 임의의 목록을 참조할 수
        있습니다. 스코프가 지정된 API 키에는 `workflows: write` 권한이 필요합니다.
      operationId: create_list
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - list_type
                - entry_type
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: 목록 이름입니다. 시스템 목록을 포함하여 애플리케이션의 다른 모든 목록 이름과 달라야 합니다.
                description:
                  type: string
                  default: ''
                  description: 선택적 자유 텍스트 설명입니다.
                list_type:
                  type: string
                  enum:
                    - allowlist
                    - custom
                  description: '`allowlist` 또는 `custom`. `blocklist`는 `400`으로 거부됩니다.'
                entry_type:
                  type: string
                  enum:
                    - face
                    - document
                    - phone
                    - email
                    - ip_address
                    - device_fingerprint
                    - wallet_address
                    - bank_account
                    - country
                    - user
                    - business
                    - key
                  description: >-
                    목록에 포함되는 항목 유형입니다. `face`, `document`(문서 번호), `phone`,
                    `email`, `ip_address`(IP 주소 또는 CIDR 범위),
                    `device_fingerprint`, `wallet_address`, `bank_account`,
                    `country`(ISO 3166-1 alpha-3), `user` 또는 `business`(귀하의
                    `vendor_data`), 또는 `key`(모든 문자열)입니다. 항목 값이 검증되고 일치되는 방식을
                    결정합니다. 나중에 변경할 수 없습니다.
            examples:
              IP allowlist:
                value:
                  name: Trusted office IPs
                  description: Office egress ranges
                  list_type: allowlist
                  entry_type: ip_address
              Custom country list:
                value:
                  name: Enhanced due diligence countries
                  list_type: custom
                  entry_type: country
      responses:
        '201':
          description: 목록이 생성되었습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComplianceList'
              examples:
                New allowlist:
                  value:
                    uuid: 22222222-3333-4444-5555-666666666666
                    name: Trusted office IPs
                    description: Office egress ranges
                    list_type: allowlist
                    entry_type: ip_address
                    is_system: false
                    entry_count: 0
                    last_entry_added_at: null
                    created_at: '2026-10-12T09:15:44.031876Z'
                    updated_at: '2026-10-12T09:15:44.031876Z'
        '400':
          description: 본문이 잘못되었습니다.
          content:
            application/json:
              examples:
                Blocklist refused:
                  value:
                    list_type:
                      - >-
                        Cannot create additional blocklist lists. System
                        blocklists are auto-created for each application.
                Duplicate name:
                  value:
                    name:
                      - >-
                        A list with this name already exists for this
                        application.
                Missing fields:
                  value:
                    name:
                      - This field is required.
                    list_type:
                      - This field is required.
                    entry_type:
                      - This field is required.
                Unknown entry type:
                  value:
                    entry_type:
                      - '"iban" is not a valid choice.'
                Name too long:
                  value:
                    name:
                      - Ensure this field has no more than 255 characters.
        '401':
          description: 스코프가 지정된 API 키가 만료되었습니다. 기타 인증 실패 시에는 `403`이 반환됩니다.
          content:
            application/json:
              examples:
                Expired API key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            `x-api-key` 헤더가 누락되었거나(잘못되었거나 해지되었거나 만료된 키는 `401` 반환), 범위가 지정된 API
            키에 `workflows: write` 권한이 없거나 허용 목록 외부의 IP 주소에서 사용되었습니다.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without workflows access:
                  value:
                    detail: This API key has no write access to workflows.
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/lists/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "name": "Trusted office IPs",
                "description": "Office egress ranges",
                "list_type": "allowlist",
                "entry_type": "ip_address"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.lists.create(
                name="Trusted office IPs",
                description="Office egress ranges",
                list_type="allowlist",
                entry_type="ip_address",
            )
            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.lists.create({
              name: "Trusted office IPs",
              description: "Office egress ranges",
              list_type: "allowlist",
              entry_type: "ip_address",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Create(ctx, didit.ListsCreateParams{\n\tName:        \"Trusted office IPs\",\n\tDescription: didit.String(\"Office egress ranges\"),\n\tListType:    \"allowlist\",\n\tEntryType:   \"ip_address\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.ListsCreateParams;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.lists().create(ListsCreateParams.builder()
                    .name("Trusted office IPs")
                    .description("Office egress ranges")
                    .listType(ListsCreateParams.ListType.of("allowlist"))
                    .entryType(ListsCreateParams.EntryType.of("ip_address"))
                    .build());
            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->lists->create([
                'name' => 'Trusted office IPs',
                'description' => 'Office egress ranges',
                'list_type' => 'allowlist',
                'entry_type' => 'ip_address',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.lists.create(
              name: "Trusted office IPs",
              description: "Office egress ranges",
              list_type: "allowlist",
              entry_type: "ip_address"
            )
            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.Lists.CreateAsync(new ListsCreateParams
            {
                Name = "Trusted office IPs",
                Description = "Office egress ranges",
                ListType = "allowlist",
                EntryType = "ip_address",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ComplianceList:
      type: object
      description: 단일 애플리케이션의 차단 목록, 허용 목록 또는 커스텀 목록입니다.
      required:
        - uuid
        - name
        - description
        - list_type
        - entry_type
        - is_system
        - entry_count
        - last_entry_added_at
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            목록 식별자입니다. 목록 및 항목 endpoint에서 `list_uuid`로 사용하며, `value_type:
            "list"`가 설정된 워크플로 또는 거래 규칙 조건의 값으로 사용합니다.
        name:
          type: string
          maxLength: 255
          description: 목록 이름이며, 애플리케이션의 목록 간에 고유해야 합니다.
        description:
          type: string
          description: 자유 형식 설명입니다. 설정되지 않은 경우 빈 문자열입니다.
        list_type:
          type: string
          enum:
            - blocklist
            - allowlist
            - custom
          description: >-
            `blocklist`: 일치하는 항목이 있으면 세션이나 거래를 거부합니다(시스템 목록 전용, 항목 유형당 하나).
            `allowlist`: 일치하는 항목을 신뢰합니다(예: 얼굴 허용 목록은 중복 얼굴 작업을 건너뜀). 차단 목록 일치
            항목을 재지정할 수는 없습니다. `custom`: 워크플로 및 거래 규칙 조건(`value_type: "list"`)에서
            사용됩니다.
        entry_type:
          type: string
          enum:
            - face
            - document
            - phone
            - email
            - ip_address
            - device_fingerprint
            - wallet_address
            - bank_account
            - country
            - user
            - business
            - key
          description: >-
            목록에 포함되는 항목 유형입니다. `face`, `document`(문서 번호), `phone`, `email`,
            `ip_address`(IP 주소 또는 CIDR 범위), `device_fingerprint`,
            `wallet_address`, `bank_account`, `country`(ISO 3166-1 alpha-3),
            `user` 또는 `business`(귀하의 `vendor_data`), 또는 `key`(모든 문자열)입니다. 항목 값이
            검증되고 일치되는 방식을 결정합니다.
        is_system:
          type: boolean
          description: >-
            Didit이 제공하는 목록의 경우 `true`입니다. 항목 유형당 하나의 차단 목록(`face`, `document`,
            `phone`, `email`, `ip_address`, `device_fingerprint`,
            `wallet_address`, `bank_account`, `user`, `business`), **고위험 국가** 맞춤
            목록 및 시스템 허용 목록이 해당됩니다. 시스템 목록은 이름을 변경하거나 편집 또는 삭제할 수 없으며, 항목의 추가 및
            삭제만 가능합니다.
        entry_count:
          type: integer
          minimum: 0
          description: 현재 목록에 있는 항목 수입니다.
        last_entry_added_at:
          type: string
          format: date-time
          nullable: true
          description: 가장 최근의 현재 항목이 추가된 시점입니다. 빈 목록의 경우 `null`입니다.
        created_at:
          type: string
          format: date-time
          description: 목록이 생성된 시점입니다.
        updated_at:
          type: string
          format: date-time
          description: 목록이 마지막으로 업데이트된 시점입니다.
  responses:
    RateLimitedWrite:
      description: >-
        API 키당 분당 300개의 요청을 처리하는 공유 쓰기 속도 제한을 초과했습니다. 다시 시도하기 전에 `Retry-After`를
        준수하십시오.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  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.