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

# Daftar Templat Biometrik API

> GET /v3/biometric-templates/ mengambil daftar templat wajah tanpa gambar yang disimpan aplikasi Anda di Didit, dengan paginasi dan filter.

Mengembalikan daftar berpaginasi dari templat biometrik yang saat ini dimiliki aplikasi Anda. Templat yang telah dihapus permanen tidak ditampilkan dalam daftar.

## Parameter kueri

| Parameter | Tipe | Deskripsi |
| - | - | - |
| `vendor_data` | string | Pencocokan substring yang tidak membedakan huruf besar-kecil pada `vendor_data` milik Pengguna pemilik saat ini |
| `vendor_user_uuid` | UUID | Pencocokan persis terhadap Pengguna pemilik |
| `status` | enum | `pending`, `active`, `expired`, `held_out_of_use`, `purge_pending`, `purge_failed` |
| `source_type` | enum | `session_delete`, `automatic_retention`, `backfill` |
| `retained_from` | datetime | Templat yang disimpan pada atau setelah waktu ini |
| `retained_to` | datetime | Templat yang disimpan pada atau sebelum waktu ini. Tidak boleh lebih awal dari `retained_from`. |
| `ordering` | enum | `retained_at`, `-retained_at` (bawaan), `expires_at`, `-expires_at` |
| `limit` | bilangan bulat | Ukuran halaman |
| `offset` | bilangan bulat | Offset paginasi |

## Contoh

```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
    }
  ]
}
```

Lihat [ikhtisar](https://docs.didit.me/id/management-api/biometric-templates/overview.md#objek-templat) untuk setiap kolom.

## Error

| Status | Kapan |
| - | - |
| `400` | Nilai filter tidak valid, atau `retained_to` lebih awal dari `retained_from` |
| `403` | Token pengguna Konsol, atau kunci API tidak diizinkan |


## OpenAPI

````yaml id/openapi-25.json GET /v3/biometric-templates/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/biometric-templates/:
    get:
      tags:
        - Biometric Templates
      summary: Mencantumkan templat biometrik yang disimpan
      description: >-
        Aplikasi yang ikut serta menyimpan satu templat biometrik wajah tanpa
        gambar yang dikelola secara terpisah dan ditautkan ke Pengguna ketika
        sesi dihapus (lihat `DELETE /v3/session/{sessionId}/delete/`). Templat
        adalah data biometrik dengan `expires_at` yang terbatas; templat tidak
        pernah berisi gambar, data sesi, atau kolom identitas, dan dihapus
        secara permanen saat Pengguna dihapus, penghapusan privasi, kedaluwarsa,
        atau penghapusan permanen eksplisit. Endpoint ini hanya menerima kunci
        API aplikasi (`x-api-key`); token pengguna Business Console akan ditolak
        dengan `403`.


        Mengembalikan daftar terpaginasi dari templat yang saat ini disimpan
        oleh aplikasi. Templat yang telah dihapus permanen tidak dicantumkan.
      operationId: list_biometric_templates
      parameters:
        - in: query
          name: vendor_data
          required: false
          description: >-
            Pencocokan substring yang tidak peka huruf besar/kecil pada
            `vendor_data` milik Pengguna yang memilikinya saat ini.
          schema:
            type: string
        - in: query
          name: vendor_user_uuid
          required: false
          description: Kecocokan persis pada pengguna pemilik.
          schema:
            type: string
            format: uuid
        - in: query
          name: status
          required: false
          description: >-
            Status siklus hidup. Templat yang dihapus permanen tidak akan pernah
            dicantumkan.
          schema:
            type: string
            enum:
              - pending
              - active
              - expired
              - held_out_of_use
              - purge_pending
              - purge_failed
        - in: query
          name: source_type
          required: false
          description: Bagaimana templat dibuat.
          schema:
            type: string
            enum:
              - session_delete
              - automatic_retention
              - backfill
        - in: query
          name: retained_from
          required: false
          description: Templat yang dipertahankan pada atau setelah waktu ini.
          schema:
            type: string
            format: date-time
        - in: query
          name: retained_to
          required: false
          description: >-
            Templat yang dipertahankan pada atau sebelum waktu ini. Tidak boleh
            lebih awal dari `retained_from` (`400`).
          schema:
            type: string
            format: date-time
        - in: query
          name: ordering
          required: false
          description: Urutan pengurutan.
          schema:
            type: string
            enum:
              - retained_at
              - '-retained_at'
              - expires_at
              - '-expires_at'
            default: '-retained_at'
        - in: query
          name: limit
          required: false
          description: Ukuran halaman.
          schema:
            type: integer
        - in: query
          name: offset
          required: false
          description: Offset paginasi.
          schema:
            type: integer
      responses:
        '200':
          description: Templat terpaginasi.
          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: >-
                            ID templat. Dibuat secara acak; tidak diturunkan
                            dari sesi yang dihapus atau wajahnya.
                        vendor_user_uuid:
                          type: string
                          format: uuid
                          description: Pengguna pemilik.
                        vendor_data:
                          type: string
                          nullable: true
                          description: >-
                            `vendor_data` Pengguna saat ini, diselesaikan saat
                            Anda membaca templat (tidak pernah disalin).
                        source_type:
                          type: string
                          enum:
                            - session_delete
                            - automatic_retention
                            - backfill
                          description: >-
                            Cara templat dibuat: penghapusan sesi (API atau
                            Console), jendela retensi data otomatis aplikasi,
                            atau backfill yang dilakukan Didit atas instruksi
                            Anda.
                        provenance_reference:
                          type: string
                          format: uuid
                          description: >-
                            Referensi tidak transparan yang menghubungkan
                            templat ke jejak auditnya. Ini bukan id sesi yang
                            dihapus dan tidak dapat dikaitkan dengan id
                            tersebut.
                        retention_policy:
                          type: string
                          enum:
                            - delete_with_session
                            - retain_until_user_deleted
                          description: Kebijakan aplikasi pada saat retensi.
                        retention_override:
                          type: boolean
                          nullable: true
                          description: >-
                            Nilai `retain_face_embeddings` yang dikirim pada
                            penghapusan, atau `null` saat kebijakan diterapkan.
                        retained_at:
                          type: string
                          format: date-time
                        expires_at:
                          type: string
                          format: date-time
                          description: >-
                            Waktu templat kedaluwarsa dan dihapus secara
                            otomatis. Selalu ditetapkan.
                        retained_by:
                          type: string
                          nullable: true
                          description: >-
                            Prinsipal yang memberikan instruksi: id aplikasi
                            untuk kunci API, id anggota Console untuk tindakan
                            Console, atau pengidentifikasi `service:` untuk
                            retensi otomatis. Tidak pernah berupa alamat email.
                        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: >-
                            `instruction_id` yang dikirim pada penghapusan, atau
                            id yang dibuat oleh Didit.
                        held_out_of_use:
                          type: boolean
                          description: >-
                            `true` hanya selama penahanan hukum berlaku. Templat
                            yang ditahan dikecualikan dari semua pencocokan.
                        status:
                          type: string
                          enum:
                            - pending
                            - active
                            - expired
                            - held_out_of_use
                            - purge_pending
                            - purge_failed
                            - purged
                          description: >-
                            Hanya templat `active` yang tidak ditahan, belum
                            melewati `expires_at`, dan Penggunanya masih ada
                            yang diikutsertakan dalam pencocokan.
                        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: >-
            Nilai filter tidak valid, atau `retained_to` lebih awal dari
            `retained_from`. Kesalahan validasi dengan kunci berdasarkan kolom.
          content:
            application/json:
              examples:
                Bad range:
                  value:
                    retained_to:
                      - Must be on or after retained_from.
        '403':
          description: >-
            Token pengguna konsol, atau kunci API tidak diizinkan. Endpoint ini
            hanya menerima kunci API aplikasi.
          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: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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