Skip to main content
By default, deleting a verification session also deletes the face embedding that powered Face Search 1:N and duplicate detection for that session. Applications that need duplicate detection to keep working after session deletion can opt in to biometric-template retention. Didit then deletes the session and all of its data as usual and keeps one separately managed, image-free face biometric template anchored to the session’s User. The Biometric Templates API lets you see exactly which templates your application holds, why, until when, and purge them at any time. Every template is also visible in the Business Console under Lists → Biometric templates and on the owning User’s profile.
A retained biometric template is biometric data. It is not anonymous, it is not transient, and it is not deleted with the session. It stays until its scheduled expiry, an earlier applicable-law deadline, User deletion, a privacy-erasure request, or an explicit purge. Enable retention only when your controller instruction and privacy notice cover it.

How a template is created

Retention requires a User anchor. A session created without vendor_data has no User, so it cannot retain a template; the deletion reports ineligible_no_vendor_user and the embedding is deleted with the session.

What a template contains

Templates are tenant-scoped and used only on your instruction inside your application: duplicate-face and multi-account detection, Biometric Authentication, and your own face lists. They are never used for model training, analytics, cross-organization matching, Networks shared signals, or Didit’s independent fraud processing.

Template object

Status

How templates are used in matching

An active template takes part in exactly the same matching as a live session face: automatic duplicate detection during new sessions, the standalone Face Search API, Biometric Authentication, and your face lists. A hit on a retained template is reported with source: "retained_template", the owning User’s vendor_user_id and vendor_data, and the biometric_template_id. It never carries a session id, a match image, identity details, or a status, because the session that produced the face no longer exists. See Face Search report. A retained template is never blocklisted. If the deleted session’s face was on a face blocklist, that blocklist entry keeps its own independent biometric entry and its own lifecycle: removing the list entry deletes the blocklist entry, and purging the template does not touch the list.

Purge points

All of the following remove the template from matching and delete the stored template: Switching the application policy back to delete_with_session stops new templates from being created but does not purge existing ones. Purge them explicitly. Purges delete the stored template first and only then mark the template purged, so a purge that returns 503 leaves the template in purge_failed, already excluded from matching, and safe to repeat. A repeated purge of an already purged template returns already_purged.

Audit trail

Every retain and purge attempt, including failures and ineligible outcomes, is recorded with the acting principal (retained_by / purging principal and type), instruction_class, instruction_source, instruction_id, provenance_reference, and the outcome. Send your own instruction_id on deletions so you can correlate Didit’s audit trail with your erasure log. Audit entries never contain images, vectors, identity fields, or email addresses. A legal hold is an exception, never a retention mode. Didit does not place holds on its own initiative; a hold can only follow a documented instruction under your Data Processing Agreement or a binding order from a competent authority. While a hold applies the template is marked held_out_of_use: it is excluded from every kind of matching and from routine recovery, and it is never searchable. There is no API to create or lift holds. Contact your Didit representative if you receive an order that affects retained templates.

Permissions and authentication

The Biometric Templates endpoints accept application API keys only (x-api-key). Business Console user tokens are rejected with 403. Console users manage templates through Lists → Biometric templates with their lists permissions.

Endpoints