> ## 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 de liste des utilisateurs : entités fournisseur

> Récupérez les entités utilisateur de votre application Didit, filtrables par statut, recherche et date. Gestion du cycle de vie par API.



Prompt pour lister les utilisateurs
        Copier le prompt dans le presse-papiers



      
      

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



      
      

Coller dans

## AperçuRenvoie une liste paginée des [entités utilisateur](https://docs.didit.me/fr/entities/users/overview.md) de l'application authentifiée. Utilisez cet endpoint pour synchroniser les utilisateurs avec votre entrepôt de données, identifier les utilisateurs qui requièrent l'attention d'un analyste, ou rechercher par nom d'affichage.## Quand l'utiliser- **Synchronisation périodique** de votre table des utilisateurs vers un outil BI ou un entrepôt de données externe.
- **Files d'attente des analystes** : filtrez par `status=FLAGGED` ou par `last_activity_at` obsolète pour alimenter une boîte de réception dédiée aux examens.
- **Recherche** d'utilisateurs par `display_name`, `full_name` ou `vendor_data`.## Filtres et pagination| Paramètre de requête | Description |
| - | - |
| `status` | Filtre par `ACTIVE`, `FLAGGED` ou `BLOCKED`. |
| `search` | Correspondance partielle sur `vendor_data`, `display_name`, `full_name`, les e-mails et les numéros de téléphone. |
| `country_code` | Filtre par `issuing_states` (ISO 3166-1 alpha-3). |
| `created_after`, `created_before` | Fenêtre de dates de création (ISO 8601). |
| `last_activity_after`, `last_activity_before` | Fenêtre d'activité. |
| `page_size` | 1 à 200. Par défaut : 50. |
| `cursor` | Curseur de pagination renvoyé dans la réponse précédente. |## Notes- Chaque élément de la réponse comprend `didit_internal_id`. `vendor_data` peut être `null` lorsque la session ou la transaction d'origine n'en a pas fourni.
- Cet endpoint pagine à l'aide d'un curseur : conservez le curseur `next` entre les appels et arrêtez-vous lorsque `next` est vide.
- Consultez le [modèle de données utilisateur](https://docs.didit.me/fr/entities/users/data-model.md) pour connaître tous les champs d'une ligne utilisateur.## AutorisationsToute clé API active de l'application peut appeler cet endpoint. Les clés API de Didit sont **limitées à l'application, et non limitées par rôle** : les [rôles et autorisations](https://docs.didit.me/fr/console/roles-permissions.md) de la Console (`list:users` et les autres) déterminent ce qu'une *personne* peut faire dans la Console, et ne sont pas évalués pour le trafic de l'API de gestion. Pour contrôler qui peut appeler cet endpoint, contrôlez qui peut lire la clé API de l'application.## Pages associées- [Vue d'ensemble des utilisateurs](https://docs.didit.me/fr/entities/users/overview.md)
- [Récupérer un utilisateur](https://docs.didit.me/fr/management-api/users/get.md)
- [Opérations sur les utilisateurs](https://docs.didit.me/fr/entities/users/operations.md)


## OpenAPI

````yaml fr/openapi-25.json GET /v3/users/
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/users/:
    get:
      tags:
        - Users
      summary: Lister les utilisateurs
      description: >-
        Lister les [utilisateurs](/entities/users) que Didit regroupe à partir
        des sessions KYC partageant le même `vendor_data` (chaîne libre, et NON
        un UUID), ainsi que les utilisateurs créés via l'API. Paginé, ordonné
        par `last_session_at` décroissant. Cet endpoint ne prend pas en charge
        les paramètres de filtrage ou de recherche — récupérez les pages et
        filtrez côté client.
      operationId: list_users
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Taille de page. Vaut 50 par défaut si omis. Aucun maximum n'est
            imposé, mais conservez des pages de petite taille pour limiter la
            latence.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Décalage de départ (base zéro) du premier enregistrement à
            retourner. Privilégiez l'utilisation de l'URL `next` de la page
            précédente plutôt que de le calculer manuellement.
      responses:
        '200':
          description: >-
            Liste paginée des utilisateurs avec statut de vérification, décompte
            des sessions et détail des fonctionnalités.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Nombre de lignes correspondantes — exact jusqu'à 100,
                      plafonné à 100 au-delà pour des raisons de performance. Ne
                      l'utilisez pas pour détecter la dernière page ; fiez-vous
                      plutôt au fait que `next` soit `null`.
                  next:
                    type: string
                    nullable: true
                    description: >-
                      URL absolue de la page suivante, ou `null` sur la dernière
                      page.
                  previous:
                    type: string
                    nullable: true
                    description: >-
                      URL absolue de la page précédente, ou `null` sur la
                      première page.
                  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: >-
            Aucun identifiant fourni. Les requêtes vers les chemins
            `/v3/users/*` sans en-tête `x-api-key` (ou token `Authorization:
            Bearer`) sont rejetées par le middleware d'authentification avant
            d'atteindre l'API.
          content:
            application/json:
              examples:
                Missing credentials:
                  value:
                    detail: >-
                      You must be authenticated with a valid access token to
                      access this endpoint.
        '403':
          description: >-
            La clé ne peut pas lister les utilisateurs pour cette application.
            Une clé manquante renvoie `403` ; une clé erronée, révoquée ou
            expirée renvoie `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            Limite de débit dépassée ; réduisez la cadence et réessayez après
            l'intervalle indiqué dans `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: Un utilisateur vérifié.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: UUID interne stable de Didit pour cet utilisateur.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Votre identifiant unique pour cet utilisateur (transmis lors de la
            création des sessions). Peut être nul si aucun identifiant
            fournisseur n'a été fourni.
        display_name:
          type: string
          nullable: true
          description: Nom d'affichage personnalisé défini par vous
        full_name:
          type: string
          nullable: true
          description: Nom complet extrait des documents vérifiés
        date_of_birth:
          type: string
          format: date
          nullable: true
        effective_name:
          type: string
          nullable: true
          description: >-
            Meilleur nom disponible : display_name s'il est défini, sinon
            full_name
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            Statut de cycle de vie de l'enregistrement utilisateur (PAS un
            statut de session). `ACTIVE` est la valeur par défaut, `FLAGGED`
            signale l'utilisateur pour un examen manuel, `BLOCKED` empêche de
            nouvelles sessions pour ce `vendor_data`.
        portrait_image_url:
          type: string
          nullable: true
          description: >-
            URL pré-signée de la photo de portrait de l'utilisateur (expire
            après quelques heures)
        session_count:
          type: integer
          description: Nombre total de sessions de vérification pour cet utilisateur
        approved_count:
          type: integer
          description: Nombre de sessions approuvées
        declined_count:
          type: integer
          description: Nombre de sessions refusées
        in_review_count:
          type: integer
          description: Nombre de sessions en cours d'examen
        issuing_states:
          type: array
          items:
            type: string
          description: >-
            Codes ISO 3166-1 alpha-3 des pays de délivrance observés sur les
            documents d'identité approuvés de cet utilisateur, par ex. `["USA",
            "ESP"]`. Tableau vide s'il n'y en a aucun.
        approved_emails:
          type: array
          items:
            type: string
          description: >-
            Adresses e-mail vérifiées collectées à partir des sessions
            approuvées de cet utilisateur, par ex. `["john@example.com"]`.
        approved_phones:
          type: array
          items:
            type: string
          description: >-
            Numéros de téléphone vérifiés collectés à partir des sessions
            approuvées de cet utilisateur, par ex. `["+14155551234"]`.
        features:
          type: object
          description: "Statut agrégé par fonctionnalité sur l'ensemble des sessions de cet utilisateur. Clés possibles\_: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`, `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`, `AGE_ESTIMATION`, `DATABASE_VALIDATION`. Valeurs possibles\_: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub Requested`."
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            Mêmes données que `features`, sous la forme d'un tableau ordonné
            d'objets `{feature, status}`.
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: Horodatage de la session la plus récente
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: Horodatage de la première session
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Horodatage de l'activité la plus récente sur cet utilisateur
            (session, transaction, changement de statut, modification des
            données, etc.).
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: Tags attribués à cet utilisateur
        created_at:
          type: string
          format: date-time
  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.