> ## 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 para eliminar sesiones: derecho al olvido del RGPD

> Didit elimina una sesión KYC o KYB y todos sus datos, incluido el embedding facial. Si se activa, queda una plantilla biométrica sin imágenes.



Prompt para eliminar una sesión
        Copiar el prompt al portapapeles



      
      

\<pre>

\`Delete a single Didit verification session and all of its data, and control what happens to the face biometric data.

Endpoint:
DELETE https://verification.didit.me/v3/session/{session_id}/delete/

Authentication:
Use the x-api-key header with your Didit API key. Privilege: delete:sessions.

Path parameter:
\- session_id (UUID) — works for both User Verification (KYC) and Business Verification (KYB) sessions. Didit resolves the id against both session types.

Optional JSON body (send Content-Type: application/json; omit the body entirely for the default behavior):
\- retain_face_embeddings (boolean | null) — override the application's face_retention_policy for this deletion. true keeps an image-free biometric template anchored to the session's User; false deletes the face embedding with the session; omit or null to follow the application policy.
\- face_retention_days (integer 1-3650) — finite retention duration for the template. Required when retaining unless the application already sets face_retention_days.
\- face_retention_deadline (ISO 8601 datetime, future) — optional hard expiry. The template expires at the earliest of face_retention_days, the application's data-retention window, and this deadline.
\- deletion_instruction ("operational_session_delete" default | "privacy_erasure") — privacy_erasure purges every retained biometric template for the session's User and never retains a new one, regardless of the application policy. Combining privacy_erasure with retain_face_embeddings: true is rejected with 400.
\- instruction_id (string, max 255) — your own durable reference for this deletion instruction (for example your erasure-ticket id). Stored on the audit trail and on any retained template.

curl examples:
Default (follow the application policy; delete_with_session unless you opted in):
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>"

Delete the session but keep an image-free biometric template for 365 days:
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"retain_face_embeddings": true, "face_retention_days": 365}'

Right-to-erasure request (delete the session AND purge every retained template for that person):
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'

Response: 200 OK with a JSON body once the deletion has completed (this endpoint no longer returns 204):
\{
"session_id": "<uuid>",
"session_number": 1024,
"face_retention_outcome": "deleted" | "retained_with_user" | "none" | "ineligible_no_vendor_user",
"biometric_template_uuid": "<uuid>" | null,
"biometric_template_expires_at": "<ISO 8601 datetime>" | null,
"deleted_child_verifications": 0
}
\- deleted: the session and its face embedding are deleted (default behavior).
\- retained_with_user: the session is deleted; an image-free biometric template with the returned biometric_template_uuid stays anchored to the User until biometric_template_expires_at, User deletion, privacy erasure, or explicit purge. Manage it with GET/DELETE /v3/biometric-templates/{uuid}/.
\- none: the session had no face embedding (for example a KYB session or a document-only KYC session).
\- ineligible_no_vendor_user: retention was requested but the session has no linked User (no vendor_data), so nothing can anchor the template. The session and its embedding are deleted.
\- biometric_template_expires_at: when the retained template is deleted; null when no template is retained.
\- deleted_child_verifications: for a KYB session, how many verifications it created (its key people's KYC sessions and its corporate owners' KYB sessions, recursively) were deleted with it. Always 0 for a KYC session.

Behavior:
\- The session and every verification attempt it holds are deleted, including results a resubmission replaced: the decision, the extracted data, the associated feature records (ID verification, registry checks, documents, AML, IP, etc.), its reviews and activity log, and all stored files (document images, videos, portraits, selfies, POA documents, extra uploads, and E-signature documents, signed PDFs, evidence PDFs and signature images).
\- A KYB session is deleted together with the verifications it created for its key people and corporate owners. A verification it only links to (for example a reused, already approved KYC) is not deleted.
\- The session disappears immediately from /v3/sessions/ and /v3/session/{id}/decision/, and media URLs issued before the call stop resolving.
\- Webhook deliveries still queued for the session, and their retries, are dropped. Webhooks already delivered are not affected.
\- Ongoing AML monitoring and KYB registry monitoring started by the deleted verifications stop.
\- A retained biometric template never contains the face image, liveness video, document data, extracted identity fields, the decision, or the deleted session's id. It is biometric data, tenant-scoped, used only for your duplicate-face, multi-account, biometric-authentication, and list matching, and it is never used for model training or cross-customer fraud processing.
\- Share tokens issued for the session are NOT revoked, but there is nothing left for them to import: an import with one returns 400 {"share_token": ["Original session does not exist."]}.
\- Blocklist entries created from the session are NOT removed; manage those with the Lists endpoints.
\- Credits already consumed by the verification are NOT refunded.
\- The parent User or Business entity is NOT deleted; use POST /v3/users/delete/ or POST /v3/businesses/delete/ for those. Deleting the User also purges its retained biometric templates. If the User's profile portrait came from this session, the portrait is removed.
\- No webhook fires for the deletion itself.

Idempotency:
Idempotent in effect: the second call to the same session returns 404 because the session no longer exists. Deletion is permanent and cannot be undone.

Failure modes:
\- 400: {"retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."]} or {"detail": "A finite biometric-template retention duration is required."} (retention requested without face_retention_days on the request or the application). Nothing is deleted.
\- 403: {"detail": "You do not have permission to perform this action."} when the key lacks delete:sessions.
\- 404: {"detail": "Not found."} when the session does not exist (or was already deleted).
\- 409: {"detail": "...", "code": "in_filed_report", "reports": [{"uuid": "...", "report_number": "SAR-0001", "report_type": "SAR", "case_uuid": "..."}]} when the session is part of a finalized regulatory report. Nothing is deleted. Delete the reports, then repeat the request.
\- 503: {"detail": "The session could not be deleted because a storage service or a monitoring provider is unavailable. The session is still in place; repeat the request to finish deleting it."} or {"detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."} The session is still in place; repeat the same request until it returns 200. Some of its stored files or its face embedding may already be deleted. Retries converge on a single template.

Bulk delete:
For many KYC sessions at once, use POST /v3/sessions/delete/ with body {"session_numbers": ["1001", "1002"]} or {"delete_all": true}; it accepts the same retention and instruction fields. Up to 20 matching sessions return 200 with a per-session outcome; more return 202 with a job to poll at GET /v3/sessions/delete/{job_id}/.

Migration note:
Until this release the endpoint returned 204 No Content. It now returns 200 OK with the JSON body above. Update clients that assert on 204. The default deletion behavior is unchanged: existing applications stay on delete_with_session until you explicitly change the policy.

When to call:
\- Customer requests data erasure (GDPR Article 17): use deletion_instruction: "privacy_erasure".
\- Operational clean-up after approval while keeping duplicate detection: retain_face_embeddings: true with a finite face_retention_days.
\- Cleaning up test sessions from a staging application.
\- After exporting a decision PDF for long-term archival outside Didit.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Pegar en

## Compatibilidad con KYC y KYBFunciona tanto con sesiones de **Verificación de usuario (KYC)** como de **Verificación de empresas (KYB)**. El `session_id` se busca en ambos tipos de sesión y el comportamiento de eliminación es el mismo para ambos. La retención de la plantilla biométrica solo se aplica a las sesiones KYC, porque solo las sesiones KYC contienen un embedding facial.## Comportamiento- La sesión se elimina junto con todos los intentos de verificación que contiene, incluidos los resultados sustituidos por un reenvío: su decisión, sus datos extraídos, los registros de las funciones asociadas (verificaciones de identidad, consultas a registros, documentos, AML, análisis de IP, etc.), sus revisiones y su registro de actividad, y todos sus archivos almacenados.
- Al eliminar una sesión de **Verificación de empresas (KYB)** también se eliminan, de forma recursiva, las verificaciones que creó para sus personas clave (KYC) y sus propietarios corporativos (KYB). La respuesta indica cuántas se eliminaron en `deleted_child_verifications`. Una verificación a la que solo está vinculada, como un KYC aprobado ya existente que reutilizó, no se elimina.
- Los datos de firma electrónica también se eliminan: los documentos para firmar y sus archivos Word originales, los PDF firmados, los PDF de evidencias, las imágenes de las firmas y el valor de cada campo. Sus rutas de descarga devuelven `404`.
- La sesión desaparece de inmediato de las respuestas de listado y de decisión, y las URL de archivos multimedia emitidas antes de la llamada dejan de funcionar.
- Las entregas de webhook que seguían en cola para la sesión, y sus reintentos, se descartan.
- La monitorización AML continua y la monitorización de registros KYB iniciadas por las verificaciones eliminadas se detienen.
- La eliminación es permanente e irreversible. No existe ningún endpoint de restauración, así que exporta todo lo que necesites, como el PDF de una decisión, antes de invocar este endpoint.
- La respuesta es `200 OK`, se envía cuando la eliminación ha terminado e incluye un cuerpo JSON que indica qué ocurrió con los datos biométricos faciales de la sesión. Consulta [Migración](#migración-de-respuestas-204) si tu cliente todavía espera `204`.## Datos en un informe regulatorio finalizadoSi la sesión forma parte de un caso con un informe regulatorio finalizado, la solicitud devuelve `409` y no se elimina nada. La respuesta usa `code: in_filed_report` e identifica cada informe:```json theme={null}
{
  "detail": "This session is part of a finalized regulatory report, so it cannot be deleted.",
  "code": "in_filed_report",
  "reports": [
    {
      "uuid": "5ec00000-0000-4000-8000-000000000007",
      "report_number": "SAR-0001",
      "report_type": "SAR",
      "case_uuid": "c1a5e000-0000-4000-8000-000000000001"
    }
  ]
}
```Elimina cada informe con [Eliminar informe](https://docs.didit.me/es/management-api/regulatory-reports/delete.md) y luego repite la eliminación. Eliminar el informe no elimina la sesión: la sesión se conserva hasta que vuelvas a llamar a este endpoint.## Datos biométricos faciales: eliminar o conservarCada sesión de KYC con una selfie de prueba de vida incluye un embedding facial que permite la [Búsqueda facial 1:N](https://docs.didit.me/es/core-technology/face-search/overview.md) y la detección de duplicados. De forma predeterminada, ese embedding se elimina junto con la sesión (`face_retention_policy: delete_with_session`), de modo que una persona cuya sesión eliminaste puede verificarse de nuevo sin que se la marque como duplicada.Las aplicaciones que necesitan que la detección de duplicados se mantenga tras eliminar una sesión pueden activar la **conservación de plantillas biométricas**. En ese caso, Didit elimina la sesión y todos sus datos como siempre, y conserva una plantilla biométrica facial sin imágenes, gestionada por separado y vinculada al [Usuario](https://docs.didit.me/es/entities/users/overview.md) de la sesión.> [!WARNING]
>
> Una plantilla biométrica conservada es un dato biométrico. No es anónima, no es temporal y no se elimina con la sesión. Se conserva hasta su fecha de caducidad programada, un plazo anterior que imponga la ley aplicable, la eliminación del Usuario, una solicitud de supresión por privacidad o una purga explícita. Activa la conservación solo cuando tu instrucción como responsable del tratamiento y tu aviso de privacidad la contemplen.Qué contiene y qué no contiene una plantilla conservada:| Se conserva | Nunca se conserva |
| - | - |
| La plantilla facial numérica que se usa para la comparación | La imagen del rostro, el video de prueba de vida, las imágenes del documento, los recortes del retrato y cualquier otro contenido multimedia |
| Un nuevo ID aleatorio de plantilla y un `provenance_reference` opaco | El ID, el número, la decisión, los campos de identidad extraídos o los payloads de funciones de la sesión eliminada |
| El Usuario propietario (`vendor_user_uuid`, `vendor_data` actual) | El estado de la lista de bloqueo, las coincidencias anteriores, las etiquetas de fraude o las afirmaciones de identidad entre organizaciones |
| Metadatos de conservación: `retained_at`, `expires_at`, la política, la anulación, la clase de instrucción, `instruction_id` y el ID del principal que actúa | Las direcciones de correo electrónico de quien actúa |La conservación se configura en tres niveles, del más general al más específico:1) **Política de la aplicación** en **Business Console → App Settings → Data retention** o mediante `PATCH /v3/webhook/` (`face_retention_policy`, `face_retention_days`). Consulta [Retención de datos](https://docs.didit.me/es/console/data-retention.md#retención-de-plantillas-biométricas).
2) **Anulación por solicitud** con `retain_face_embeddings` en este endpoint y en [Eliminar sesiones en lote](https://docs.didit.me/es/management-api/sessions/batch-delete.md).
3) **Clase de instrucción** con `deletion_instruction`. Una instrucción `privacy_erasure` siempre prevalece: purga todas las plantillas conservadas de ese Usuario y nunca conserva una nueva.### Cuerpo de la solicitudTodos los campos son opcionales. Omite el cuerpo para seguir la política de la aplicación.| Campo | Tipo | Descripción |
| - | - | - |
| `retain_face_embeddings` | booleano o null | Anula la política de la aplicación para esta eliminación. `true` conserva una plantilla, `false` elimina el embedding con la sesión, y `null` o su omisión siguen la política. |
| `face_retention_days` | entero (1-3650) | Duración finita de conservación de la plantilla. Es obligatorio cuando se conserva una plantilla, salvo que la aplicación ya defina `face_retention_days`. |
| `face_retention_deadline` | fecha y hora (ISO 8601) | Caducidad máxima opcional. Debe ser una fecha futura. |
| `deletion_instruction` | `operational_session_delete` (predeterminado) o `privacy_erasure` | La clase de instrucción que das. `privacy_erasure` purga todas las plantillas conservadas del Usuario de la sesión antes de eliminar la sesión y no se puede combinar con `retain_face_embeddings: true`. |
| `instruction_id` | string (máx. 255) | Tu referencia permanente para esta instrucción, por ejemplo el ID de tu ticket de supresión. Se registra en el registro de auditoría y en cualquier plantilla conservada. Si lo omites, Didit genera uno, que puedes consultar en el detalle de la plantilla. |### Respuesta```json theme={null}
{
  "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
  "session_number": 1024,
  "face_retention_outcome": "retained_with_user",
  "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
  "biometric_template_expires_at": "2027-10-09T10:15:00Z",
  "deleted_child_verifications": 0
}
```| Campo | Descripción |
| - | - |
| `session_id` | La sesión eliminada. |
| `session_number` | El número de la sesión eliminada. |
| `face_retention_outcome` | Qué ocurrió con los datos biométricos faciales de la sesión. Consulta la tabla siguiente. |
| `biometric_template_uuid` | ID de la plantilla biométrica conservada cuando `face_retention_outcome` es `retained_with_user`; `null` en los demás casos. |
| `biometric_template_expires_at` | Cuándo se elimina la plantilla biométrica conservada; `null` cuando no se conserva ninguna plantilla. |
| `deleted_child_verifications` | En una sesión de KYB, cuántas de las verificaciones que creó (las sesiones de KYC de sus personas clave y las sesiones de KYB de sus propietarios corporativos, de forma recursiva) se eliminaron con ella. Siempre `0` en una sesión de KYC. || `face_retention_outcome` | Significado |
| - | - |
| `deleted` | La sesión y su embedding facial se eliminan. Comportamiento predeterminado. |
| `retained_with_user` | La sesión se elimina. Una plantilla biométrica sin imágenes permanece vinculada al Usuario; su ID es `biometric_template_uuid`. Gestiónala con la [API de plantillas biométricas](https://docs.didit.me/es/management-api/biometric-templates/overview.md). |
| `none` | La sesión no tenía ningún embedding facial que eliminar o conservar (por ejemplo, una sesión de KYB o una sesión de KYC sin selfie de prueba de vida). |
| `ineligible_no_vendor_user` | Se solicitó la conservación, pero la sesión no está vinculada a un Usuario (se creó sin `vendor_data`), por lo que no hay nada a lo que vincular una plantilla. La sesión y su embedding se eliminan. El resultado de no elegibilidad se registra en el registro de auditoría. |La respuesta confirma que Didit aceptó y aplicó tu instrucción de eliminación. No es un certificado de supresión: guarda el `instruction_id` en tu propio registro de supresiones para poder correlacionarlo más adelante con el registro de auditoría.### Duración de la conservación y caducidadCada plantilla conservada tiene un `expires_at` finito. Didit lo fija en el primero de estos valores:1) `face_retention_days` de la solicitud, o el `face_retention_days` de la aplicación cuando la solicitud lo omite;
2) el plazo general de retención de datos de la aplicación, cuando hay uno configurado;
3) `face_retention_deadline` de la solicitud, cuando se proporciona.Una solicitud que conservaría una plantilla sin ninguna duración finita se rechaza con `400` y no se elimina nada. Las plantillas conservadas no pueden durar más allá de lo primero que ocurra entre la instrucción aplicable del cliente, el fin de la finalidad, la caducidad configurada, la instrucción de supresión del interesado o el plazo legal para datos biométricos. Eres responsable de elegir una duración que cumpla las leyes aplicables a tus usuarios; elige una más corta siempre que una norma aplicable lo exija.### Supresión por privacidadEnvía `deletion_instruction: "privacy_erasure"` cuando atiendas una solicitud de un titular de los datos. Didit purga todas las plantillas biométricas conservadas vinculadas al Usuario de la sesión y, después, elimina la sesión y su embedding. La política de retención de la aplicación no puede anular una instrucción de supresión por privacidad, y `retain_face_embeddings: true` se rechaza con `400`.Eliminar el Usuario con [Batch Delete Users](https://docs.didit.me/es/management-api/users/delete.md) también purga sus plantillas conservadas.## Qué no se ve afectadoEliminar una sesión no elimina estos elementos por ti. Si atiendes una solicitud de derecho de supresión, gestiónalos por separado.- Las **entradas de la lista de bloqueo** creadas a partir de la sesión (de rostro o de documento) se mantienen. Elimínalas de la [lista de bloqueo](https://docs.didit.me/es/entities/users/blocklist.md). Una entrada de rostro en la lista de bloqueo conserva su propia entrada biométrica, independiente de cualquier plantilla conservada.
- Los **tokens para compartir** ya emitidos para la sesión no se revocan, pero ya no queda nada que puedan importar: una operación de [importación](https://docs.didit.me/es/sessions-api/share-session/import.md) con uno de ellos devuelve `400` con `{"share_token": ["Original session does not exist."]}`.
- Los **webhooks ya entregados** para la sesión no se ven afectados. Las entregas que aún están en cola, y sus reintentos, se descartan. No se emite ningún webhook por la propia eliminación.
- Los **créditos ya consumidos** por la verificación no se reembolsan.
- Las **copias firmadas ya enviadas por correo** a un firmante por un paso de firma electrónica están en el buzón del firmante y no se ven afectadas.
- La entidad principal (**Usuario** o **Empresa**) no se elimina. Para ello, usa [Delete Users](https://docs.didit.me/es/management-api/users/delete.md) o [Delete Businesses](https://docs.didit.me/es/management-api/businesses/delete.md). Si el retrato de perfil del Usuario procedía de la sesión eliminada, el retrato se elimina.
- Una **plantilla biométrica conservada** (solo si activaste esta opción) se mantiene hasta que caduca o la purgas. Púrgala con la [API de plantillas biométricas](https://docs.didit.me/es/management-api/biometric-templates/purge.md), eliminando el Usuario o repitiendo la eliminación de otra sesión del mismo Usuario con `deletion_instruction: "privacy_erasure"`.## Ejemplos> [tab] Predeterminado (política de la aplicación)
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> Respuesta en una aplicación que no ha activado la retención:
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Conservar una plantilla biométrica
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": true, "face_retention_days": 365, "instruction_id": "cleanup-2026-08-0142"}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "retained_with_user",
>   "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
>   "biometric_template_expires_at": "2027-10-09T10:15:00Z",
>   "deleted_child_verifications": 0
> }
> ```> [tab] Forzar la eliminación en una aplicación con retención activada
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": false}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Supresión por privacidad
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'
> ```
>
> Primero se purgan todas las plantillas conservadas del Usuario de la sesión y, después, se elimina la sesión:
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Sesión sin Usuario
>
> Una sesión creada sin `vendor_data` no tiene ningún Usuario al que vincular una plantilla:
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/7a1e9c2d-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": true, "face_retention_days": 365}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c",
>   "session_number": 1031,
>   "face_retention_outcome": "ineligible_no_vendor_user",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Sesión de Verificación de empresas (KYB)
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/bs-01HJX1.../delete/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> La verificación de la empresa se elimina junto con las tres verificaciones que creó para sus personas clave:
>
> ```json theme={null}
> {
>   "session_id": "0f3c9b7e-2d1a-4e5f-8c6b-7a9d8e1f2c3b",
>   "session_number": 88,
>   "face_retention_outcome": "none",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 3
> }
> ```## Errores| Estado | Cuándo | Cuerpo |
| - | - | - |
| `400` | `privacy_erasure` combinado con `retain_face_embeddings: true` | `{"retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."]}` |
| `400` | Se solicitó la retención sin una duración finita en la solicitud ni en la aplicación | `{"detail": "A finite biometric-template retention duration is required."}` |
| `403` | La credencial no tiene `delete:sessions` o no es propietaria de la sesión | `{"detail": "You do not have permission to perform this action."}` |
| `404` | Sesión desconocida o ya eliminada | `{"detail": "Not found."}` |
| `503` | Un servicio de almacenamiento o un proveedor de monitorización no estaba disponible al eliminar la sesión. | `{"detail": "The session could not be deleted because a storage service or a monitoring provider is unavailable. The session is still in place; repeat the request to finish deleting it."}` |
| `503` | Un almacén biométrico no estaba disponible al conservar o purgar una plantilla. Los reintentos se aplican a una única plantilla. | `{"detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."}` |Con `400` no se elimina nada. Con `503` la sesión sigue existiendo: repite la misma solicitud hasta que devuelva `200`. Es posible que algunos de sus archivos almacenados o su embedding facial ya se hayan eliminado, así que no dependas de ellos después de un `503`.## PermisoRequiere `delete:sessions`. El mismo permiso cubre tanto las sesiones de verificación de usuarios (KYC) como las de verificación de empresas (KYB), además de la anulación de la retención.## Eliminación por lotesPara operaciones masivas sobre sesiones KYC, usa `POST /v3/sessions/delete/`. Acepta los mismos campos de retención y de instrucción. En la propia solicitud se eliminan hasta 20 sesiones coincidentes, con un resultado por sesión; si hay más, se ejecutan como un [trabajo de eliminación](https://docs.didit.me/es/management-api/sessions/get-deletion-job.md). Consulta [Batch Delete Sessions](https://docs.didit.me/es/management-api/sessions/batch-delete.md).## Migración de respuestas 204Hasta esta versión, el endpoint devolvía `204 No Content`. Ahora devuelve `200 OK` con el cuerpo JSON documentado más arriba, para que cada eliminación informe de su `face_retention_outcome`. Actualiza los clientes que comprueban `204`.El comportamiento predeterminado no cambia: las aplicaciones existentes se mantienen en `delete_with_session` y ninguna migración activa la retención en tu nombre. Actívala de forma explícita en la consola o mediante `PATCH /v3/webhook/`.## Relacionado- [Plantillas biométricas](https://docs.didit.me/es/management-api/biometric-templates/overview.md)
- [Retención de datos](https://docs.didit.me/es/console/data-retention.md)
- [Visión general de las sesiones](https://docs.didit.me/es/sessions-api/overview.md)


## OpenAPI

````yaml es/openapi-25.json DELETE /v3/session/{sessionId}/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/delete/:
    delete:
      tags:
        - Sessions
      summary: Eliminar una sesión de verificación (KYC o KYB)
      description: >-
        Elimina una única sesión de verificación, de Verificación de usuarios
        (KYC) o de Verificación de empresas (KYB), mediante su `session_id`. El
        id se busca primero entre las sesiones KYC y después entre las sesiones
        KYB, por lo que ambos tipos se eliminan con esta misma URL.


        **Qué se elimina:**

        - La sesión y todos los intentos de verificación que contiene, incluidos
        los resultados que sustituyó un reenvío: la decisión, los datos
        extraídos, todos los registros de funciones relacionados (verificación
        de identidad, rostro, prueba de vida, coincidencia facial, AML,
        comprobaciones en registros, análisis de IP, etc.), sus revisiones y su
        registro de actividad.

        - Todos los archivos almacenados que pertenecen a la sesión: fotos del
        anverso y reverso del documento (versiones completas, recortadas y
        difuminadas por privacidad), videos de captura del documento, recortes
        del retrato, imágenes del retrato y de la firma del chip NFC, imágenes
        faciales de referencia, videos de prueba de vida, imágenes de origen y
        destino de la coincidencia facial, documentos de Prueba de domicilio y
        cualquier archivo adicional subido (KYC); documentos de la empresa
        subidos y archivos adicionales (KYB). Documentos de Firma electrónica,
        PDF firmados, PDF de evidencias e imágenes de firma (KYC y KYB): sus
        rutas de descarga dejan de funcionar. Las URL de medios emitidas
        anteriormente (`https://<media-host>/...`) dejan de resolverse.

        - Los datos faciales de la sesión. Su embedding facial también se
        elimina, salvo que elijas conservar una plantilla sin imágenes (consulta
        **Datos biométricos faciales**).

        - Las entregas de webhook que sigan en cola para la sesión y sus
        reintentos. Los webhooks ya entregados no se ven afectados.

        - En una sesión de Verificación de empresas (KYB): las verificaciones
        que creó para sus personas clave (KYC) y sus propietarios corporativos
        (KYB), de forma recursiva, que se indican en
        `deleted_child_verifications`. Una verificación a la que solo está
        vinculada, como un KYC aprobado existente que reutilizó, no se elimina.


        La sesión desaparece de inmediato de todos los endpoints de lectura:
        `GET /v3/session/{sessionId}/decision/` devuelve `404` y `GET
        /v3/sessions/` deja de listarla. La Monitorización AML continua y la
        monitorización de registros KYB iniciadas por las verificaciones
        eliminadas se detienen.


        **Qué no se ve afectado:** las entradas de la lista de bloqueo creadas a
        partir de esta sesión (rostro o documento) **no** se eliminan;
        gestiónalas con los endpoints de la lista de bloqueo. Los tokens de
        compartición emitidos para la sesión no se revocan, pero ya no queda
        nada que importar con ellos: una importación con uno de ellos devuelve
        `400` con `{"share_token": ["Original session does not exist."]}`. Los
        créditos ya consumidos **no** se reembolsan. La entidad principal de
        Usuario o Empresa **no** se elimina; para ello usa `POST
        /v3/users/delete/` o `POST /v3/businesses/delete/`. Si el retrato del
        perfil del Usuario procedía de esta sesión, el retrato se elimina con
        ella.


        **Datos biométricos faciales:** de forma predeterminada, el embedding
        facial de la sesión se elimina con la sesión (`face_retention_outcome:
        deleted`). Una aplicación que haya activado la retención de plantillas
        biométricas (`face_retention_policy: retain_until_user_deleted` en
        `PATCH /v3/webhook/`), o una solicitud con `retain_face_embeddings:
        true`, conserva una plantilla biométrica facial sin imágenes, gestionada
        por separado y vinculada al Usuario de la sesión (`retained_with_user`),
        para que la detección de duplicados, la Búsqueda facial y la
        autenticación biométrica sigan funcionando. La plantilla nunca contiene
        la imagen del rostro, medios, campos de identidad, la decisión ni el id
        de la sesión eliminada; es un dato biométrico que se elimina en
        `biometric_template_expires_at`, o antes si se elimina el Usuario, se
        realiza un borrado por privacidad o una purga explícita mediante
        `/v3/biometric-templates/`. Una sesión sin un Usuario vinculado no puede
        conservar una plantilla (`ineligible_no_vendor_user`). Envía
        `deletion_instruction: privacy_erasure` para las solicitudes de los
        interesados: purga todas las plantillas conservadas de ese Usuario y
        nunca conserva una nueva.


        **Irreversible:** la eliminación es permanente y no existe ningún
        endpoint de restauración. Exporta todo lo que necesites (por ejemplo, un
        PDF de la decisión) antes de llamarlo.


        **Efectos secundarios:** no se emite ningún webhook por las
        eliminaciones.


        **Respuesta:** `200 OK` una vez completada la eliminación, con un cuerpo
        JSON que indica el `face_retention_outcome`, la caducidad de la
        plantilla conservada y, en una sesión KYB,
        `deleted_child_verifications`. Las versiones anteriores de este endpoint
        devolvían `204 No Content`; actualiza los clientes que comprueban `204`.
        Guarda tu `instruction_id` en tu propio registro de borrados.


        **Idempotencia:** no es idempotente a nivel HTTP: la primera llamada
        devuelve `200`; repetirla devuelve `404` porque la sesión ya no se
        resuelve. Tras un `503`, la sesión sigue existiendo; repite la misma
        solicitud para terminar de eliminarla.


        **Autenticación:** envía la clave de API de tu aplicación en el
        encabezado `x-api-key`; la sesión debe pertenecer a esa aplicación. Los
        tokens de acceso de usuarios de la consola (`Authorization: Bearer ...`)
        también pueden llamar a este endpoint si tienen el permiso
        `delete:sessions`. Tanto los fallos de autenticación como los de
        permisos devuelven `403`; esta API nunca devuelve `401`.


        **Límite de solicitudes:** presupuesto de escritura compartido de 300
        solicitudes/min por clave de API entre todos los endpoints
        POST/PATCH/DELETE; si se supera, se devuelve `429`.


        Para eliminar sesiones KYC de forma masiva por su `session_number`
        numérico, usa `POST /v3/sessions/delete/` en su lugar.


        **Informes regulatorios presentados:** si los datos seleccionados forman
        parte de un informe regulatorio finalizado, se rechaza toda la solicitud
        con `409` y no se elimina nada. El cuerpo usa `code: in_filed_report` e
        identifica cada informe con `uuid`, `report_number`, `report_type` y
        `case_uuid`. Elimina los informes y repite la solicitud.
      operationId: delete_v3_session_by_id
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID (`session_id`) de la sesión de Verificación de usuarios (KYC) o
            Verificación de empresas (KYB) que se va a eliminar, tal como se
            devolvió al crear la sesión. Debe ser un UUID canónico con guiones:
            un valor que no sea un UUID no coincide con la ruta y devuelve
            `404`.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: false
        description: >-
          Opcional. Omite el cuerpo por completo para seguir la política de
          retención de la aplicación con una eliminación operativa.
        content:
          application/json:
            schema:
              type: object
              properties:
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    Anula la `face_retention_policy` de la aplicación para esta
                    eliminación. `true` conserva una plantilla biométrica facial
                    sin imágenes vinculada al usuario de la sesión después de
                    eliminar la sesión; `false` elimina el embedding facial
                    junto con la sesión; omítelo o usa `null` para seguir la
                    política de la aplicación. Se ignora en las sesiones KYB y
                    en las sesiones sin embedding facial.
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Duración de retención finita, en días, de una plantilla
                    conservada. Es obligatoria cuando se conserva una plantilla,
                    salvo que la aplicación ya defina `face_retention_days`. El
                    `expires_at` de la plantilla es el más temprano entre esta
                    duración, el periodo general de retención de datos de la
                    aplicación y `face_retention_deadline`.
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    Caducidad estricta opcional para una plantilla retenida.
                    Debe ser una fecha futura.
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    El tipo de instrucción que das. `operational_session_delete`
                    elimina la sesión y conserva una plantilla solo cuando la
                    política o `retain_face_embeddings` lo indican.
                    `privacy_erasure` purga todas las plantillas biométricas
                    conservadas vinculadas al usuario de la sesión antes de
                    eliminar la sesión, la política de la aplicación no puede
                    anularla y no se puede combinar con `retain_face_embeddings:
                    true` (`400`).
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    Tu referencia permanente para esta instrucción de
                    eliminación (por ejemplo, el ID de un ticket de supresión).
                    Se registra en el registro de auditoría y en cualquier
                    plantilla conservada. Didit la genera si se omite.
                  example: dsar-2026-0142
            examples:
              Retain a biometric template:
                summary: >-
                  Eliminar la sesión y conservar una plantilla sin imágenes
                  durante 365 días
                value:
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Force deletion on an opted-in application:
                summary: >-
                  Eliminar el embedding facial independientemente de la política
                  de la aplicación
                value:
                  retain_face_embeddings: false
              Privacy erasure:
                summary: >-
                  Solicitud del interesado: elimina la sesión y purga todas las
                  plantillas conservadas de esa persona
                value:
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
      responses:
        '200':
          description: >-
            Sesión eliminada. El cuerpo indica qué ocurrió con los datos
            biométricos faciales de la sesión y, en una sesión KYB, cuántas de
            las verificaciones que creó se eliminaron junto con ella.
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_id:
                    type: string
                    format: uuid
                    description: La sesión eliminada.
                  session_number:
                    type: integer
                    nullable: true
                    description: El número de la sesión eliminada.
                  face_retention_outcome:
                    type: string
                    enum:
                      - retained_with_user
                      - deleted
                      - none
                      - ineligible_no_vendor_user
                    description: >-
                      Qué ocurrió con los datos biométricos faciales de la
                      sesión. `deleted`: el embedding facial se eliminó junto
                      con la sesión (valor predeterminado).
                      `retained_with_user`: la sesión se elimina y se conserva
                      una plantilla biométrica sin imágenes vinculada al User;
                      consulta `biometric_template_uuid`. `none`: la sesión no
                      tenía embedding facial (por ejemplo, una sesión KYB o una
                      sesión KYC sin selfie de prueba de vida).
                      `ineligible_no_vendor_user`: se solicitó la retención,
                      pero la sesión no tiene ningún User vinculado, por lo que
                      el embedding se eliminó junto con la sesión. Este endpoint
                      nunca informa de un fallo del almacén biométrico a través
                      de este campo: devuelve `503` y la sesión no se elimina.
                  biometric_template_uuid:
                    type: string
                    format: uuid
                    nullable: true
                    description: >-
                      ID de la plantilla biométrica conservada cuando
                      `face_retention_outcome` es `retained_with_user`; `null`
                      en caso contrario. Gestiónala a través de
                      `/v3/biometric-templates/{template_uuid}/`.
                  biometric_template_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Fecha y hora en que se elimina la plantilla biométrica
                      conservada, cuando `face_retention_outcome` es
                      `retained_with_user`; `null` cuando no se conserva ninguna
                      plantilla.
                  deleted_child_verifications:
                    type: integer
                    description: >-
                      En una sesión de Verificación de empresas (KYB): cuántas
                      de las verificaciones que creó (las sesiones KYC de sus
                      personas clave y las sesiones KYB de sus propietarios
                      corporativos, de forma recursiva) se eliminaron con ella.
                      Siempre `0` en una sesión KYC.
              examples:
                Deleted (default):
                  value:
                    session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                    session_number: 1024
                    face_retention_outcome: deleted
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 0
                Retained with User:
                  value:
                    session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                    session_number: 1024
                    face_retention_outcome: retained_with_user
                    biometric_template_uuid: 9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b
                    biometric_template_expires_at: '2027-10-09T10:15:00Z'
                    deleted_child_verifications: 0
                'Ineligible: no User':
                  summary: Se solicitó retención en una sesión creada sin vendor_data
                  value:
                    session_id: 7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c
                    session_number: 1031
                    face_retention_outcome: ineligible_no_vendor_user
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 0
                KYB session:
                  value:
                    session_id: 0f3c9b7e-2d1a-4e5f-8c6b-7a9d8e1f2c3b
                    session_number: 88
                    face_retention_outcome: none
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 3
                  summary: >-
                    Una verificación de empresa eliminada junto con las tres
                    verificaciones que creó para sus personas clave
        '400':
          description: 'Error de validación: no se elimina nada.'
          content:
            application/json:
              examples:
                Privacy erasure cannot retain:
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    Se solicitó retención sin face_retention_days en la
                    solicitud ni en la aplicación
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
        '403':
          description: >-
            Fallo de autenticación o de permisos. Si falta la clave, también se
            devuelve `403`; una clave incorrecta, revocada o expirada devuelve
            `401`. Excepción: cuando el `sessionId` no corresponde a una sesión
            activa, la búsqueda del propietario previa a la autenticación
            devuelve `404` primero, incluso con credenciales ausentes o no
            válidas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Falta el encabezado x-api-key, o la clave no es válida
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Insufficient permission:
                  summary: >-
                    Token de usuario sin delete:sessions, o credenciales de una
                    aplicación que no es propietaria de la sesión
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            No existe ninguna sesión KYC o KYB activa con este `session_id`: el
            id es desconocido o la sesión ya se eliminó (repetir una eliminación
            correcta lleva a este caso).
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not Found:
                  summary: Sesión desconocida o ya eliminada
                  value:
                    detail: Not found.
        '409':
          description: >-
            La sesión forma parte de un informe regulatorio finalizado. No se
            elimina nada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            Se superó el límite de solicitudes de escritura compartido (300
            solicitudes POST/PATCH/DELETE por minuto por clave de API). Revisa
            `Retry-After` y los encabezados de respuesta `X-RateLimit-*` antes
            de reintentar.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: Presupuesto de escritura agotado
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
        '503':
          description: >-
            La eliminación no pudo completarse porque un servicio de
            almacenamiento, un almacén biométrico o un proveedor de
            monitorización no estaba disponible. La sesión sigue existiendo;
            repite la misma solicitud hasta que devuelva `200`. Es posible que
            algunos de sus archivos almacenados o su embedding facial ya se
            hayan eliminado, así que no confíes en ellos después de un `503`.
            Los reintentos convergen en una única plantilla.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Session deletion unavailable:
                  summary: >-
                    Un servicio de almacenamiento o un proveedor de
                    monitorización no estaba disponible
                  value:
                    detail: >-
                      The session could not be deleted because a storage service
                      or a monitoring provider is unavailable. The session is
                      still in place; repeat the request to finish deleting it.
                Biometric store unavailable:
                  summary: >-
                    Un almacén biométrico no estaba disponible al conservar o
                    purgar una plantilla
                  value:
                    detail: >-
                      The biometric-template operation could not finish because
                      an external store is unavailable. The operation is
                      retryable.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl (default policy)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: curl
          label: curl (retain template)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"retain_face_embeddings": true, "face_retention_days": 365}'
        - lang: curl
          label: curl (privacy erasure)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.delete(
                "11111111-2222-3333-4444-555555555555",
                retain_face_embeddings=True,
                face_retention_days=365,
                instruction_id="post-approval-cleanup-2026-08",
            )
            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.sessions.delete("11111111-2222-3333-4444-555555555555", {
              retain_face_embeddings: true,
              face_retention_days: 365,
              instruction_id: "post-approval-cleanup-2026-08",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsDeleteParams{\n\tRetainFaceEmbeddings: didit.Bool(true),\n\tFaceRetentionDays:    didit.Int(365),\n\tInstructionID:        didit.String(\"post-approval-cleanup-2026-08\"),\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.SessionsDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().delete("11111111-2222-3333-4444-555555555555",
            SessionsDeleteParams.builder()
                    .retainFaceEmbeddings(true)
                    .faceRetentionDays(365L)
                    .instructionId("post-approval-cleanup-2026-08")
                    .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->sessions->delete('11111111-2222-3333-4444-555555555555', [
                'retain_face_embeddings' => true,
                'face_retention_days' => 365,
                'instruction_id' => 'post-approval-cleanup-2026-08',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.delete(
              "11111111-2222-3333-4444-555555555555",
              retain_face_embeddings: true,
              face_retention_days: 365,
              instruction_id: "post-approval-cleanup-2026-08"
            )
            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.Sessions.DeleteAsync("11111111-2222-3333-4444-555555555555",
            new SessionsDeleteParams

            {
                RetainFaceEmbeddings = true,
                FaceRetentionDays = 365,
                InstructionId = "post-approval-cleanup-2026-08",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    InFiledReportError:
      type: object
      description: >-
        La eliminación se rechaza porque los datos seleccionados están en un
        informe regulatorio finalizado. No se elimina nada. Elimina el informe y
        luego repite la solicitud.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Código de error estable para una eliminación bloqueada por un
            informe regulatorio finalizado.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Informes que impiden eliminar una persona, empresa, caso o sesión.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transacciones que bloquean la eliminación de una transacción, cada
            una con los informes que la incluyen.
    FiledRegulatoryReport:
      type: object
      description: Un informe regulatorio finalizado que impide la eliminación solicitada.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID del informe.
        report_number:
          type: string
          description: >-
            Número de informe que se muestra en la consola (por ejemplo,
            SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipo de informe regulatorio.
        case_uuid:
          type: string
          format: uuid
          description: Caso al que pertenece el informe.
    FiledReportTransaction:
      type: object
      description: >-
        Una transacción que no se puede eliminar porque figura en un informe
        regulatorio finalizado.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID de transacción de Didit.
        transaction_id:
          type: string
          description: >-
            El identificador de la transacción proporcionado al crear la
            transacción.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Informes finalizados que incluyen esta transacción.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

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