> ## 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 gabarits biométriques

> Didit : GET /v3/biometric-templates/ renvoie la liste paginée des gabarits faciaux sans image, filtrable par utilisateur, statut, source et date.

Renvoie une liste paginée des gabarits biométriques que votre application détient actuellement. Les gabarits purgés ne sont pas répertoriés.

## Paramètres de requête

| Paramètre | Type | Description |
| - | - | - |
| `vendor_data` | chaîne de caractères | Correspondance partielle, sans distinction de casse, sur le `vendor_data` actuel de l'utilisateur propriétaire |
| `vendor_user_uuid` | UUID | Correspondance exacte sur l'utilisateur propriétaire |
| `status` | énumération | `pending`, `active`, `expired`, `held_out_of_use`, `purge_pending`, `purge_failed` |
| `source_type` | énumération | `session_delete`, `automatic_retention`, `backfill` |
| `retained_from` | date-heure | Gabarits biométriques conservés à partir de cette date et heure |
| `retained_to` | date-heure | Gabarits biométriques conservés jusqu'à cette date et heure. Ne doit pas être antérieur à `retained_from`. |
| `ordering` | énumération | `retained_at`, `-retained_at` (par défaut), `expires_at`, `-expires_at` |
| `limit` | entier | Taille de page |
| `offset` | entier | Décalage de pagination |

## Exemple

```bash theme={null}
curl -X GET "https://verification.didit.me/v3/biometric-templates/?vendor_data=user-42&status=active" \
  -H "x-api-key: YOUR_API_KEY"
```

```json theme={null}
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
      "vendor_user_uuid": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f",
      "vendor_data": "user-42",
      "source_type": "session_delete",
      "provenance_reference": "6b1e8d2f-4a3c-4f9e-8c7d-1a2b3c4d5e6f",
      "retention_policy": "retain_until_user_deleted",
      "retention_override": null,
      "retained_at": "2026-08-28T10:15:42.318402Z",
      "expires_at": "2027-08-28T10:15:42.318402Z",
      "retained_by": "3c9e2b1f-7d4a-4e8b-9c1d-5f6a7b8c9d0e",
      "retained_by_type": "API_KEY",
      "instruction_class": "operational_session_delete",
      "instruction_source": "api",
      "instruction_id": "post-approval-cleanup-2026-08",
      "held_out_of_use": false,
      "status": "active",
      "purged_at": null
    }
  ]
}
```

Consultez la [vue d'ensemble](https://docs.didit.me/fr/management-api/biometric-templates/overview.md#objet-du-gabarit-biométrique) pour chaque champ.

## Erreurs

| Statut | Cas |
| - | - |
| `400` | Valeur de filtre invalide, ou `retained_to` antérieur à `retained_from` |
| `403` | Jeton d'utilisateur de la console, ou clé API non autorisée |


## OpenAPI

````yaml fr/openapi-25.json GET /v3/biometric-templates/
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/biometric-templates/:
    get:
      tags:
        - Biometric Templates
      summary: Lister les gabarits biométriques conservés
      description: "Une application ayant activé cette option conserve un gabarit biométrique facial géré séparément et sans image, ancré à l'Utilisateur lorsqu'une session est supprimée (voir `DELETE /v3/session/{sessionId}/delete/`). Les gabarits sont des données biométriques avec un `expires_at` fini\_; ils ne contiennent jamais d'images, de données de session ou de champs d'identité, et ils sont purgés lors de la suppression de l'Utilisateur, d'un effacement pour des raisons de confidentialité, de leur expiration ou d'une purge explicite. Ces endpoints acceptent uniquement les clés API d'application (`x-api-key`)\_; les tokens d'utilisateur de la Business Console sont rejetés avec `403`.\n\nRenvoie une liste paginée des gabarits actuellement détenus par l'application. Les gabarits purgés ne sont pas listés."
      operationId: list_biometric_templates
      parameters:
        - in: query
          name: vendor_data
          required: false
          description: >-
            Correspondance insensible à la casse sur une sous-chaîne du
            `vendor_data` actuel de l'utilisateur propriétaire.
          schema:
            type: string
        - in: query
          name: vendor_user_uuid
          required: false
          description: Correspondance exacte sur l'utilisateur propriétaire.
          schema:
            type: string
            format: uuid
        - in: query
          name: status
          required: false
          description: Statut de cycle de vie. Les modèles purgés ne sont jamais listés.
          schema:
            type: string
            enum:
              - pending
              - active
              - expired
              - held_out_of_use
              - purge_pending
              - purge_failed
        - in: query
          name: source_type
          required: false
          description: Manière dont le modèle a été créé.
          schema:
            type: string
            enum:
              - session_delete
              - automatic_retention
              - backfill
        - in: query
          name: retained_from
          required: false
          description: Modèles conservés à cette date ou après.
          schema:
            type: string
            format: date-time
        - in: query
          name: retained_to
          required: false
          description: >-
            Modèles conservés à cette date ou avant. Ne doit pas être antérieure
            à `retained_from` (`400`).
          schema:
            type: string
            format: date-time
        - in: query
          name: ordering
          required: false
          description: Ordre de tri.
          schema:
            type: string
            enum:
              - retained_at
              - '-retained_at'
              - expires_at
              - '-expires_at'
            default: '-retained_at'
        - in: query
          name: limit
          required: false
          description: Taille de la page.
          schema:
            type: integer
        - in: query
          name: offset
          required: false
          description: Offset de pagination.
          schema:
            type: integer
      responses:
        '200':
          description: Modèles paginés.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: >-
                            Identifiant du modèle. Généré de manière aléatoire ;
                            non dérivé de la session supprimée ou de son visage.
                        vendor_user_uuid:
                          type: string
                          format: uuid
                          description: L'utilisateur propriétaire.
                        vendor_data:
                          type: string
                          nullable: true
                          description: >-
                            Les `vendor_data` actuelles de l'utilisateur,
                            résolues lorsque vous lisez le modèle (jamais
                            copiées).
                        source_type:
                          type: string
                          enum:
                            - session_delete
                            - automatic_retention
                            - backfill
                          description: >-
                            Manière dont le modèle a été créé : suppression
                            d'une session (API ou Console), fenêtre automatique
                            de conservation des données de l'application, ou
                            rétro-remplissage opéré par Didit sur votre
                            instruction.
                        provenance_reference:
                          type: string
                          format: uuid
                          description: >-
                            Référence opaque liant le modèle à son journal
                            d'audit. Il ne s'agit pas de l'identifiant de la
                            session supprimée et il ne peut pas être résolu vers
                            celui-ci.
                        retention_policy:
                          type: string
                          enum:
                            - delete_with_session
                            - retain_until_user_deleted
                          description: >-
                            La politique de l'application au moment de la
                            conservation.
                        retention_override:
                          type: boolean
                          nullable: true
                          description: >-
                            La valeur `retain_face_embeddings` envoyée lors de
                            la suppression, ou `null` lorsque la politique s'est
                            appliquée.
                        retained_at:
                          type: string
                          format: date-time
                        expires_at:
                          type: string
                          format: date-time
                          description: >-
                            Moment où le modèle expire et est purgé
                            automatiquement. Toujours défini.
                        retained_by:
                          type: string
                          nullable: true
                          description: >-
                            Entité principale ayant donné l'instruction : l'ID
                            d'application pour les clés API, l'ID de membre de
                            la Console pour les actions dans la Console, ou un
                            identifiant `service:` pour la conservation
                            automatique. Jamais une adresse e-mail.
                        retained_by_type:
                          type: string
                          enum:
                            - API_KEY
                            - CONSOLE_USER
                            - SYSTEM
                        instruction_class:
                          type: string
                          enum:
                            - operational_session_delete
                            - privacy_erasure
                        instruction_source:
                          type: string
                          enum:
                            - api
                            - console
                            - automatic_retention
                            - backfill
                            - privacy_erasure
                            - explicit_template_purge
                            - vendor_user_delete
                            - expiry
                            - reconciliation
                            - migration
                            - system
                        instruction_id:
                          type: string
                          description: >-
                            L'`instruction_id` envoyé lors de la suppression, ou
                            un identifiant généré par Didit.
                        held_out_of_use:
                          type: boolean
                          description: >-
                            `true` uniquement lorsqu'une obligation légale de
                            conservation (legal hold) s'applique. Un gabarit
                            conservé est exclu de toute mise en correspondance.
                        status:
                          type: string
                          enum:
                            - pending
                            - active
                            - expired
                            - held_out_of_use
                            - purge_pending
                            - purge_failed
                            - purged
                          description: >-
                            Seuls les modèles `active` qui ne sont pas
                            suspendus, dont la date `expires_at` n'est pas
                            dépassée et dont l'utilisateur existe toujours
                            participent à la correspondance.
                        purged_at:
                          type: string
                          format: date-time
                          nullable: true
              examples:
                One active template:
                  value:
                    count: 1
                    next: null
                    previous: null
                    results:
                      - uuid: 9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b
                        vendor_user_uuid: 2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f
                        vendor_data: user-42
                        source_type: session_delete
                        provenance_reference: 6b1e8d2f-4a3c-4f9e-8c7d-1a2b3c4d5e6f
                        retention_policy: retain_until_user_deleted
                        retention_override: null
                        retained_at: '2026-08-28T10:15:42.318402Z'
                        expires_at: '2027-08-28T10:15:42.318402Z'
                        retained_by: 3c9e2b1f-7d4a-4e8b-9c1d-5f6a7b8c9d0e
                        retained_by_type: API_KEY
                        instruction_class: operational_session_delete
                        instruction_source: api
                        instruction_id: post-approval-cleanup-2026-08
                        held_out_of_use: false
                        status: active
                        purged_at: null
        '400':
          description: >-
            Valeur de filtre non valide, ou `retained_to` antérieur à
            `retained_from`. Erreurs de validation indexées par champ.
          content:
            application/json:
              examples:
                Bad range:
                  value:
                    retained_to:
                      - Must be on or after retained_from.
        '403':
          description: >-
            Token de l'utilisateur de la Console, ou clé API non autorisée. Ces
            endpoints acceptent uniquement les clés API d'application.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/biometric-templates/?vendor_data=user-42&status=active'
            \
              -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.biometric_templates.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.biometricTemplates.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.BiometricTemplates.ListAutoPaging(ctx, didit.BiometricTemplatesListParams{})\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.biometricTemplates().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->biometricTemplates->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.biometric_templates.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.BiometricTemplates.ListAsync())

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  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.