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

# API para excluir empresas em lote: remoção de dados KYB

> Exclua em lote entidades de empresas (KYB) na Didit por vendor_data ou didit_internal_id, em conformidade com GDPR/CCPA.



Prompt para excluir 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.
\- 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 geralExclui uma ou mais [entidades de empresa](https://docs.didit.me/pt-br/entities/businesses/overview.md). Os registros das empresas são removidos permanentemente. As sessões de Verificação de Empresa (KYB) não são abrangidas por este endpoint e continuam existindo, com o vínculo com a empresa removido; exclua-as com [Excluir sessão](https://docs.didit.me/pt-br/sessions-api/delete-session.md). As transações também não são abrangidas; exclua-as com [Excluir transações em lote](https://docs.didit.me/pt-br/management-api/transactions/delete.md).## Quando usar- Solicitações de **direito de ser esquecido**.
- **Limpeza** de empresas de teste durante o QA.
- **Desprovisionamento** de empresas removidas da sua própria plataforma.## Observações- Aceita uma lista de valores de `vendor_data` ou de `didit_internal_id`.
- Idempotente: excluir uma empresa já excluída não tem nenhum efeito.
- Retorna apenas a contagem do que foi excluído, e não um relatório por item. Valores que não correspondem a nada são ignorados sem aviso.
- Emite `business.data.updated` com `deleted_at` preenchido.
- Os registros que pertencem à própria entidade de empresa são excluídos com ela: seus vínculos de tags, seu histórico de comentários e seus próprios registros de dispositivo e de rede.
- Os registros gerados por uma sessão de KYB NÃO são excluídos: dados do registro de empresas, documentos enviados, ocorrências de AML, beneficiários finais e verificações de pessoas-chave pertencem à sessão e continuam existindo até que você exclua a própria sessão.## Dados em um relatório regulatório finalizadoSe alguma das empresas selecionadas fizer parte de um caso com um relatório regulatório finalizado, a requisição inteira retorna `409` e nada é excluído. A resposta usa `code: in_filed_report` e identifica 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"
    }
  ]
}
```Exclua cada relatório com [Excluir relatório](https://docs.didit.me/pt-br/management-api/regulatory-reports/delete.md) e, em seguida, repita a mesma requisição.## PermissõesA função precisa conceder `delete:businesses`. Essa permissão normalmente é reservada para `OWNER` e `ADMIN`.## Relacionados- [Retenção de dados](https://docs.didit.me/pt-br/console/data-retention.md)
- [Registros de auditoria](https://docs.didit.me/pt-br/console/audit-logs.md)
- [Operações de empresas](https://docs.didit.me/pt-br/entities/businesses/operations.md)


## OpenAPI

````yaml pt-br/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: Excluir empresas em lote
      description: >-
        **Exclui permanentemente** empresas — isso não pode ser desfeito. Para
        bloquear, prefira [Atualizar status da
        empresa](#patch-/v3/businesses/-vendor_data-/update-status/) com
        `BLOCKED`.


        **Relatórios regulatórios protocolados:** 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_businesses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Informe `vendor_data_list`, `didit_internal_id_list` ou
                `delete_all: true`. Precedência quando vários são enviados:
                `delete_all` > `vendor_data_list` > `didit_internal_id_list`
                (somente o seletor de maior precedência é usado).
              properties:
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Seus próprios identificadores a excluir, comparados
                    exatamente como enviados.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: UUIDs internos da Didit (`didit_internal_id`) a excluir.
                delete_all:
                  type: boolean
                  default: false
                  description: >-
                    Se `true`, exclui todas as empresas da aplicação. Não pode
                    ser combinado com os seletores de lista.
            examples:
              Specific businesses:
                summary: Excluir por vendor_data
                value:
                  vendor_data_list:
                    - company-123
                    - company-456
              Specific internal IDs:
                summary: Excluir por didit_internal_id
                value:
                  didit_internal_id_list:
                    - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    - b2c3d4e5-f6a7-8901-bcde-f12345678901
              All businesses:
                summary: Excluir todas as empresas desta aplicação
                value:
                  delete_all: true
      responses:
        '200':
          description: >-
            Empresas excluídas. Retorna o número de linhas efetivamente
            removidas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: integer
                    description: >-
                      Número de empresas excluídas (não inclui 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 foi informado (`vendor_data_list`,
            `didit_internal_id_list` e `delete_all` estão todos ausentes 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 ausente, inválida ou revogada, ou a chave não pode
            excluir empresas desta aplicação. Uma chave ausente retorna `403`;
            uma chave incorreta, revogada ou expirada retorna `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            A seleção inclui uma empresa em um relatório regulatório finalizado.
            Nada é excluído.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            Limite de requisições excedido; aguarde 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 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.