> ## 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.

# Créer une liste via API : liste d'autorisation et personnalisée

> POST /v3/lists/ : créez une liste d'autorisation ou personnalisée dans Didit. Paiement à l'appel, sans engagement.



Invite de l'API de création de liste
        Copier le prompt dans le presse-papiers



      
      

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



      
      

Coller dans

Créez une liste pour votre application. Seules les listes `allowlist` et `custom` peuvent être créées : Didit fournit une liste de blocage système par type d'entrée, à laquelle vous ajoutez des éléments avec [Créer une entrée](https://docs.didit.me/fr/management-api/lists/create-entry.md).Choisissez `entry_type` avec soin : il ne peut pas être modifié par la suite, et il détermine la manière dont chaque valeur est validée lorsque vous l'ajoutez. Consultez [Listes](https://docs.didit.me/fr/management-api/lists/overview.md) pour savoir ce que fait chaque type de liste.


## OpenAPI

````yaml fr/openapi-25.json POST /v3/lists/
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/lists/:
    post:
      tags:
        - Lists
      summary: Créer une liste
      description: >-
        Crée une liste d'autorisation ou une liste personnalisée dans
        l'application à laquelle appartient la clé API. Les listes de blocage ne
        peuvent pas être créées : Didit provisionne une liste de blocage système
        par type d'entrée, et vous pouvez y ajouter des éléments avec [Créer une
        entrée de
        liste](https://docs.didit.me/fr/management-api/lists/create-entry).
        `entry_type` ne peut pas être modifié après la création et détermine la
        manière dont les valeurs d'entrée sont validées et mises en
        correspondance. Les entrées de liste d'autorisation marquent les
        éléments correspondants comme fiables (par exemple, une liste
        d'autorisation faciale ignore l'action de visage dupliqué) et ne
        prévalent jamais sur une correspondance de liste de blocage ; référencez
        n'importe quelle liste depuis une condition de règle de workflow ou de
        transaction avec `value_type: "list"`. Une clé API restreinte nécessite
        `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: >-
                    Nom de la liste. Doit être différent du nom de toutes les
                    autres listes de l'application, listes système incluses.
                description:
                  type: string
                  default: ''
                  description: Description en texte libre optionnelle.
                list_type:
                  type: string
                  enum:
                    - allowlist
                    - custom
                  description: '`allowlist` ou `custom`. `blocklist` est refusé avec `400`.'
                entry_type:
                  type: string
                  enum:
                    - face
                    - document
                    - phone
                    - email
                    - ip_address
                    - device_fingerprint
                    - wallet_address
                    - bank_account
                    - country
                    - user
                    - business
                    - key
                  description: >-
                    Ce que contient la liste : `face`, `document` (numéro de
                    document), `phone`, `email`, `ip_address` (adresse ou plage
                    CIDR), `device_fingerprint`, `wallet_address`,
                    `bank_account`, `country` (ISO 3166-1 alpha-3), `user` ou
                    `business` (vos `vendor_data`), ou `key` (toute chaîne).
                    Cela détermine la manière dont les valeurs des entrées sont
                    validées et mises en correspondance. Ne peut pas être
                    modifié ultérieurement.
            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: La liste a été créée.
          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: Le corps est invalide.
          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: >-
            La clé API restreinte a expiré. Les autres échecs d'authentification
            renvoient `403`.
          content:
            application/json:
              examples:
                Expired API key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            L'en-tête `x-api-key` est manquant (une clé incorrecte, révoquée ou
            expirée renvoie `401`), ou une clé API restreinte n'a pas
            l'autorisation `workflows: write` ou est utilisée depuis une adresse
            IP hors de sa liste d'autorisation.
          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: >-
        Une liste de blocage, une liste d'autorisation ou une liste
        personnalisée d'une application.
      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: >-
            Identifiant de liste. Utilisez-le comme `list_uuid` dans les
            endpoints de liste et d'entrée, et comme valeur d'une condition de
            règle de workflow ou de transaction avec `value_type: "list"`.
        name:
          type: string
          maxLength: 255
          description: Nom de la liste, unique parmi les listes de l'application.
        description:
          type: string
          description: >-
            Description en texte libre. Chaîne vide lorsqu'elle n'est pas
            définie.
        list_type:
          type: string
          enum:
            - blocklist
            - allowlist
            - custom
          description: >-
            `blocklist` : une correspondance refuse la session ou la transaction
            (listes système uniquement, une par type d'entrée). `allowlist` :
            les éléments correspondants sont considérés comme fiables, par
            exemple une liste d'autorisation de visages ignore l'action de
            visage dupliqué ; ne prévaut jamais sur une correspondance de liste
            de blocage. `custom` : utilisé dans les conditions de règles de
            transaction et de workflow (`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: "Ce que contient la liste\_: `face`, `document` (numéro de document), `phone`, `email`, `ip_address` (adresse ou plage CIDR), `device_fingerprint`, `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` ou `business` (vos `vendor_data`), ou `key` (toute chaîne). Cela détermine la manière dont les valeurs des entrées sont validées et mises en correspondance."
        is_system:
          type: boolean
          description: >-
            `true` pour les listes configurées par Didit : une liste de blocage
            par type d'entrée (`face`, `document`, `phone`, `email`,
            `ip_address`, `device_fingerprint`, `wallet_address`,
            `bank_account`, `user`, `business`), la liste personnalisée **High
            Risk Countries** et les listes d'autorisation du système. Les listes
            système ne peuvent être ni renommées, ni modifiées, ni supprimées ;
            vous pouvez ajouter et supprimer leurs entrées.
        entry_count:
          type: integer
          minimum: 0
          description: Nombre d'entrées actuellement dans la liste.
        last_entry_added_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Moment où l'entrée actuelle la plus récente a été ajoutée. `null`
            pour une liste vide.
        created_at:
          type: string
          format: date-time
          description: Moment où la liste a été créée.
        updated_at:
          type: string
          format: date-time
          description: Moment où la liste a été mise à jour pour la dernière fois.
  responses:
    RateLimitedWrite:
      description: >-
        La limite d'écriture partagée de 300 requêtes par minute et par clé API
        a été dépassée. Respectez l'en-tête `Retry-After` avant de réessayer.
      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: >-
        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.