> ## 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 per eliminar empreses en lot: esborrat KYB

> Elimina en lot entitats d'empresa (KYB) de Didit segons vendor_data o didit_internal_id, de manera conforme al RGPD i la CCPA.



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



      
      

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



      
      

Enganxa a

## Visió generalElimina una o més [entitats d'empresa](https://docs.didit.me/ca/entities/businesses/overview.md). Els registres d'empresa s'eliminen de manera permanent. Aquest endpoint no cobreix les sessions de Verificació d'empreses (KYB), que es conserven amb l'enllaç a l'empresa esborrat; elimina-les amb [Elimina la sessió](https://docs.didit.me/ca/sessions-api/delete-session.md). Tampoc cobreix les transaccions; elimina-les amb [Elimina transaccions en lot](https://docs.didit.me/ca/management-api/transactions/delete.md).## Quan utilitzar-lo- Sol·licituds de **dret a l'oblit**.
- **Neteja** d'empreses de prova durant el QA.
- **Desaprovisionament** d'empreses eliminades de la teva pròpia plataforma.## Notes- Accepta una llista de valors `vendor_data` o de valors `didit_internal_id`.
- Idempotent: eliminar una empresa que ja està eliminada no té cap efecte.
- Només retorna un recompte del que s'ha eliminat, no un informe per element. Els valors que no coincideixen amb res s'ignoren sense avisar.
- Emet `business.data.updated` amb `deleted_at` establert.
- Els registres que pertanyen a la mateixa entitat d'empresa se n'eliminen amb ella: els seus enllaços d'etiquetes, el seu historial de comentaris i els seus propis registres de dispositiu i de xarxa.
- Els registres generats per una sessió de KYB NO s'eliminen amb ella: les dades del registre mercantil, els documents carregats, les coincidències AML, els titulars reals i les comprovacions de persones clau pertanyen a la sessió i es conserven fins que elimines la pròpia sessió.## Dades en un informe regulador finalitzatSi alguna de les empreses seleccionades forma part d'un cas amb un informe regulador finalitzat, tota la sol·licitud retorna `409` i no s'elimina res. La resposta utilitza `code: in_filed_report` i indica cada informe pel seu nom:```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"
    }
  ]
}
```Elimina cada informe amb [Elimina l'informe](https://docs.didit.me/ca/management-api/regulatory-reports/delete.md) i després repeteix la mateixa sol·licitud.## Una eliminació ja en cursUna empresa només pot ser eliminada per una sol·licitud alhora. Si una altra sol·licitud encara està eliminant alguna de les empreses seleccionades, aquesta sol·licitud espera com a màxim uns quants segons i després retorna `409` amb `code: subject_deletion_in_progress` i no elimina res:```json theme={null}
{
  "detail": "This person or company is being deleted. Retry after deletion completes.",
  "code": "subject_deletion_in_progress"
}
```Repeteix la mateixa sol·licitud quan l'altra eliminació hagi acabat. Una empresa que ja s'hagi eliminat ja no coincideix, de manera que la repetició només elimina el que queda.## PermisosEl rol ha de concedir `delete:businesses`. Normalment està reservat per a `OWNER` i `ADMIN`.## Relacionat- [Conservació de dades](https://docs.didit.me/ca/console/data-retention.md)
- [Registres d'auditoria](https://docs.didit.me/ca/console/audit-logs.md)
- [Operacions d'empresa](https://docs.didit.me/ca/entities/businesses/operations.md)


## OpenAPI

````yaml ca/openapi-25.json POST /v3/businesses/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/businesses/delete/:
    post:
      tags:
        - Businesses
      summary: Eliminar empreses en lot
      description: >-
        **Elimina permanentment** empreses — aquesta acció no es pot desfer. Per
        bloquejar, utilitza preferentment [Actualitza l'estat de
        l'empresa](#patch-/v3/businesses/-vendor_data-/update-status/) amb
        `BLOCKED`.


        **Informes regulatoris presentats:** si les dades seleccionades formen
        part d'un informe regulatori finalitzat, es rebutja tota la sol·licitud
        amb un `409` i no s'elimina res. El cos utilitza `code: in_filed_report`
        i identifica cada informe amb `uuid`, `report_number`, `report_type` i
        `case_uuid`. Elimina els informes i, tot seguit, repeteix la
        sol·licitud.
      operationId: batch_delete_businesses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Proporciona `vendor_data_list`, `didit_internal_id_list` o
                `delete_all: true`. Ordre de prioritat si se'n transmeten
                diversos: `delete_all` > `vendor_data_list` >
                `didit_internal_id_list` (només s'utilitza el selector de màxima
                prioritat).
              properties:
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Els teus propis identificadors a eliminar, coincidits
                    exactament com es van enviar.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: UUID interns de Didit (`didit_internal_id`) per eliminar.
                delete_all:
                  type: boolean
                  default: false
                  description: >-
                    Si és `true`, elimina totes les empreses de l'aplicació. No
                    es pot combinar amb els selectors de llista.
            examples:
              Specific businesses:
                summary: Elimina per vendor_data
                value:
                  vendor_data_list:
                    - company-123
                    - company-456
              Specific internal IDs:
                summary: Elimina per didit_internal_id
                value:
                  didit_internal_id_list:
                    - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    - b2c3d4e5-f6a7-8901-bcde-f12345678901
              All businesses:
                summary: Esborra totes les empreses d'aquesta aplicació
                value:
                  delete_all: true
      responses:
        '200':
          description: Empreses suprimides. Retorna el nombre de files eliminades realment.
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: integer
                    description: >-
                      Nombre d'empreses eliminades (exclou els valors de
                      vendor_data que no han coincidit amb res).
              examples:
                Deleted some:
                  value:
                    deleted: 2
                Nothing matched:
                  value:
                    deleted: 0
        '400':
          description: >-
            No s'ha proporcionat cap selector (tots els camps
            `vendor_data_list`, `didit_internal_id_list` i `delete_all` manquen
            o estan buits). El cos d'error és una matriu JSON.
          content:
            application/json:
              examples:
                Missing selector:
                  value:
                    - >-
                      Provide vendor_data_list, didit_internal_id_list, or set
                      delete_all=true.
        '403':
          description: >-
            Clau d'API absent, no vàlida o revocada, o bé la clau no pot
            suprimir empreses per a aquesta aplicació. Una clau absent retorna
            `403`; una clau incorrecta, revocada o caducada retorna `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            No s'elimina res. `code` n'indica el motiu: `in_filed_report` quan
            la selecció inclou una empresa en un informe regulador finalitzat,
            `subject_deletion_in_progress` quan una altra sol·licitud encara
            està eliminant una de les empreses seleccionades. Repeteix la
            sol·licitud quan hagi acabat aquesta eliminació.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/InFiledReportError'
                  - $ref: '#/components/schemas/SubjectDeletionInProgressError'
        '429':
          description: >-
            S'ha superat el límit de freqüència; redueix el ritme de les
            sol·licituds i reintenta-ho després de l'interval indicat a
            `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: >-
        L'eliminació s'ha rebutjat perquè les dades seleccionades formen part
        d'un informe regulador finalitzat. No s'ha eliminat res. Elimina
        l'informe i després repeteix la sol·licitud.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Codi d'error estable per a una eliminació bloquejada per un informe
            normatiu finalitzat.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Informes que bloquegen la supressió d'una persona, empresa, cas o
            sessió.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transaccions que bloquegen l'eliminació d'una transacció, cadascuna
            amb els informes que la llisten.
    SubjectDeletionInProgressError:
      type: object
      description: >-
        Una altra sol·licitud encara està suprimint aquesta persona o empresa.
        Aquesta sol·licitud no ha suprimit res i es pot repetir un cop hagi
        finalitzat aquesta supressió; en repetir-la, se suprimirà allò que
        encara estigui seleccionat.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - subject_deletion_in_progress
          description: >-
            Codi d'error estable per a una persona o empresa que una altra
            sol·licitud encara està eliminant.
    FiledRegulatoryReport:
      type: object
      description: Un informe regulador finalitzat que impedeix l'eliminació sol·licitada.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID de l'informe.
        report_number:
          type: string
          description: Número d'informe mostrat a la Console (per exemple, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipus d'informe regulador.
        case_uuid:
          type: string
          format: uuid
          description: Cas al qual pertany l'informe.
    FiledReportTransaction:
      type: object
      description: >-
        Una transacció que no es pot suprimir perquè un informe regulador
        finalitzat la inclou.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID de transacció de Didit.
        transaction_id:
          type: string
          description: >-
            L'identificador de la transacció proporcionat quan es va crear la
            transacció.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Informes finalitzats que inclouen aquesta transacció.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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