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

# Excluir sessões em lote via API: limpeza de KYC

> Exclua sessões de KYC na Didit em lote por número ou todas de uma vez. Até 20 retornam resultado por sessão; acima disso, gera um job de exclusão.



Prompt para excluir sessões em lote
        Copiar o prompt para a área de transferência



      
      

\<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>



      
      

Colar em

## ComportamentoCada sessão correspondente é excluída exatamente como em [Excluir sessão](https://docs.didit.me/pt-br/sessions-api/delete-session.md): a sessão, todas as tentativas de verificação que ela contém, sua decisão e seus dados extraídos, seus registros de recursos e todos os seus arquivos armazenados são excluídos, ela desaparece de todos os endpoints de leitura e as URLs de mídia emitidas anteriormente deixam de funcionar. As entregas de webhook ainda na fila para uma sessão excluída, e suas novas tentativas, são descartadas; os webhooks já entregues não são afetados. A exclusão é permanente e irreversível.Se alguma sessão selecionada fizer parte de um relatório regulatório finalizado, a requisição inteira retorna `409` e nada é excluído. A resposta usa `code: in_filed_report` e indica cada relatório. Exclua cada relatório com [Excluir relatório](https://docs.didit.me/pt-br/management-api/regulatory-reports/delete.md) e repita a requisição. Excluir o relatório não exclui a sessão; a sessão permanece até você repetir esta requisição.O número de sessões correspondentes define como a requisição é respondida, quer você as selecione com `session_numbers` ou com `delete_all`:| Sessões correspondentes | Resposta |
| - | - |
| Até 20 | `200 OK` depois que forem excluídas, com um resultado por sessão correspondente em `results`. |
| Mais de 20 | `202 Accepted` com um job de exclusão. As sessões são excluídas em segundo plano; consulte [Obter job de exclusão de sessões](https://docs.didit.me/pt-br/management-api/sessions/get-deletion-job.md) até que ele termine. |Um resultado confirma que a sessão foi excluída, exceto quando seu `face_retention_outcome` é `failed_retryable`: essa sessão **não** foi excluída e continua existindo, portanto trate esse resultado como uma falha que exige nova tentativa, nunca como confirmação de exclusão.
Números que não correspondem a uma sessão de KYC ativa na sua aplicação são ignorados e não aparecem em `results`.## Como restringir `delete_all` com filtrosCom `delete_all: true`, você pode restringir a seleção com os filtros de [Listar sessões](https://docs.didit.me/pt-br/sessions-api/list-sessions.md), cada um com o prefixo `filter_`.
Eles aceitam os mesmos valores dos parâmetros de consulta.
Um filtro que aceita vários valores (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) aceita uma string separada por vírgulas ou um 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"
}
```- Os filtros só se aplicam em conjunto com `delete_all`; com `session_numbers`, eles são validados, mas não alteram a seleção.
- Todos os outros filtros aceitam um único valor.
  Um array é unido em um único valor separado por vírgulas, então várias datas, UUIDs ou valores de `api_service` retornam `400`, e vários textos de `vendor_data`, `search` ou `screened_full_name` não são tratados como alternativas.
- Um filtro com valor vazio é ignorado e, portanto, não restringe a seleção.
- Uma chave `filter_*` desconhecida retorna `400` `{"filter_reviewer": "Unknown filter."}`, e um valor que não pode ser interpretado retorna `400` com a chave `filter_*` correspondente, como `{"filter_date_from": ["Enter a valid date."]}`.
  Nada é excluído em nenhum dos casos, então um filtro digitado errado nunca amplia a exclusão para todas as sessões.
- Um job de exclusão aplica os mesmos filtros e, como todo `delete_all`, abrange apenas as sessões criadas antes da requisição.## Campos de retenção e de instruçãoO endpoint aceita os mesmos campos opcionais do endpoint de sessão única e os aplica a cada sessão correspondente:| Campo | Tipo | Descrição |
| - | - | - |
| `retain_face_embeddings` | booleano ou null | Substitui a `face_retention_policy` da aplicação nesta requisição. |
| `face_retention_days` | inteiro (1-3650) | Período de retenção limitado para os templates retidos. Obrigatório ao reter, a menos que a aplicação defina `face_retention_days`. |
| `face_retention_deadline` | datetime (ISO 8601) | Data limite de expiração opcional; deve estar no futuro. |
| `deletion_instruction` | `operational_session_delete` (padrão) ou `privacy_erasure` | `privacy_erasure` remove todos os modelos retidos do usuário de cada sessão antes de excluir a sessão e não pode ser combinado com `retain_face_embeddings: true`. |
| `instruction_id` | string (máx. 255) | Sua referência persistente para esta instrução. Registrada na trilha de auditoria e em cada modelo retido. |Consulte [Excluir sessão](https://docs.didit.me/pt-br/sessions-api/delete-session.md#dados-biométricos-faciais-excluir-ou-reter) para saber o que um modelo retido contém e o que não contém, como `expires_at` é calculado e o que faz uma instrução de apagamento por privacidade.## Resultados por sessãoPara até 20 sessões correspondentes, `200 OK` retorna um resultado por sessão:```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 resultado traz os mesmos campos da resposta de [Excluir sessão](https://docs.didit.me/pt-br/sessions-api/delete-session.md#resposta). `biometric_template_expires_at` indica quando um template retido é excluído, e `deleted_child_verifications` é sempre `0` aqui, porque este endpoint exclui apenas sessões de KYC.| `face_retention_outcome` | Significado |
| - | - |
| `deleted` | A sessão e seu embedding facial são excluídos. Comportamento padrão. |
| `retained_with_user` | A sessão é excluída. Um template biométrico sem imagem permanece vinculado ao User; seu ID é `biometric_template_uuid`. |
| `none` | A sessão não tinha embedding facial para excluir ou reter. |
| `ineligible_no_vendor_user` | A retenção foi solicitada, mas a sessão não está vinculada a um User, então não há nada a que vincular um template. A sessão e seu embedding são excluídos. |
| `failed_retryable` | Não foi possível excluir o grupo ao qual esta sessão pertence, porque um serviço de armazenamento, um repositório biométrico ou um provedor de monitoramento estava indisponível. Esta sessão **não** foi excluída e continua existindo. Execute a requisição novamente para ela; as novas tentativas resultam em um único template. |As sessões são excluídas em grupos. Quando um grupo não pode ser excluído, todas as sessões dele são retornadas como `failed_retryable`; os outros grupos não são afetados e permanecem excluídos.## Seleções grandes são executadas como um jobQuando mais de 20 sessões correspondem, a resposta é `202 Accepted` com um job de exclusão em vez 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
}
```Consulte [Get Session Deletion Job](https://docs.didit.me/pt-br/management-api/sessions/get-deletion-job.md) a cada poucos segundos até que `status` seja `COMPLETED` ou `FAILED`.- O job informa quantas sessões foram concluídas com cada resultado, nunca quais sessões ele excluiu.
- Um job `delete_all` exclui apenas as sessões criadas antes da sua requisição. Sessões iniciadas enquanto ele é executado não são excluídas.
- Os campos de retenção e de instrução da sua requisição se aplicam a todas as sessões que o job excluir.
- Se um grupo ainda não puder ser excluído, o job tenta excluí-lo novamente por conta própria.
- Um job `FAILED` explica o motivo em `error`. As sessões que ele ainda não havia alcançado permanecem intactas: repita a requisição para excluí-las.## Exemplos> [tab] Excluir por 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] Excluir e reter templates
>
> ```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] Apagamento por privacidade
>
> ```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] Excluir tudo e consultar o job periodicamente
>
> ```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"
> ```## Migração das respostas 204Até esta versão, o endpoint retornava `204 No Content`. Agora ele retorna `200 OK` com `results[]`, ou `202 Accepted` com um job de exclusão quando mais de 20 sessões correspondentes. Atualize os clientes que verificam `204`. O comportamento padrão de exclusão não mudou: as aplicações existentes continuam em `delete_with_session` até que você altere a política explicitamente.## Conteúdos relacionados- [Delete Session](https://docs.didit.me/pt-br/sessions-api/delete-session.md)
- [Get Session Deletion Job](https://docs.didit.me/pt-br/management-api/sessions/get-deletion-job.md)
- [Templates biométricos](https://docs.didit.me/pt-br/management-api/biometric-templates/overview.md)
- [Retenção de dados](https://docs.didit.me/pt-br/console/data-retention.md)


## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/sessions/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/delete/:
    post:
      tags:
        - Sessions
      summary: Excluir sessões de KYC em massa por session_number
      description: >-
        Exclua em massa sessões de Verificação de usuários (KYC) pelo
        `session_number` numérico, ou todas as sessões KYC da sua aplicação com
        `delete_all: true`.


        `session_number` é o contador sequencial e legível exibido na lista de
        sessões do Console e retornado como `session_number` pelos endpoints de
        criação de sessão e de decisão; ele **não** é o UUID `session_id`. Para
        excluir uma sessão pelo UUID, ou para excluir uma sessão de Verificação
        de empresas (KYB), que este endpoint nunca afeta, use `DELETE
        /v3/session/{sessionId}/delete/`.


        **Até 20 sessões são excluídas na própria requisição; acima disso, a
        exclusão é executada como uma tarefa.** O que decide é o número de
        sessões correspondentes, sejam elas selecionadas por `session_numbers`
        ou com `delete_all`:

        - Até 20 sessões correspondentes: elas são excluídas antes da resposta,
        que é `200` com uma entrada por sessão em `results[]`.

        - Mais de 20: a resposta é `202` com uma tarefa de exclusão, e as
        sessões são excluídas em segundo plano. Consulte `GET
        /v3/sessions/delete/{job_id}/` até que `status` seja `COMPLETED` ou
        `FAILED`. Uma tarefa informa contagens por resultado, nunca quais
        sessões ela excluiu. Uma tarefa `delete_all` exclui apenas as sessões
        criadas antes da requisição; as sessões iniciadas durante a execução não
        são excluídas.


        Cada sessão excluída recebe exatamente o mesmo tratamento do endpoint de
        exclusão de sessão individual: a sessão, todas as tentativas de
        verificação que ela contém, sua decisão e os dados extraídos, os
        registros dos recursos relacionados (verificação de identidade, rosto,
        prova de vida, correspondência facial etc.) e todos os arquivos
        armazenados são excluídos; ela desaparece de todos os endpoints de
        leitura, e as URLs de mídia emitidas anteriormente deixam de funcionar.
        As entregas de webhook ainda na fila para uma sessão excluída, e suas
        novas tentativas, são descartadas; os webhooks já entregues não são
        afetados. As entradas da lista de bloqueio **não** são removidas, os
        créditos já consumidos **não** são reembolsados e as entidades User às
        quais as sessões pertencem **não** são excluídas (use `POST
        /v3/users/delete/` para isso); nenhum webhook é emitido pela exclusão. A
        exclusão é permanente e irreversível.


        **Regras de seleção:**

        - Com `delete_all: true`, você pode restringir a seleção com os filtros
        de `GET /v3/sessions/`, cada um com o prefixo `filter_` (por exemplo,
        `filter_status`, `filter_workflow_id`, `filter_date_from`). Os filtros
        que aceitam vários valores em List Sessions (`status`, `workflow_id`,
        `country`, `region`, `document_type`, `document_name`, `session_type`,
        `warning`, `organization_name`) aceitam uma string separada por vírgulas
        ou um array; os demais aceitam um único valor. Um valor vazio é
        ignorado. Os filtros só se aplicam em conjunto com `delete_all`, e uma
        tarefa de exclusão aplica os mesmos filtros.

        - Uma chave `filter_*` desconhecida, ou um valor de filtro que não pode
        ser interpretado, rejeita a requisição inteira com `400` antes que
        qualquer coisa seja excluída, de modo que um filtro digitado errado
        nunca amplia a exclusão para todas as sessões.

        - As entradas de `session_numbers` que não correspondem a uma sessão KYC
        ativa na sua aplicação (números desconhecidos, sessões já excluídas ou
        sessões de outra aplicação) são **ignoradas silenciosamente**: elas não
        aparecem em `results` e não são contabilizadas no `total` de uma tarefa.

        - Falhas de validação (uma entrada não numérica, uma lista vazia,
        ausência tanto de `session_numbers` quanto de `delete_all`, ou uma
        retenção definida no modelo que a aplicação não consegue cumprir)
        rejeitam a **requisição inteira** com `400` e não excluem nada.

        - As sessões são excluídas em grupos. Se um grupo não puder ser excluído
        (por exemplo, porque um serviço de armazenamento está indisponível),
        todas as sessões desse grupo são informadas como
        `face_retention_outcome: failed_retryable` e permanecem onde estão; os
        demais grupos não são afetados. Repita a requisição para essas sessões.
        Uma tarefa tenta novamente esse grupo por conta própria.

        - Não há limite documentado para o tamanho da lista; o limite de
        requisições de escrita compartilhado (abaixo) é o limite prático.


        **Dados biométricos faciais:** os campos opcionais
        `retain_face_embeddings`, `face_retention_days`,
        `face_retention_deadline`, `deletion_instruction` e `instruction_id` têm
        o mesmo significado que em `DELETE /v3/session/{sessionId}/delete/` e se
        aplicam a todas as sessões correspondentes. Cada resultado informa o
        próprio `face_retention_outcome`.


        **Resposta:** `200 OK` com `results[]` para até 20 sessões
        correspondentes, ou `202 Accepted` com uma tarefa de exclusão para mais
        do que isso. Todo resultado confirma a exclusão, exceto
        `face_retention_outcome: failed_retryable`, que indica uma sessão que
        NÃO foi excluída e deve ser tentada novamente. Versões anteriores deste
        endpoint retornavam `204 No Content`; atualize os clientes que verificam
        `204`.


        **Idempotência:** repetir a mesma requisição não exclui mais nada: os
        números que não correspondem mais a uma sessão são ignorados.


        **`delete_all: true` (destrutivo):** exclui **todas** as sessões KYC
        restantes na aplicação; `session_numbers` é ignorado quando definido.
        Não há etapa de confirmação nem como desfazer.


        **Autenticação:** chave de API no cabeçalho `x-api-key`. Credenciais
        ausentes ou inválidas retornam `403` (`{"detail": "You do not have
        permission to perform this action."}`); esta API nunca retorna `401`.


        **Limite de requisições:** cota de escrita compartilhada de 300
        requisições/min por chave de API em todos os endpoints
        POST/PATCH/DELETE; ultrapassá-la retorna `429`.


        Este endpoint aceita apenas chaves de API. Os tokens Bearer de usuários
        do Business Console são rejeitados com `403` (ao contrário da exclusão
        de sessão individual, que aceita ambos).


        **Relatórios regulatórios enviados:** se os dados selecionados estiverem
        em um relatório regulatório finalizado, a requisição inteira é recusada
        com `409` e nada é excluído. O corpo usa `code: in_filed_report` e
        identifica cada relatório com `uuid`, `report_number`, `report_type` e
        `case_uuid`. Exclua os relatórios e repita a requisição.
      operationId: batch_delete_sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_numbers:
                  type: array
                  description: >-
                    Valores numéricos de `session_number` das sessões de KYC a
                    excluir, como strings contendo apenas dígitos (números JSON
                    também são aceitos e convertidos). Obrigatório, a menos que
                    `delete_all` seja `true`; uma lista vazia retorna `400`.
                    Qualquer entrada que não seja composta apenas de dígitos
                    rejeita a requisição inteira com `400` (a menos que
                    `delete_all` seja `true`; nesse caso, a validação é ignorada
                    e as entradas são desconsideradas). Números que não
                    correspondem a uma sessão ativa na sua aplicação são
                    ignorados silenciosamente.
                  items:
                    type: string
                    pattern: ^[0-9]+$
                    example: '1001'
                  minItems: 1
                  example:
                    - '1001'
                    - '1002'
                    - '1003'
                delete_all:
                  type: boolean
                  description: >-
                    Quando `true`, todas as sessões de KYC restantes na
                    aplicação que faz a chamada são excluídas e
                    `session_numbers` é ignorado, a menos que você restrinja a
                    seleção com chaves `filter_*`. Mais de 20 sessões
                    correspondentes são processadas como um job de exclusão
                    (`202`) que abrange apenas as sessões criadas antes da
                    requisição. O padrão é `false`. Irreversível; não há etapa
                    de confirmação.
                  default: false
                  example: false
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    Substitui a `face_retention_policy` da aplicação para esta
                    exclusão. `true` mantém um template biométrico facial sem
                    imagem vinculado ao User da sessão após a exclusão da
                    sessão; `false` exclui o embedding facial junto com a
                    sessão; omita ou use `null` para seguir a política da
                    aplicação. Ignorado para sessões KYB e para sessões sem
                    embedding facial.
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Duração finita de retenção, em dias, de um template
                    biométrico retido. Obrigatório quando um template é retido,
                    a menos que a aplicação já defina `face_retention_days`. O
                    `expires_at` do template é o mais próximo entre essa
                    duração, o período geral de retenção de dados da aplicação e
                    `face_retention_deadline`.
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    Expiração definitiva opcional para um template retido. Deve
                    estar no futuro.
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    A classe de instrução que você está dando.
                    `operational_session_delete` exclui a sessão e retém um
                    template apenas quando a política ou
                    `retain_face_embeddings` assim determina. `privacy_erasure`
                    elimina todos os templates biométricos retidos vinculados ao
                    User da sessão antes de excluir a sessão, não pode ser
                    substituído pela política da aplicação e não pode ser
                    combinado com `retain_face_embeddings: true` (`400`).
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    Sua referência permanente para esta instrução de exclusão
                    (por exemplo, o ID de um ticket de apagamento). Registrada
                    na trilha de auditoria e em qualquer template retido. Gerada
                    pela Didit quando omitida.
                  example: dsar-2026-0142
                filter_status:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `status` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_vendor_data:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `vendor_data` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único texto separado por vírgulas, portanto vários valores
                    não são tratados como alternativas. Ignorado sem
                    `delete_all`. Um valor vazio é ignorado e não restringe a
                    seleção.
                  type: string
                filter_search:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `search` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único texto separado por vírgulas, portanto vários valores
                    não são tratados como alternativas. Ignorado sem
                    `delete_all`. Um valor vazio é ignorado e não restringe a
                    seleção.
                  type: string
                filter_workflow_id:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `workflow_id` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_date_from:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `date_from` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único valor separado por vírgulas, então vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: date
                filter_date_to:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `date_to` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único valor separado por vírgulas, então vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: date
                filter_country:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `country` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_type:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `document_type` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `document_name` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_region:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `region` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_didit_internal_id:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `didit_internal_id` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único valor separado por vírgulas, então vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: uuid
                filter_session_type:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `session_type` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_api_service:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `api_service` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único valor separado por vírgulas, então vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                filter_screened_full_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `screened_full_name` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único texto separado por vírgulas, portanto vários valores
                    não são tratados como alternativas. Ignorado sem
                    `delete_all`. Um valor vazio é ignorado e não restringe a
                    seleção.
                  type: string
                filter_warning:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `warning` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_status_initialized_as_in_review:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `status_initialized_as_in_review` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Ignorado sem `delete_all`. Um valor vazio é
                    ignorado e não restringe a seleção.
                  type: boolean
                filter_is_kyc_to_be_reviewed:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `is_kyc_to_be_reviewed` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Ignorado sem `delete_all`. Um valor vazio é
                    ignorado e não restringe a seleção.
                  type: boolean
                filter_euuid:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `euuid` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido em um
                    único valor separado por vírgulas, então vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: uuid
                filter_organization_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondem ao
                    filtro `organization_name` de [List
                    Sessions](/pt-br/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array. Com
                    uma chave de API, ele só pode corresponder ao nome da sua
                    própria organização, portanto seleciona todas as suas
                    sessões ou nenhuma. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
            examples:
              Specific sessions:
                summary: Excluir sessões específicas pelo número
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                    - '1003'
              All sessions:
                summary: Excluir todas as sessões de KYC da aplicação
                value:
                  delete_all: true
              Delete and retain templates:
                summary: >-
                  Excluir sessões, mas manter templates biométricos sem imagens
                  por 365 dias
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Privacy erasure:
                summary: >-
                  Excluir sessões e eliminar todos os templates retidos dos
                  respectivos usuários
                value:
                  session_numbers:
                    - '1001'
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
              Filtered delete_all:
                summary: >-
                  Excluir todas as sessões recusadas de um fluxo criadas em
                  setembro 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: >-
            Até 20 sessões corresponderam e foram processadas na requisição. Há
            um resultado por sessão correspondente; números que não
            corresponderam a nada (desconhecidos ou já excluídos) são ignorados
            e não aparecem. Um resultado confirma a exclusão, exceto quando
            `face_retention_outcome` é `failed_retryable`: essa sessão NÃO foi
            excluída e a operação deve ser tentada novamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        session_id:
                          type: string
                          format: uuid
                          description: A sessão excluída.
                        session_number:
                          type: integer
                          nullable: true
                          description: O número da sessão excluída.
                        face_retention_outcome:
                          type: string
                          enum:
                            - retained_with_user
                            - deleted
                            - none
                            - ineligible_no_vendor_user
                            - failed_retryable
                          description: >-
                            O que aconteceu com os dados biométricos faciais da
                            sessão. `deleted`: o embedding facial foi excluído
                            junto com a sessão (padrão). `retained_with_user`: a
                            sessão é excluída e um template biométrico sem
                            imagem permanece vinculado ao User; veja
                            `biometric_template_uuid`. `none`: a sessão não
                            tinha embedding facial (por exemplo, uma sessão de
                            KYC somente com documento, sem selfie de prova de
                            vida; sessões de KYB nunca são selecionadas por este
                            endpoint). `ineligible_no_vendor_user`: a retenção
                            foi solicitada, mas a sessão não tem um User
                            vinculado, então o embedding foi excluído junto com
                            a sessão. `failed_retryable` (somente no endpoint em
                            lote): o grupo com o qual esta sessão seria excluída
                            não pôde ser excluído (um serviço de armazenamento,
                            um armazenamento biométrico ou um provedor de
                            monitoramento estava indisponível); esta sessão
                            continua existindo, repita a requisição para ela.
                        biometric_template_uuid:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Id do template biométrico retido quando
                            `face_retention_outcome` é `retained_with_user`;
                            caso contrário, `null`. Gerencie-o por meio de
                            `/v3/biometric-templates/{template_uuid}/`.
                        biometric_template_expires_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Quando o template biométrico retido é excluído,
                            quando `face_retention_outcome` é
                            `retained_with_user`; `null` quando nenhum template
                            é retido.
                        deleted_child_verifications:
                          type: integer
                          description: >-
                            Sempre `0` neste endpoint, que exclui apenas sessões
                            de KYC. Excluir uma sessão de Verificação de
                            empresas (KYB) com `DELETE
                            /v3/session/{sessionId}/delete/` informa as
                            verificações criadas por ela que foram excluídas
                            junto.
              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: >-
            Mais de 20 sessões corresponderam. Elas são excluídas em segundo
            plano; consulte `GET /v3/sessions/delete/{job_id}/` periodicamente
            até que `status` seja `COMPLETED` ou `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: >-
            Erro de validação: nada foi excluído. Os valores de erro são arrays
            de mensagens com chaves por nome de campo.
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_numbers:
                    type: array
                    items:
                      type: string
                additionalProperties:
                  description: >-
                    Outras chaves: uma chave `filter_*` que não é um filtro de
                    List Sessions (`"Unknown filter."`), ou uma chave `filter_*`
                    cujo valor não pode ser lido (indexada por essa chave
                    `filter_*`, com um array de mensagens).
              examples:
                Missing selector:
                  summary: Nem session_numbers nem delete_all foram informados
                  value:
                    session_numbers:
                      - This field is required unless delete_all is true.
                Empty list:
                  summary: session_numbers é um array vazio
                  value:
                    session_numbers:
                      - This list may not be empty.
                Non-numeric entry:
                  summary: >-
                    session_numbers contém uma string com caracteres não
                    numéricos
                  value:
                    session_numbers:
                      - All session_numbers must be numeric.
                Privacy erasure cannot retain:
                  summary: >-
                    deletion_instruction privacy_erasure combinado com
                    retain_face_embeddings true
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    Retenção solicitada sem face_retention_days na requisição ou
                    na aplicação
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
                Unknown filter:
                  summary: Uma chave filter_* que o List Sessions não possui
                  value:
                    filter_reviewer: Unknown filter.
                Unreadable filter value:
                  summary: Um valor de filtro que não pode ser lido
                  value:
                    filter_date_from:
                      - Enter a valid date.
        '403':
          description: >-
            Chave de API ausente. Uma chave ausente retorna `403`; uma chave
            incorreta, revogada ou expirada retorna `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Cabeçalho x-api-key ausente, ou a chave é inválida
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            Uma sessão selecionada faz parte de um relatório regulatório
            finalizado. Nada é excluído.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            Limite de requisições de escrita compartilhado excedido (300
            requisições POST/PATCH/DELETE por minuto por chave de API).
            Verifique o `Retry-After` e os cabeçalhos de resposta
            `X-RateLimit-*` antes de tentar novamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: Orçamento de escrita esgotado
                  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: >-
        Uma exclusão de sessões em massa executada em segundo plano: progresso e
        contagens por resultado, nunca quais sessões ela excluiu.
      properties:
        job_id:
          type: string
          format: uuid
          description: >-
            Consulte `GET /v3/sessions/delete/{job_id}/` periodicamente com este
            id.
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
          description: >-
            `PENDING`: aceito, ainda não iniciado. `PROCESSING`: excluindo;
            `processed` e `outcomes` estão sendo atualizados. `COMPLETED`: todas
            as sessões selecionadas foram contabilizadas. `FAILED`: o job parou
            antes do fim; consulte `error`.
        total:
          type: integer
          description: Sessões selecionadas quando a exclusão foi solicitada.
        processed:
          type: integer
          description: Sessões que o job já concluiu até agora.
        outcomes:
          type: object
          description: >-
            Quantas sessões terminaram em cada resultado. Todas as chaves estão
            sempre presentes.
          properties:
            deleted:
              type: integer
              description: Sessões excluídas junto com o respectivo embedding facial.
            none:
              type: integer
              description: Sessões excluídas que não tinham embedding facial.
            retained_with_user:
              type: integer
              description: >-
                Sessões excluídas mantendo um template biométrico sem imagem
                para o respectivo User, conforme solicitado pela requisição ou
                pela política da aplicação.
            ineligible_no_vendor_user:
              type: integer
              description: >-
                Sessões excluídas, com o respectivo embedding facial, porque a
                retenção foi solicitada, mas elas não tinham User vinculado.
            failed_retryable:
              type: integer
              description: >-
                Sessões informadas como não excluídas. Um job tenta novamente,
                por conta própria, excluir um grupo que não conseguiu excluir,
                em vez de contabilizá-lo aqui.
            already_deleted:
              type: integer
              description: >-
                Sessões selecionadas que já tinham sido excluídas, por exemplo
                por outra requisição, quando o job chegou a elas.
        deleted_child_verifications:
          type: integer
          description: >-
            Verificações criadas pelas verificações de empresas excluídas, que
            foram excluídas junto com elas. Sempre `0` para um job iniciado por
            `POST /v3/sessions/delete/`, que exclui apenas sessões de KYC.
        error:
          type: string
          nullable: true
          description: >-
            `null`, a menos que `status` seja `FAILED`; nesse caso, o motivo
            pelo qual a exclusão parou. As sessões que o job ainda não havia
            alcançado continuam existindo: repita a requisição para excluí-las.
        created_at:
          type: string
          format: date-time
          description: Quando a exclusão foi solicitada.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Quando o job terminou; `null` enquanto está em execução.
    InFiledReportError:
      type: object
      description: >-
        A exclusão é recusada porque os dados selecionados estão em um relatório
        regulatório finalizado. Nada é excluído. Exclua o relatório e repita a
        requisição.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Código de erro estável para uma exclusão bloqueada por um relatório
            regulatório finalizado.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Relatórios que bloqueiam a exclusão de uma pessoa, empresa, caso ou
            sessão.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transações que impedem a exclusão de uma transação, cada uma com os
            relatórios que a listam.
    FiledRegulatoryReport:
      type: object
      description: Um relatório regulatório finalizado que impede a exclusão solicitada.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID do relatório.
        report_number:
          type: string
          description: Número do relatório exibido no Console (por exemplo, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipo de relatório regulatório.
        case_uuid:
          type: string
          format: uuid
          description: Caso ao qual o relatório pertence.
    FiledReportTransaction:
      type: object
      description: >-
        Uma transação que não pode ser excluída porque um relatório regulatório
        finalizado a inclui.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID da transação na Didit.
        transaction_id:
          type: string
          description: >-
            O identificador da transação informado quando a transação foi
            criada.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Relatórios finalizados que incluem esta transação.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada
        a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a
        uma data de validade. 401 significa que a chave está errada, revogada ou
        expirada; 403 significa que nenhuma chave foi enviada, que a chave não
        tem acesso a este recurso ou ação, ou que a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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