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

# Eliminació de sessions en lot: API de Didit

> Amb Didit, elimina moltes sessions KYC per número o totes alhora. Fins a 20 donen resultat per sessió; més de 20 es fan com a tasca consultable.



Prompt per eliminar sessions en lot
        Copia el prompt al porta-retalls



      
      

\<pre>

\`Goal: Delete a list of User Verification (KYC) sessions, or every session, for the calling application, and control what happens to each session's face biometric data. KYC only — KYB sessions are not covered here; use DELETE /v3/session/{sessionId}/delete/ for a single KYB or KYC session.

Endpoint: POST https://verification.didit.me/v3/sessions/delete/
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json

Request body — provide EXACTLY ONE selector:
\- session_numbers: string[] — UI-visible decimal session numbers ("#1234" style), NOT UUIDs. Each entry must be digits only (regex ^[0-9]+$). minItems: 1.
\- delete_all: true — delete every remaining KYC session for the application. When delete_all is true, session_numbers is ignored.

Narrowing delete_all (optional, only together with delete_all: true):
\- filter_<name> - any filter of GET /v3/sessions/ (see /sessions-api/list-sessions) prefixed with filter_, with the same values: filter_status, filter_workflow_id, filter_date_from, filter_date_to, filter_vendor_data, filter_country, filter_document_type, filter_warning, filter_search and the others. Filters that take several values in GET /v3/sessions/ (status, workflow_id, country, region, document_type, document_name, session_type, warning, organization_name) accept a comma-separated string or an array. The others take one value: an array is joined into one comma-separated value, so several dates, UUIDs or api_service values are refused with 400, and several texts are not matched as alternatives. An empty value is ignored and does not narrow the selection.
\- An unknown filter_* key returns 400 { "filter_<name>": "Unknown filter." } and a value that cannot be read returns 400 keyed by that filter_* key (for example { "filter_date_from": ["Enter a valid date."] }). Nothing is deleted in either case.
\- A deletion job applies the same filters.

Optional retention and instruction fields (same semantics as the single-session endpoint, applied to every matched session):
\- retain_face_embeddings (boolean | null) — true keeps an image-free biometric template anchored to each session's User; false deletes the embedding with the session; omit/null follows the application's face_retention_policy.
\- face_retention_days (integer 1-3650) — required when retaining unless the application sets face_retention_days.
\- face_retention_deadline (ISO 8601 datetime, future) — optional hard expiry.
\- deletion_instruction ("operational_session_delete" default | "privacy_erasure") — privacy_erasure purges every retained template for each session's User and never retains a new one. Cannot be combined with retain_face_embeddings: true (400).
\- instruction_id (string, max 255) — your durable reference for this instruction; recorded on the audit trail and on every retained template.

curl:
curl -X POST 'https://verification.didit.me/v3/sessions/delete/' \
-H "x-api-key: YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"session_numbers": ["1001", "1002", "1003"]}'

Response: the number of matching sessions decides, whether they are selected by session_numbers or with delete_all.

Up to 20 matching sessions: they are deleted in the request. Response 200 (this endpoint no longer returns 204):
\{
"results": [
\{"session_id": "<uuid>", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1002, "face_retention_outcome": "retained_with_user", "biometric_template_uuid": "<uuid>", "biometric_template_expires_at": "<ISO 8601 datetime>", "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1003, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0}
]
}
face_retention_outcome per session:
\- deleted: session and face embedding deleted (default).
\- retained_with_user: session deleted; an image-free biometric template stays anchored to the User until biometric_template_expires_at (manage it via /v3/biometric-templates/).
\- none: the session had no face embedding.
\- ineligible_no_vendor_user: retention requested but the session has no linked User; session and embedding deleted.
\- failed_retryable: the group this session was deleted with could not be deleted (a storage service, a biometric store or a monitoring provider was unavailable). That session is NOT deleted and is still in place; re-run the request for it. Other groups in the same request are unaffected.
deleted_child_verifications is always 0 here: this endpoint deletes KYC sessions only.

More than 20 matching sessions: they are deleted in the background. Response 202 with a deletion job:
\{"job_id": "<uuid>", "status": "PENDING", "total": 250, "processed": 0, "outcomes": {"deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0}, "deleted_child_verifications": 0, "error": null, "created_at": "<datetime>", "completed_at": null}
Poll GET /v3/sessions/delete/{job_id}/ every few seconds until status is COMPLETED or FAILED. The job reports counts per outcome, never which sessions it deleted. A delete_all job deletes only the sessions created before the request. A FAILED job explains why in error; the sessions it had not reached are still in place, so repeat the request to delete them.

Side effects:
\- Each matched session is deleted along with everything it produced, including every verification attempt: its decision, its extracted data, its KYC / Face / AML / Location / POA / Phone / Email records, its reviews and activity log, and all of its stored files.
\- The sessions stop appearing in GET /v3/sessions/ and GET /v3/session/{sessionId}/decision/, and media URLs issued before the call stop resolving.
\- Webhook deliveries still queued for the deleted sessions, and their retries, are dropped. Webhooks already delivered are not affected.
\- Share tokens issued for the sessions 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 sessions are NOT removed.
\- Credits already consumed by the verifications are NOT refunded.
\- The parent User entities are NOT deleted; use POST /v3/users/delete/ for those (that also purges their retained templates).
\- NO deletion webhook is emitted.
\- Sessions are deleted in groups; a failure in one group does not roll back the others. Numbers that no longer match a live session are skipped and do not appear in results.

Idempotency: re-running with the same session_numbers deletes nothing more (numbers that no longer match a session are skipped). Deletion is permanent and cannot be undone.

Failure modes:
\- 400: validation, nothing deleted:
\{ "session_numbers": ["This field is required unless delete_all is true."] }
\{ "session_numbers": ["All session_numbers must be numeric."] }
\{ "retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."] }
\{ "detail": "A finite biometric-template retention duration is required." }
\{ "filter_reviewer": "Unknown filter." }
\{ "filter_date_from": ["Enter a valid date."] }
\- 409: at least one selected session is part of a finalized regulatory report. Nothing is deleted. The body has code: in_filed_report and reports[] with uuid, report_number, report_type and case_uuid. Delete the reports, then repeat the request.
\- 403: API key invalid or application not allowed. { "detail": "You do not have permission to perform this action." }

Migration note: until this release the endpoint returned 204 with an empty body; it now returns 200 with results[], or 202 with a deletion job when more than 20 sessions match. Existing applications stay on delete_with_session until you explicitly change the policy.

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

\</pre>



      
      

Enganxa a

## ComportamentCada sessió coincident s'elimina exactament igual que amb [Eliminar sessió](https://docs.didit.me/ca/sessions-api/delete-session.md): s'eliminen la sessió, cada intent de verificació que conté, la seva decisió i les dades extretes, els seus registres de funcionalitats i tots els seus fitxers emmagatzemats. Desapareix de tots els endpoints de lectura i les URL de fitxers multimèdia emesos anteriorment deixen de resoldre's. Els lliuraments de webhook que encara estiguin pendents per a una sessió eliminada, i els seus reintents, es descarten; els webhooks ja lliurats no es veuen afectats. L'eliminació és permanent i irreversible.Si alguna de les sessions seleccionades forma part d'un informe regulatori finalitzat, tota la sol·licitud retorna `409` i no s'elimina res. La resposta usa `code: in_filed_report` i indica cada informe. Elimina cada informe amb [Eliminar informe](https://docs.didit.me/ca/management-api/regulatory-reports/delete.md) i després repeteix la sol·licitud. Eliminar l'informe no elimina la sessió; la sessió es manté fins que repeteixis aquesta sol·licitud.El nombre de sessions coincidents determina com es respon la sol·licitud, tant si les selecciones amb `session_numbers` com amb `delete_all`:| Sessions coincidents | Resposta |
| - | - |
| Fins a 20 | `200 OK` quan s'hagin eliminat, amb un resultat per cada sessió coincident a `results`. |
| Més de 20 | `202 Accepted` amb una tasca d'eliminació. Les sessions s'eliminen en segon pla; consulta [Obtenir tasca d'eliminació de sessió](https://docs.didit.me/ca/management-api/sessions/get-deletion-job.md) fins que finalitzi. |Un resultat confirma que la sessió s'ha eliminat, excepte quan el seu `face_retention_outcome` és `failed_retryable`: en aquest cas, la sessió **no** s'ha eliminat i continua al seu lloc, així que aquest resultat s'ha de tractar com un error que cal reintentar, mai com una confirmació d'eliminació. Els números que no coincideixen amb una sessió KYC activa a la teva aplicació s'ometen i no apareixen a `results`.## Restringir `delete_all` amb filtresAmb `delete_all: true` pots restringir la selecció amb els filtres de [Llistar sessions](https://docs.didit.me/ca/sessions-api/list-sessions.md), cadascun amb el prefix `filter_`.
Accepten els mateixos valors que els paràmetres de consulta.
Un filtre que accepta diversos valors (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) accepta una cadena separada per comes o un array:```json theme={null}
{
  "delete_all": true,
  "filter_status": ["Declined"],
  "filter_workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "filter_date_from": "2026-09-01",
  "filter_date_to": "2026-09-30"
}
```- Els filtres només s'apliquen juntament amb `delete_all`; amb `session_numbers` es comproven però no canvien la selecció.
- Cada altre filtre accepta un sol valor.
  Un array es converteix en un únic valor separat per comes, així que diverses dates, UUID o valors de `api_service` retornen `400`, i diversos textos de `vendor_data`, `search` o `screened_full_name` no es comparen com a alternatives.
- Un filtre amb un valor buit s'ignora, així que no restringeix la selecció.
- Una clau `filter_*` desconeguda retorna `400` `{"filter_reviewer": "Unknown filter."}`, i un valor que no es pot llegir retorna `400` amb la clau `filter_*` corresponent, com `{"filter_date_from": ["Enter a valid date."]}`.
  En tots dos casos no s'elimina res, així que un filtre mal escrit mai amplia l'eliminació a totes les sessions.
- Una tasca d'eliminació aplica els mateixos filtres i, com qualsevol `delete_all`, només cobreix les sessions creades abans de la sol·licitud.## Camps de conservació i d'instruccióL'endpoint accepta els mateixos camps opcionals que l'endpoint d'una sola sessió i els aplica a cada sessió coincident:| Camp | Tipus | Descripció |
| - | - | - |
| `retain_face_embeddings` | boolean o null | Substitueix la `face_retention_policy` de l'aplicació per a aquesta sol·licitud. |
| `face_retention_days` | integer (1-3650) | Durada de conservació finita de les plantilles conservades. Obligatori quan es conserva, tret que l'aplicació defineixi `face_retention_days`. |
| `face_retention_deadline` | datetime (ISO 8601) | Caducitat màxima opcional; ha de ser en el futur. |
| `deletion_instruction` | `operational_session_delete` (per defecte) o `privacy_erasure` | `privacy_erasure` purga totes les plantilles conservades de l'Usuari de cada sessió abans d'eliminar la sessió, i no es pot combinar amb `retain_face_embeddings: true`. |
| `instruction_id` | string (màxim 255) | La teva referència duradora per a aquesta instrucció. Es registra al registre d'auditoria i a cada plantilla conservada. |Consulta [Eliminar sessió](https://docs.didit.me/ca/sessions-api/delete-session.md#dades-biomètriques-facials-eliminar-o-conservar) per saber què conté i què no conté una plantilla conservada, com es calcula `expires_at` i què fa una instrucció d'esborrat per privacitat.## Resultats per sessióPer a fins a 20 sessions coincidents, `200 OK` retorna un resultat per sessió:```json theme={null}
{
  "results": [
    { "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e", "session_number": 1002, "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 },
    { "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c", "session_number": 1003, "face_retention_outcome": "ineligible_no_vendor_user", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f", "session_number": 1004, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 }
  ]
}
```Cada resultat conté els mateixos camps que la resposta de [Eliminar sessió](https://docs.didit.me/ca/sessions-api/delete-session.md#resposta). `biometric_template_expires_at` indica quan s'elimina una plantilla conservada, i `deleted_child_verifications` és sempre `0` aquí, perquè aquest endpoint elimina només sessions KYC.| `face_retention_outcome` | Significat |
| - | - |
| `deleted` | La sessió i el seu embedding facial s'eliminen. Comportament per defecte. |
| `retained_with_user` | La sessió s'elimina. Una plantilla biomètrica sense imatges es manté ancorada a l'Usuari; el seu id és `biometric_template_uuid`. |
| `none` | La sessió no tenia cap embedding facial per eliminar o conservar. |
| `ineligible_no_vendor_user` | S'ha sol·licitat la conservació, però la sessió no està vinculada a un Usuari, així que no hi ha res a què ancorar una plantilla. La sessió i el seu embedding s'eliminen. |
| `failed_retryable` | El grup amb què es va eliminar aquesta sessió no s'ha pogut eliminar, perquè un servei d'emmagatzematge, un magatzem biomètric o un proveïdor de monitoratge no estava disponible. Aquesta sessió **no** s'elimina i continua al seu lloc. Torna a executar la sol·licitud per a aquesta sessió; els reintents convergeixen en una única plantilla. |Les sessions s'eliminen per grups. Quan un grup no es pot eliminar, cada sessió del grup s'informa com a `failed_retryable`; els altres grups no es veuen afectats i continuen eliminats.## Les seleccions grans s'executen com una tascaQuan hi ha més de 20 sessions que coincideixen, la resposta és `202 Accepted` amb una tasca d'eliminació en lloc de `results`:```json theme={null}
{
  "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
  "status": "PENDING",
  "total": 250,
  "processed": 0,
  "outcomes": { "deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0 },
  "deleted_child_verifications": 0,
  "error": null,
  "created_at": "2026-10-09T10:15:00Z",
  "completed_at": null
}
```Consulta [Obtenir la tasca d'eliminació de sessions](https://docs.didit.me/ca/management-api/sessions/get-deletion-job.md) cada pocs segons fins que `status` sigui `COMPLETED` o `FAILED`.- La tasca indica quantes sessions han acabat en cada resultat, però mai quines sessions ha eliminat.
- Una tasca de `delete_all` elimina només les sessions creades abans de la teva sol·licitud. Les sessions iniciades mentre s'executa no s'eliminen.
- Els camps de conservació i d'instruccions de la teva sol·licitud s'apliquen a totes les sessions que elimini la tasca.
- Si encara no es pot eliminar un grup, la tasca torna a intentar eliminar-lo automàticament.
- Una tasca `FAILED` n'explica el motiu a `error`. Les sessions que encara no havia processat continuen al seu lloc: repeteix la sol·licitud per eliminar-les.## Exemples> [tab] Eliminar per número
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"session_numbers": ["1001", "1002", "1003"]}'
> ```> [tab] Eliminar i conservar plantilles
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001", "1002"],
>     "retain_face_embeddings": true,
>     "face_retention_days": 365,
>     "instruction_id": "post-approval-cleanup-2026-08"
>   }'
> ```> [tab] Esborrament per motius de privacitat
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001"],
>     "deletion_instruction": "privacy_erasure",
>     "instruction_id": "dsar-2026-0142"
>   }'
> ```> [tab] Eliminar-ho tot i consultar la tasca
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"delete_all": true}'
>
> # More than 20 sessions matched: the response is 202 with a job_id.
> curl https://verification.didit.me/v3/sessions/delete/JOB_ID/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```## Migració de les respostes 204Fins a aquesta versió, l'endpoint retornava `204 No Content`. Ara retorna `200 OK` amb `results[]`, o `202 Accepted` amb una tasca d'eliminació quan hi ha més de 20 sessions que coincideixen. Actualitza els clients que comproven `204`. El comportament d'eliminació per defecte no canvia: les aplicacions existents continuen utilitzant `delete_with_session` fins que canviïs explícitament la política.## Relacionats- [Eliminar la sessió](https://docs.didit.me/ca/sessions-api/delete-session.md)
- [Obtenir la tasca d'eliminació de sessions](https://docs.didit.me/ca/management-api/sessions/get-deletion-job.md)
- [Plantilles biomètriques](https://docs.didit.me/ca/management-api/biometric-templates/overview.md)
- [Conservació de dades](https://docs.didit.me/ca/console/data-retention.md)


## OpenAPI

````yaml ca/openapi-25.json POST /v3/sessions/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/delete/:
    post:
      tags:
        - Sessions
      summary: Suprimir sessions de KYC en bloc per session_number
      description: >-
        Elimina de forma massiva sessions de Verificació d'usuaris (KYC)
        mitjançant el seu `session_number` numèric, o totes les sessions de KYC
        de la teva aplicació amb `delete_all: true`.


        `session_number` és el comptador incremental fàcil de llegir que es
        mostra a la llista de sessions de la Console i que retornen com a
        `session_number` els endpoints de creació de sessió i de decisió; **no**
        és el UUID `session_id`. Per eliminar una sessió per UUID, o per
        eliminar una sessió de Verificació d'empreses (KYB), que aquest endpoint
        mai no modifica, utilitza `DELETE /v3/session/{sessionId}/delete/`.


        **S'eliminen fins a 20 sessions a la mateixa sol·licitud; si n'hi ha
        més, s'executen com una tasca.** El nombre de sessions coincidents
        determina el comportament, tant si se seleccionen mitjançant
        `session_numbers` com amb `delete_all`:

        - Fins a 20 sessions coincidents: s'eliminen abans de la resposta, que
        és `200` amb una entrada per sessió a `results[]`.

        - Més de 20: la resposta és `202` amb una tasca d'eliminació, i les
        sessions s'eliminen en segon pla. Fes sondeig a `GET
        /v3/sessions/delete/{job_id}/` fins que `status` sigui `COMPLETED` o
        `FAILED`. Una tasca informa dels recomptes per resultat, mai de quines
        sessions ha eliminat. Una tasca amb `delete_all` només elimina les
        sessions creades abans de la sol·licitud; les sessions iniciades mentre
        s'executa no s'eliminen.


        Cada sessió eliminada rep exactament el mateix tractament que a
        l'endpoint d'eliminació d'una sola sessió: la sessió, cada intent de
        verificació que conté, la seva decisió i dades extretes, els seus
        registres de funcionalitats relacionats (verificació d'identitat,
        rostre, prova de vida, coincidència facial, etc.) i tots els seus
        fitxers emmagatzemats s'eliminen, desapareix de tots els endpoints de
        lectura i els URL de fitxers multimèdia emesos prèviament deixen de
        resoldre's. Els lliuraments de webhook que encara estiguin en cua per a
        una sessió eliminada, així com els seus reintents, es descarten; els
        webhooks ja lliurats no es veuen afectats. Les entrades de la llista de
        bloqueig **no** s'eliminen, els crèdits ja consumits **no** es
        reemborsen i les entitats User pare **no** s'eliminen (utilitza `POST
        /v3/users/delete/` per a aquestes); no s'emet cap webhook per
        l'eliminació. L'eliminació és permanent i irreversible.


        **Semàntica de selecció:**

        - Amb `delete_all: true` pots restringir la selecció amb els filtres de
        `GET /v3/sessions/`, cadascun amb el prefix `filter_` (per exemple
        `filter_status`, `filter_workflow_id`, `filter_date_from`). Els filtres
        que accepten diversos valors a List Sessions (`status`, `workflow_id`,
        `country`, `region`, `document_type`, `document_name`, `session_type`,
        `warning`, `organization_name`) admeten una cadena separada per comes o
        una matriu; els altres prenen un sol valor. Un valor buit s'ignora. Els
        filtres només s'apliquen juntament amb `delete_all`, i una tasca
        d'eliminació aplica els mateixos filtres.

        - Una clau `filter_*` desconeguda, o un valor de filtre que no es pugui
        llegir, rebutja tota la sol·licitud amb `400` abans que s'elimini res,
        de manera que un filtre mal escrit mai no amplia l'eliminació a totes
        les sessions.

        - Les entrades a `session_numbers` que no coincideixin amb una sessió de
        KYC activa a la teva aplicació (números desconeguts, sessions ja
        eliminades o sessions que pertanyen a una altra aplicació) s'**ometen
        silenciosament**: no apareixen a `results` i no es comptabilitzen al
        `total` d'una tasca.

        - Els errors de validació (una entrada no numèrica, una llista buida, no
        proporcionar ni `session_numbers` ni `delete_all`, o una conservació de
        plantilles que l'aplicació no pugui complir) rebutgen **tota la
        sol·licitud** amb `400` i no eliminen res.

        - Les sessions s'eliminen en grups. Si un grup no es pot eliminar (per
        exemple, perquè un servei d'emmagatzematge no està disponible), cada
        sessió d'aquest grup es notifica com a `face_retention_outcome:
        failed_retryable` i es manté; els altres grups no es veuen afectats.
        Repeteix la sol·licitud per a aquestes sessions. Una tasca reintenta
        aquest grup automàticament.

        - No hi ha cap límit documentat per a la longitud de la llista; el límit
        de freqüència d'escriptura compartit (a sota) és el límit pràctic.


        **Dades biomètriques facials:** els camps opcionals
        `retain_face_embeddings`, `face_retention_days`,
        `face_retention_deadline`, `deletion_instruction` i `instruction_id`
        tenen el mateix significat que a `DELETE
        /v3/session/{sessionId}/delete/` i s'apliquen a cada sessió coincident.
        Cada resultat informa del seu propi `face_retention_outcome`.


        **Resposta:** `200 OK` amb `results[]` per a un màxim de 20 sessions
        coincidents, o `202 Accepted` amb una tasca d'eliminació si n'hi ha més.
        Cada resultat confirma l'eliminació excepte `face_retention_outcome:
        failed_retryable`, que informa d'una sessió que NO s'ha eliminat i que
        s'hauria de reintentar. Les versions anteriors d'aquest endpoint
        retornaven `204 No Content`; actualitza els clients que validin `204`.


        **Idempotència:** repetir la mateixa sol·licitud no elimina res més:
        s'ometen els números que ja no coincideixen amb una sessió.


        **`delete_all: true` (destructiu):** elimina **totes** les sessions de
        KYC restants de l'aplicació; `session_numbers` s'ignora quan
        s'estableix. No hi ha cap pas de confirmació ni opció de desfer.


        **Autenticació:** clau d'API a la capçalera `x-api-key`. Les credencials
        absents o no vàlides retornen `403` (`{"detail": "You do not have
        permission to perform this action."}`); aquesta API mai no retorna
        `401`.


        **Límit de freqüència:** pressupost d'escriptura compartit de 300
        sol·licituds/min per clau d'API en tots els endpoints POST/PATCH/DELETE;
        si se supera, es retorna `429`.


        Aquest endpoint només accepta claus d'API. Els tokens Bearer d'usuari de
        la Business Console es rebutgen amb `403` (a diferència de l'eliminació
        d'una sola sessió, que accepta tots dos).


        **Informes regulatoris presentats:** si les dades seleccionades formen
        part d'un informe regulatori finalitzat, es rebutja tota la sol·licitud
        amb `409` i no s'elimina res. El cos utilitza `code: in_filed_report` i
        indica el nom de cada informe amb `uuid`, `report_number`, `report_type`
        i `case_uuid`. Elimina els informes i després repeteix la sol·licitud.
      operationId: batch_delete_sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_numbers:
                  type: array
                  description: >-
                    Valors numèrics de `session_number` de les sessions de KYC
                    que cal eliminar, com a cadenes que només contenen dígits
                    (els números JSON també s'accepten i es converteixen).
                    Obligatori tret que `delete_all` sigui `true`; una llista
                    buida retorna `400`. Qualsevol entrada que no sigui un dígit
                    rebutja tota la sol·licitud amb `400` (tret que `delete_all`
                    sigui `true`, cas en què s'omet la validació i s'ignoren les
                    entrades). Els números que no coincideixin amb una sessió
                    activa a la teva aplicació s'ometen silenciosament.
                  items:
                    type: string
                    pattern: ^[0-9]+$
                    example: '1001'
                  minItems: 1
                  example:
                    - '1001'
                    - '1002'
                    - '1003'
                delete_all:
                  type: boolean
                  description: >-
                    Quan és `true`, s'eliminen totes les sessions de KYC
                    restants a l'aplicació que fa la crida i s'ignora
                    `session_numbers`, tret que restringeixis la selecció amb
                    claus `filter_*`. Si hi ha més de 20 sessions coincidents,
                    s'executa com una tasca d'eliminació (`202`) que només
                    cobreix les sessions creades abans de la sol·licitud. Per
                    defecte és `false`. Irreversible; no hi ha cap pas de
                    confirmació.
                  default: false
                  example: false
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    Sobreescriu la `face_retention_policy` de l'aplicació per a
                    aquesta supressió. `true` manté una plantilla biomètrica
                    facial sense imatge vinculada a l'usuari de la sessió
                    després que se suprimeixi la sessió; `false` suprimeix
                    l'embedding facial amb la sessió; omet o posa `null` per
                    seguir la política de l'aplicació. S'ignora en sessions de
                    KYB i en sessions sense embedding facial.
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Durada de conservació finita, en dies, per a una plantilla
                    conservada. Obligatori quan es conserva una plantilla tret
                    que l'aplicació ja defineixi `face_retention_days`. El camp
                    `expires_at` de la plantilla és la data més primerenca entre
                    aquesta durada, la finestra general de conservació de dades
                    de l'aplicació i `face_retention_deadline`.
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    Caducitat estricta opcional per a una plantilla conservada.
                    Ha de ser posterior a la data actual.
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    La classe d'instrucció que estàs donant.
                    `operational_session_delete` suprimeix la sessió i conserva
                    una plantilla només quan la política o
                    `retain_face_embeddings` així ho indiquen. `privacy_erasure`
                    purga totes les plantilles biomètriques conservades
                    vinculades a l'Usuari de la sessió abans de suprimir la
                    sessió, no pot ser anul·lada per la política de l'aplicació
                    i no es pot combinar amb `retain_face_embeddings: true`
                    (`400`).
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    La teva referència persistent per a aquesta instrucció de
                    supressió (per exemple, l'id d'un tiquet de supressió). Es
                    registra al registre d'auditoria i a qualsevol plantilla
                    conservada. Didit la genera si s'omet.
                  example: dsar-2026-0142
                filter_status:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `status` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no restringeix
                    la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_vendor_data:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `vendor_data` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: un array s'uneix en un
                    únic text separat per comes, de manera que diversos valors
                    no es comparen com a alternatives. S'ignora sense
                    `delete_all`. Un valor buit s'ignora i no restringeix la
                    selecció.
                  type: string
                filter_search:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `search` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: un array s'uneix en un
                    únic text separat per comes, de manera que diversos valors
                    no es comparen com a alternatives. S'ignora sense
                    `delete_all`. Un valor buit s'ignora i no restringeix la
                    selecció.
                  type: string
                filter_workflow_id:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `workflow_id` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no restringeix
                    la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_date_from:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `date_from` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: una matriu s'uneix en un
                    únic valor separat per comes, de manera que diversos valors
                    es rebutgen amb `400`. S'ignora sense `delete_all`. Un valor
                    buit s'ignora i no redueix la selecció.
                  type: string
                  format: date
                filter_date_to:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `date_to` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: una matriu s'uneix en un
                    únic valor separat per comes, de manera que diversos valors
                    es rebutgen amb `400`. S'ignora sense `delete_all`. Un valor
                    buit s'ignora i no redueix la selecció.
                  type: string
                  format: date
                filter_country:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `country` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o una matriu. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no redueix la
                    selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_type:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `document_type` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o una matriu. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no redueix la
                    selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_name:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `document_name` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o una matriu. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no redueix la
                    selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_region:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `region` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no restringeix
                    la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_didit_internal_id:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `didit_internal_id` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: una matriu s'uneix en un
                    únic valor separat per comes, de manera que diversos valors
                    es rebutgen amb `400`. S'ignora sense `delete_all`. Un valor
                    buit s'ignora i no redueix la selecció.
                  type: string
                  format: uuid
                filter_session_type:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `session_type` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no restringeix
                    la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_api_service:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `api_service` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: una matriu s'uneix en un
                    únic valor separat per comes, de manera que diversos valors
                    es rebutgen amb `400`. S'ignora sense `delete_all`. Un valor
                    buit s'ignora i no redueix la selecció.
                  type: string
                filter_screened_full_name:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `screened_full_name` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: un array s'uneix en un
                    únic text separat per comes, de manera que diversos valors
                    no es comparen com a alternatives. S'ignora sense
                    `delete_all`. Un valor buit s'ignora i no restringeix la
                    selecció.
                  type: string
                filter_warning:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `warning` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. S'ignora
                    sense `delete_all`. Un valor buit s'ignora i no restringeix
                    la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_status_initialized_as_in_review:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `status_initialized_as_in_review` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. S'ignora sense `delete_all`. Un valor buit s'ignora
                    i no restringeix la selecció.
                  type: boolean
                filter_is_kyc_to_be_reviewed:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `is_kyc_to_be_reviewed` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. S'ignora sense `delete_all`. Un valor buit s'ignora
                    i no redueix la selecció.
                  type: boolean
                filter_euuid:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `euuid` de [Llistar
                    sessions](/ca/sessions-api/list-sessions), amb el mateix
                    valor. Un sol valor, no una llista: una matriu s'uneix en un
                    únic valor separat per comes, de manera que diversos valors
                    es rebutgen amb `400`. S'ignora sense `delete_all`. Un valor
                    buit s'ignora i no redueix la selecció.
                  type: string
                  format: uuid
                filter_organization_name:
                  description: >-
                    Restringeix un `delete_all` a les sessions que coincideixen
                    amb el filtre `organization_name` de [List
                    Sessions](/ca/sessions-api/list-sessions), amb els mateixos
                    valors. Una cadena separada per comes o un array. Amb una
                    clau d'API només pot coincidir amb el nom de la teva pròpia
                    organització, de manera que selecciona totes les teves
                    sessions o cap. S'ignora sense `delete_all`. Un valor buit
                    s'ignora i no restringeix la selecció.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
            examples:
              Specific sessions:
                summary: Elimina sessions específiques per número
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                    - '1003'
              All sessions:
                summary: Elimina totes les sessions de KYC de l'aplicació
                value:
                  delete_all: true
              Delete and retain templates:
                summary: >-
                  Elimina sessions però mantén les plantilles biomètriques sense
                  imatges durant 365 dies
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Privacy erasure:
                summary: >-
                  Elimina sessions i purga totes les plantilles conservades dels
                  seus usuaris
                value:
                  session_numbers:
                    - '1001'
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
              Filtered delete_all:
                summary: >-
                  Elimina totes les sessions rebutjades d'un flux de treball
                  creades el setembre de 2026
                value:
                  delete_all: true
                  filter_status:
                    - Declined
                  filter_workflow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  filter_date_from: '2026-09-01'
                  filter_date_to: '2026-09-30'
      responses:
        '200':
          description: >-
            Fins a 20 sessions han coincidit i s'han processat a la sol·licitud.
            Un resultat per sessió coincident; els números que no han coincidit
            amb res (desconeguts o ja suprimits) s'ometen i no apareixen. Un
            resultat confirma la supressió excepte quan `face_retention_outcome`
            és `failed_retryable`: aquesta sessió NO s'ha suprimit i s'hauria de
            reintentar.
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        session_id:
                          type: string
                          format: uuid
                          description: La sessió eliminada.
                        session_number:
                          type: integer
                          nullable: true
                          description: El número de la sessió eliminada.
                        face_retention_outcome:
                          type: string
                          enum:
                            - retained_with_user
                            - deleted
                            - none
                            - ineligible_no_vendor_user
                            - failed_retryable
                          description: >-
                            Què ha passat amb les dades biomètriques facials de
                            la sessió. `deleted`: l'embedding facial s'ha
                            suprimit amb la sessió (per defecte).
                            `retained_with_user`: la sessió se suprimeix i una
                            plantilla biomètrica sense imatges es manté
                            vinculada a l'usuari; consulta
                            `biometric_template_uuid`. `none`: la sessió no
                            tenia cap embedding facial (per exemple, una sessió
                            de KYC només amb document sense selfie de prova de
                            vida; aquest endpoint mai selecciona sessions de
                            KYB). `ineligible_no_vendor_user`: s'ha sol·licitat
                            la conservació però la sessió no té cap usuari
                            enllaçat, de manera que l'embedding s'ha suprimit
                            amb la sessió. `failed_retryable` (només a
                            l'endpoint per lots): el grup amb el qual s'ha
                            suprimit aquesta sessió no s'ha pogut suprimir (un
                            servei d'emmagatzematge, un dipòsit biomètric o un
                            proveïdor de monitoratge no estava disponible);
                            aquesta sessió encara es manté, repeteix la
                            sol·licitud per a ella.
                        biometric_template_uuid:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID de la plantilla biomètrica conservada quan
                            `face_retention_outcome` és `retained_with_user`;
                            `null` en cas contrari. Gestiona-la mitjançant
                            `/v3/biometric-templates/{template_uuid}/`.
                        biometric_template_expires_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Quan s'elimina la plantilla biomètrica conservada,
                            quan `face_retention_outcome` és
                            `retained_with_user`; `null` quan no es conserva cap
                            plantilla.
                        deleted_child_verifications:
                          type: integer
                          description: >-
                            Sempre `0` en aquest endpoint, que només suprimeix
                            sessions de KYC. Si se suprimeix una sessió de
                            Verificació d'empreses (KYB) amb `DELETE
                            /v3/session/{sessionId}/delete/`, s'informa de les
                            verificacions que va crear i que es van suprimir amb
                            ella.
              examples:
                Mixed outcomes:
                  value:
                    results:
                      - session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                        session_number: 1001
                        face_retention_outcome: deleted
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e
                        session_number: 1002
                        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
                      - session_id: 7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c
                        session_number: 1003
                        face_retention_outcome: ineligible_no_vendor_user
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                        session_number: 1004
                        face_retention_outcome: failed_retryable
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
        '202':
          description: >-
            S'han trobat més de 20 sessions. S'eliminen en segon pla; consulta
            periòdicament `GET /v3/sessions/delete/{job_id}/` fins que `status`
            sigui `COMPLETED` o `FAILED`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDeletionJob'
              examples:
                Job accepted:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: PENDING
                    total: 250
                    processed: 0
                    outcomes:
                      deleted: 0
                      none: 0
                      retained_with_user: 0
                      ineligible_no_vendor_user: 0
                      failed_retryable: 0
                      already_deleted: 0
                    deleted_child_verifications: 0
                    error: null
                    created_at: '2026-10-09T10:15:00Z'
                    completed_at: null
        '400':
          description: >-
            Error de validació — no s'ha eliminat res. Els valors d'error són
            matrius de cadenes de missatges indexades pel nom del camp.
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_numbers:
                    type: array
                    items:
                      type: string
                additionalProperties:
                  description: >-
                    Altres claus: una clau `filter_*` que no sigui un filtre de
                    llista de sessions (`"Unknown filter."`), o una clau
                    `filter_*` el valor de la qual no es pugui llegir (amb
                    aquesta clau `filter_*` com a clau, acompanyada d'una matriu
                    de missatges).
              examples:
                Missing selector:
                  summary: No s'ha proporcionat ni session_numbers ni delete_all
                  value:
                    session_numbers:
                      - This field is required unless delete_all is true.
                Empty list:
                  summary: session_numbers és una matriu buida
                  value:
                    session_numbers:
                      - This list may not be empty.
                Non-numeric entry:
                  summary: session_numbers conté una cadena que no és numèrica
                  value:
                    session_numbers:
                      - All session_numbers must be numeric.
                Privacy erasure cannot retain:
                  summary: >-
                    deletion_instruction privacy_erasure combinat amb
                    retain_face_embeddings true
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    Conservació de dades sol·licitada sense face_retention_days
                    a la sol·licitud o a l'aplicació
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
                Unknown filter:
                  summary: Una clau filter_* que List Sessions no té
                  value:
                    filter_reviewer: Unknown filter.
                Unreadable filter value:
                  summary: Un valor de filtre que no es pot llegir
                  value:
                    filter_date_from:
                      - Enter a valid date.
        '403':
          description: >-
            Falta la clau d'API. Si falta la clau, es retorna `403`; una clau
            incorrecta, revocada o caducada retorna `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Falta la capçalera x-api-key, o la clau no és vàlida
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            Una sessió seleccionada forma part d'un informe regulador
            finalitzat. No s'elimina res.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            S'ha superat el límit de freqüència d'escriptura compartit (300
            sol·licituds POST/PATCH/DELETE per minut per clau d'API). Revisa les
            capçaleres de resposta `Retry-After` i `X-RateLimit-*` abans de
            reintentar.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: Pressupost d'escriptura esgotat
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/sessions/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "session_numbers": ["1001", "1002", "1003"]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.batch_delete(
                session_numbers=["1001", "1002", "1003"],
            )
            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.batchDelete({
              session_numbers: ["1001", "1002", "1003"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.BatchDelete(ctx, didit.SessionsBatchDeleteParams{\n\tSessionNumbers: didit.Some([]string{\"1001\", \"1002\", \"1003\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.SessionsBatchDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().batchDelete(SessionsBatchDeleteParams.builder()
                    .sessionNumbers(List.of("1001", "1002", "1003"))
                    .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->batchDelete([
                'session_numbers' => ['1001', '1002', '1003'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result = didit.sessions.batch_delete(session_numbers: ["1001",
            "1002", "1003"])

            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.BatchDeleteAsync(new
            SessionsBatchDeleteParams

            {
                SessionNumbers = new string[] { "1001", "1002", "1003" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDeletionJob:
      type: object
      description: >-
        Una eliminació massiva de sessions en execució en segon pla: progrés i
        recomptes per resultat, mai quines sessions ha eliminat.
      properties:
        job_id:
          type: string
          format: uuid
          description: >-
            Consulta periòdicament `GET /v3/sessions/delete/{job_id}/` amb
            aquest id.
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
          description: >-
            `PENDING`: acceptat, encara no iniciat. `PROCESSING`: suprimint;
            `processed` i `outcomes` s'estan actualitzant. `COMPLETED`: s'ha
            donat compte de totes les sessions seleccionades. `FAILED`: la feina
            s'ha aturat abans d'hora; consulta `error`.
        total:
          type: integer
          description: Sessions seleccionades quan es va sol·licitar la supressió.
        processed:
          type: integer
          description: Sessions que la tasca ha completat fins ara.
        outcomes:
          type: object
          description: >-
            Quantes sessions han acabat en cada resultat. Totes les claus estan
            sempre presents.
          properties:
            deleted:
              type: integer
              description: Sessions suprimides juntament amb el seu embedding facial.
            none:
              type: integer
              description: Sessions suprimides que no tenien cap embedding facial.
            retained_with_user:
              type: integer
              description: >-
                Sessions suprimides mentre es va conservar una plantilla
                biomètrica sense imatges per al seu usuari, tal com demanava la
                sol·licitud o la política de l'aplicació.
            ineligible_no_vendor_user:
              type: integer
              description: >-
                Sessions suprimides, amb el seu embedding facial, perquè se'n va
                sol·licitar la conservació però no tenien cap usuari vinculat.
            failed_retryable:
              type: integer
              description: >-
                Sessions reportades com a no suprimides. Una tasca reintenta un
                grup que no ha pogut suprimir per si mateixa en lloc de
                comptabilitzar-lo aquí.
            already_deleted:
              type: integer
              description: >-
                Sessions seleccionades que ja s'havien suprimit, per exemple
                mitjançant una altra sol·licitud, quan la tasca hi va arribar.
        deleted_child_verifications:
          type: integer
          description: >-
            Verificacions creades per les verificacions d'empreses eliminades,
            eliminades amb elles. Sempre és `0` per a una tasca iniciada per
            `POST /v3/sessions/delete/`, que només elimina sessions de KYC.
        error:
          type: string
          nullable: true
          description: >-
            `null` tret que `status` sigui `FAILED`; en aquest cas, el motiu pel
            qual s'ha aturat l'eliminació. Les sessions a les quals la tasca no
            ha arribat continuen existint: repeteix la sol·licitud per
            eliminar-les.
        created_at:
          type: string
          format: date-time
          description: Quan es va sol·licitar l'eliminació.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Quan va finalitzar la tasca; `null` mentre s'està executant.
    InFiledReportError:
      type: object
      description: >-
        L'eliminació s'ha rebutjat perquè les dades seleccionades formen part
        d'un informe regulador finalitzat. No s'ha eliminat res. Elimina
        l'informe i després repeteix la sol·licitud.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Codi d'error estable per a una eliminació bloquejada per un informe
            normatiu finalitzat.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Informes que bloquegen la supressió d'una persona, empresa, cas o
            sessió.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transaccions que bloquegen l'eliminació d'una transacció, cadascuna
            amb els informes que la llisten.
    FiledRegulatoryReport:
      type: object
      description: Un informe regulador finalitzat que impedeix l'eliminació sol·licitada.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID de l'informe.
        report_number:
          type: string
          description: Número d'informe mostrat a la Console (per exemple, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipus d'informe regulador.
        case_uuid:
          type: string
          format: uuid
          description: Cas al qual pertany l'informe.
    FiledReportTransaction:
      type: object
      description: >-
        Una transacció que no es pot suprimir perquè un informe regulador
        finalitzat la inclou.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID de transacció de Didit.
        transaction_id:
          type: string
          description: >-
            L'identificador de la transacció proporcionat quan es va crear la
            transacció.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Informes finalitzats que inclouen aquesta transacció.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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