> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de eliminação em lote de empresas: apagamento KYB

> Elimine em massa entidades de empresas (KYB) da Didit por vendor_data ou didit_internal_id. Conforme com o RGPD e o CCPA.



Prompt para eliminar empresas em lote
        Copiar o prompt para a área de transferência



      
      

\<pre>

\`Goal: Permanently delete one or many Didit Business (KYB) entities. The matching business records, their tag links, and their comment history are removed permanently. Verification sessions and their records (KYB session data, document submissions, AML hits, beneficial-owner verifications) are NOT removed by this endpoint; delete those separately with DELETE /v3/session/{sessionId}/delete/.

Endpoint: POST https://verification.didit.me/v3/businesses/delete/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body — provide EXACTLY ONE selector (mutually exclusive):
\- vendor_data_list: string[] — your own identifiers (case-insensitive after normalisation).
\- didit_internal_id_list: string[] (UUIDs) — Didit's internal IDs.
\- delete_all: true — wipe every business in this application. No confirmation, no undo.

curl:
curl -X POST 'https://verification.didit.me/v3/businesses/delete/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data_list": ["company-123", "company-456"]}'

Response 200:
\{
"deleted": <int — number of businesses actually deleted; excludes vendor_data values that didn't match>
}

Idempotency: re-sending the same list returns deleted: 0 after the first run (unmatched IDs are silently skipped). There is no undo.

Failure modes:
\- 400 — no selector supplied. { "detail": "Provide vendor_data_list, didit_internal_id_list, or set delete_all=true." }
\- 401 — missing/invalid x-api-key.
\- 403 — lacks delete:businesses. { "detail": "You do not have permission to perform this action." }
\- 409 — the selection includes a company in 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.
\- 409 — code: subject_deletion_in_progress: another request is still deleting one of the selected companies. This request deleted nothing; repeat it once that deletion has finished.
\- 429 — rate-limited.

WARNING — delete_all: true: there is no confirmation step and no undo. Restrict to API keys you intentionally provision for batch maintenance.

When to prefer status change instead:
\- For day-to-day blocking, use PATCH /v3/businesses/{vendor_data}/update-status/ with {"status": "BLOCKED"} — it keeps the audit trail intact while rejecting future sessions for the same identifier.

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

\</pre>



      
      

Colar em

## Visão geralElimina uma ou mais [entidades empresariais](https://docs.didit.me/pt/entities/businesses/overview.md). Os registos das empresas são removidos de forma permanente. As sessões de Verificação de empresas (KYB) não são abrangidas por este endpoint e mantêm-se, com a ligação à empresa removida; elimine-as com [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md). As transações também não são abrangidas; elimine-as com [Eliminar transações em lote](https://docs.didit.me/pt/management-api/transactions/delete.md).## Quando usar- Pedidos de **direito ao esquecimento**.
- **Limpeza** de empresas de teste durante o QA.
- **Desprovisionamento** de empresas removidas da sua própria plataforma.## Notas- Aceita uma lista de valores de `vendor_data` ou de valores de `didit_internal_id`.
- Idempotente: eliminar uma empresa já eliminada não tem efeito.
- Devolve apenas uma contagem do que foi eliminado, e não um relatório por item. Os valores que não correspondem a nada são ignorados sem aviso.
- Emite `business.data.updated` com `deleted_at` definido.
- Os registos pertencentes à própria entidade empresarial são eliminados com ela: as suas ligações de etiquetas, o histórico de comentários e os seus próprios registos de dispositivo e de rede.
- Os registos produzidos por uma sessão KYB NÃO são eliminados: os dados do registo de empresas, os documentos carregados, os resultados AML, os beneficiários efetivos e as verificações de pessoas-chave pertencem à sessão e mantêm-se até eliminar a própria sessão.## Dados num relatório regulamentar finalizadoSe alguma das empresas selecionadas fizer parte de um caso com um relatório regulamentar finalizado, todo o pedido devolve `409` e nada é eliminado. A resposta usa `code: in_filed_report` e indica cada relatório:```json theme={null}
{
  "detail": "A case about this person or company has a filed regulatory report, so it cannot be deleted.",
  "code": "in_filed_report",
  "reports": [
    {
      "uuid": "5ec00000-0000-4000-8000-000000000007",
      "report_number": "SAR-0001",
      "report_type": "SAR",
      "case_uuid": "c1a5e000-0000-4000-8000-000000000001"
    }
  ]
}
```Elimine cada relatório com [Eliminar relatório](https://docs.didit.me/pt/management-api/regulatory-reports/delete.md) e, em seguida, repita o mesmo pedido.## Uma eliminação já em cursoUma empresa só pode ser eliminada por um pedido de cada vez. Se outro pedido ainda estiver a eliminar uma das empresas selecionadas, este pedido aguarda, no máximo, alguns segundos e, depois, devolve `409` com `code: subject_deletion_in_progress` sem eliminar nada:```json theme={null}
{
  "detail": "This person or company is being deleted. Retry after deletion completes.",
  "code": "subject_deletion_in_progress"
}
```Repita o mesmo pedido quando a outra eliminação terminar. Uma empresa que essa eliminação já tenha removido deixa de corresponder, pelo que a repetição elimina apenas o que restar.## PermissõesA função tem de conceder `delete:businesses`. É normalmente reservada para `OWNER` e `ADMIN`.## Relacionados- [Conservação de dados](https://docs.didit.me/pt/console/data-retention.md)
- [Registos de auditoria](https://docs.didit.me/pt/console/audit-logs.md)
- [Operações de empresas](https://docs.didit.me/pt/entities/businesses/operations.md)


## OpenAPI

````yaml pt/openapi-25.json POST /v3/businesses/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/businesses/delete/:
    post:
      tags:
        - Businesses
      summary: Eliminar empresas em lote
      description: >-
        **Elimine permanentemente** empresas — isto não pode ser anulado. Para
        bloqueio, prefira [Update Business
        Status](#patch-/v3/businesses/-vendor_data-/update-status/) com
        `BLOCKED`.


        **Relatórios regulamentares submetidos:** se os dados selecionados
        estiverem num relatório regulamentar finalizado, todo o pedido é
        recusado com `409` e nada é eliminado. O corpo utiliza `code:
        in_filed_report` e identifica cada relatório com `uuid`,
        `report_number`, `report_type` e `case_uuid`. Elimine os relatórios e
        repita o pedido.
      operationId: batch_delete_businesses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Forneça `vendor_data_list`, `didit_internal_id_list` ou
                `delete_all: true`. Ordem de precedência quando vários são
                enviados: `delete_all` > `vendor_data_list` >
                `didit_internal_id_list` (apenas o seletor com maior precedência
                é utilizado).
              properties:
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Os seus próprios identificadores a eliminar, correspondidos
                    exatamente como foram enviados.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: UUIDs internos da Didit (`didit_internal_id`) a eliminar.
                delete_all:
                  type: boolean
                  default: false
                  description: >-
                    Se `true`, elimina todas as empresas na aplicação. Não pode
                    ser combinado com os seletores de lista.
            examples:
              Specific businesses:
                summary: Eliminar por vendor_data
                value:
                  vendor_data_list:
                    - company-123
                    - company-456
              Specific internal IDs:
                summary: Eliminar por didit_internal_id
                value:
                  didit_internal_id_list:
                    - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    - b2c3d4e5-f6a7-8901-bcde-f12345678901
              All businesses:
                summary: Apagar todas as empresas nesta aplicação
                value:
                  delete_all: true
      responses:
        '200':
          description: >-
            Empresas eliminadas. Devolve o número de linhas efetivamente
            removidas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: integer
                    description: >-
                      Número de empresas eliminadas (exclui valores de
                      vendor_data que não corresponderam a nada).
              examples:
                Deleted some:
                  value:
                    deleted: 2
                Nothing matched:
                  value:
                    deleted: 0
        '400':
          description: >-
            Nenhum seletor fornecido (todos os campos `vendor_data_list`,
            `didit_internal_id_list` e `delete_all` estão em falta ou vazios). O
            corpo do erro é um array JSON.
          content:
            application/json:
              examples:
                Missing selector:
                  value:
                    - >-
                      Provide vendor_data_list, didit_internal_id_list, or set
                      delete_all=true.
        '403':
          description: >-
            Chave de API em falta, inválida ou revogada, ou a chave não pode
            eliminar empresas para esta aplicação. Uma chave em falta devolve
            `403`; uma chave incorreta, revogada ou expirada devolve `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            Nada é eliminado. O `code` indica o motivo: `in_filed_report` quando
            a seleção inclui uma empresa num relatório regulamentar finalizado,
            `subject_deletion_in_progress` quando outro pedido ainda está a
            eliminar uma das empresas selecionadas. Repita o pedido assim que
            essa eliminação estiver concluída.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/InFiledReportError'
                  - $ref: '#/components/schemas/SubjectDeletionInProgressError'
        '429':
          description: >-
            Limite de pedidos excedido; reduza a frequência e tente novamente
            após o intervalo indicado em `Retry-After`.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/businesses/delete/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"vendor_data_list": ["company-123", "company-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.batch_delete(
                vendor_data_list=["company-123", "company-456"],
            )
            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.businesses.batchDelete({
              vendor_data_list: ["company-123", "company-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.BatchDelete(ctx, didit.BusinessesBatchDeleteParams{\n\tVendorDataList: didit.Some([]string{\"company-123\", \"company-456\"}),\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.BusinessesBatchDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.businesses().batchDelete(BusinessesBatchDeleteParams.builder()
                    .vendorDataList(List.of("company-123", "company-456"))
                    .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->businesses->batchDelete([
                'vendor_data_list' => ['company-123', 'company-456'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result = didit.businesses.batch_delete(vendor_data_list:
            ["company-123", "company-456"])

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

            {
                VendorDataList = new string[] { "company-123", "company-456" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    InFiledReportError:
      type: object
      description: >-
        A eliminação foi recusada porque os dados selecionados constam de um
        relatório regulamentar finalizado. Nada é eliminado. Elimine o relatório
        e, em seguida, repita o pedido.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Código de erro estável para uma eliminação bloqueada por um
            relatório regulamentar finalizado.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Relatórios que bloqueiam a eliminação de uma pessoa, empresa, caso
            ou sessão.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transações que bloqueiam a eliminação de uma transação, cada uma com
            os relatórios que a listam.
    SubjectDeletionInProgressError:
      type: object
      description: >-
        Outro pedido ainda está a eliminar esta pessoa ou empresa. Este pedido
        não eliminou nada e pode ser repetido assim que essa eliminação
        terminar; uma repetição eliminará o que ainda estiver selecionado.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - subject_deletion_in_progress
          description: >-
            Código de erro estável para uma pessoa ou empresa que outro pedido
            ainda está a eliminar.
    FiledRegulatoryReport:
      type: object
      description: Um relatório regulamentar finalizado que impede a eliminação pedida.
      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 apresentado na Consola (por exemplo, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipo de relatório regulamentar.
        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 eliminada porque um relatório
        regulamentar finalizado a inclui.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID da transação Didit.
        transaction_id:
          type: string
          description: >-
            O identificador de transação fornecido aquando da criação da
            transação.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Relatórios finalizados que listam esta transação.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, 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á
        incorreta, 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 o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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