> ## 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 لإنشاء قائمة
        نسخ الموجّه إلى الحافظة



      
      

\<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/ar/management-api/lists/create-entry.md).اختر `entry_type` بعناية: لا يمكن تغييره لاحقاً، وهو يحدد طريقة التحقق من كل قيمة عند إضافتها. راجع [القوائم](https://docs.didit.me/ar/management-api/lists/overview.md) لمعرفة ما يفعله كل نوع من أنواع القوائم.


## OpenAPI

````yaml ar/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/ar/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: >-
            معرّف القائمة. استخدمه كـ `list_uuid` في endpoints الخاصة بالقوائم
            والمدخلات، وكقيمة لشرط قاعدة سير عمل أو قاعدة معاملة مع `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: >-
            تكون القيمة `true` للقوائم التي توفرها Didit: قائمة حظر واحدة لكل
            نوع إدخال (`face`، و`document`، و`phone`، و`email`، و`ip_address`،
            و`device_fingerprint`، و`wallet_address`، و`bank_account`، و`user`،
            و`business`)، والقائمة المخصصة **High Risk Countries**، وقوائم
            السماح الخاصة بالنظام. لا يمكن إعادة تسمية قوائم النظام أو تعديلها
            أو حذفها؛ ولكن يمكنك إضافة مدخلاتها وحذفها.
        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: >-
        تم تجاوز حد الكتابة المشترك البالغ 300 طلب في الدقيقة لكل مفتاح API.
        التزم بالمدة المحددة في `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: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

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