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

# Mettre à jour une entreprise : API KYB fournisseur

> Didit : mettez à jour le nom d'affichage, les métadonnées et les tags d'une entreprise KYB. Les champs d'identité du registre restent immuables.



Prompt de mise à jour de l'entreprise
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Goal: Partial-update a Didit Business (KYB) entity by vendor_data.

Endpoint: PATCH https://verification.didit.me/v3/businesses/{vendor_data}/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Path param:
\- vendor_data (string, REQUIRED) — free-form string, NOT a UUID. URL-encode.

Request body (PARTIAL — only included fields are touched; counters and session history are left alone):
\- display_name (string, nullable)
\- legal_name (string, nullable)
\- registration_number (string, nullable)
\- country_code (string, nullable) — ISO 3166-1 alpha-2.
\- region (string, nullable) — ISO 3166-2.
\- status (enum) — "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorBusinessStatusChoices). Setting "BLOCKED" auto-adds vendor_data to the system blocklist.
\- metadata (object, nullable) — REPLACES existing metadata wholesale; merge client-side if you only want to add keys.
\- reason (string, optional, max 1000): why the status changed. Recorded on the status-change entry in the company's Activity in the Business Console, only when this update actually changes status. Webhooks do not carry it.

curl:
curl -X PATCH 'https://verification.didit.me/v3/businesses/company-123/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"display_name": "Acme", "metadata": {"tier": "enterprise"}}'

Response 200: full updated BusinessDetailItem (same shape as GET). See /reference/data-models.

Side effects:
\- Every edit is recorded in the company's activity (actor derived from the API key): a status change with reason, and a profile update when display_name, legal_name, registration_number, country_code or metadata change.
\- last_activity_at bumped to now().
\- Re-sending an unchanged body is safe.

Failure modes:
\- 400 — validation. Common: { "status": ["Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"] }, { "metadata": ["Metadata must be a JSON object."] }
\{ "reason": ["Ensure this field has no more than 1000 characters."] }
\- 401 — missing/invalid x-api-key.
\- 403: a scoped API key without businesses write. { "detail": "This API key has no write access to companies." }
\- 404 — vendor_data not found.
\- 429 — rate-limited.

Notes:
\- vendor_data in the URL cannot be changed via this endpoint.
\- For status-only flips, prefer the dedicated PATCH /v3/businesses/{vendor_data}/update-status/.
\- Overriding registry-derived fields is allowed but flagged in the audit log.

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

\</pre>



      
      

Coller dans

## Vue d'ensembleMet à jour les champs modifiables d'une [entité Business](https://docs.didit.me/fr/entities/businesses/overview.md). Les champs renseignés à partir de recherches dans les registres (`legal_name`, `registration_number`, `country_code`) deviennent en lecture seule après la première session de Vérification d'entreprise (KYB) approuvée.## Quand l'utiliser- **Renommer** : définissez un meilleur `display_name` pour les vues internes.
- **Mettre à jour les métadonnées** : faites passer une entreprise d'un niveau interne à un autre, enregistrez une note interne, modifiez les étiquettes.
- **Remplacer les données du registre** (avec prudence) : les remplacements sont acceptés mais signalés dans le [journal d'audit](https://docs.didit.me/fr/console/audit-logs.md).## Remarques- `vendor_data` dans l'URL ne peut pas être modifié via cet endpoint.
- Émet un webhook `business.data.updated` avec un tableau `changed_fields`.
- Chaque modification est enregistrée dans l'**Activité** de l'entreprise dans la Business Console. Un changement de `status` est enregistré avec le `reason` facultatif (jusqu'à 1000 caractères), et un changement de `display_name`, `legal_name`, `registration_number`, `country_code` ou `metadata` est enregistré comme une mise à jour de profil. Le webhook `business.status.updated` ne transporte pas `reason`.## AutorisationsLa clé secrète principale et les [clés API](https://docs.didit.me/fr/console/api-keys.md) à accès complet peuvent toujours appeler cet endpoint.
Une clé à accès personnalisé doit disposer de l'autorisation d'écriture **Entreprises** (`businesses`).
Une clé limitée à certains workflows ou à certaines sessions approuvées ne peut pas accéder à cet endpoint.Les [rôles et autorisations](https://docs.didit.me/fr/console/roles-permissions.md) de la Console déterminent ce qu'un membre de l'équipe peut faire dans la Console. Ils ne sont pas évalués pour les requêtes effectuées avec une clé API.## Liens connexes- [Opérations sur les entreprises](https://docs.didit.me/fr/entities/businesses/operations.md)
- [Modèle de données](https://docs.didit.me/fr/entities/businesses/data-model.md)
- [Mettre à jour le statut](https://docs.didit.me/fr/management-api/businesses/update-status.md)


## OpenAPI

````yaml fr/openapi-25.json PATCH /v3/businesses/{vendor_data}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/businesses/{vendor_data}/:
    patch:
      tags:
        - Businesses
      summary: Mettre à jour l'entreprise
      description: >-
        Mise à jour partielle d'une entreprise : `display_name`, `legal_name`,
        `registration_number`, `country_code`, `status`, `metadata`. `metadata`
        est entièrement remplacé. Définir `status` sur `BLOCKED` ajoute le
        `vendor_data` à la liste de blocage du système ; quitter l'état
        `BLOCKED` retire cette entrée. Chaque modification est enregistrée dans
        l'activité de l'entreprise : un changement de statut avec le `reason`
        facultatif, et une modification de `display_name`, `legal_name`,
        `registration_number`, `country_code` ou `metadata` en tant que mise à
        jour du profil.
      operationId: update_business
      parameters:
        - name: vendor_data
          in: path
          required: true
          schema:
            type: string
          description: >-
            Votre identifiant unique pour l'entreprise (chaîne libre, PAS un
            UUID).
          example: company-123
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Corps de la requête de mise à jour partielle. Ne fournissez que
                les champs que vous souhaitez modifier.
              properties:
                display_name:
                  type: string
                  nullable: true
                  description: >-
                    Nom d'affichage convivial affiché dans la console (prend le
                    pas sur `legal_name` pour l'affichage de l'interface
                    utilisateur).
                legal_name:
                  type: string
                  nullable: true
                  description: >-
                    Raison sociale officielle issue du registre ou saisie
                    manuelle.
                registration_number:
                  type: string
                  nullable: true
                  description: Numéro d'immatriculation ou de constitution de l'entreprise.
                country_code:
                  type: string
                  nullable: true
                  description: >-
                    Pays de constitution (ISO 3166-1 alpha-2, par ex. `GB`,
                    `US`).
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - FLAGGED
                    - BLOCKED
                  description: >-
                    Statut du cycle de vie de l'entreprise. Définir `BLOCKED`
                    ajoute automatiquement le `vendor_data` à la liste de
                    blocage du système ; quitter `BLOCKED` supprime cette entrée
                    de la liste de blocage.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    Objet JSON arbitraire que vous associez à l'entreprise.
                    **Remplace complètement** les métadonnées existantes lors de
                    la mise à jour — fusionnez côté client si vous souhaitez
                    uniquement ajouter des clés.
                reason:
                  type: string
                  nullable: true
                  maxLength: 1000
                  description: >-
                    Raison pour laquelle le statut a changé. Enregistrée sur
                    l'entrée de changement de statut dans **Activité** de
                    l'entreprise au sein de la Business Console, uniquement
                    lorsque le statut change réellement. Les webhooks ne la
                    transmettent pas.
            examples:
              Update name:
                summary: Mettre à jour le nom d'affichage
                value:
                  display_name: Acme Corp
              Flag for review:
                summary: Basculer le statut
                value:
                  status: FLAGGED
              Add metadata:
                summary: Remplacer le JSON des métadonnées
                value:
                  metadata:
                    industry: fintech
                    risk_level: low
              Fix registry data:
                summary: Champs extraits corrects
                value:
                  legal_name: Acme Trading International Ltd
                  registration_number: '12345678'
                  country_code: GB
              Flag with reason:
                summary: Signaler l'entreprise et enregistrer le motif
                value:
                  status: FLAGGED
                  reason: Ownership structure under review
      responses:
        '200':
          description: >-
            Entreprise mise à jour. L'enregistrement complet et mis à jour de
            l'entreprise est renvoyé.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessDetailItem'
              examples:
                Updated:
                  value:
                    didit_internal_id: a1b2c3d4-e5f6-4890-abcd-ef1234567890
                    vendor_data: company-123
                    display_name: Acme Corp
                    legal_name: Acme Trading Ltd
                    registration_number: '12345678'
                    country_code: GB
                    effective_name: Acme Corp
                    status: FLAGGED
                    session_count: 2
                    approved_count: 1
                    declined_count: 0
                    in_review_count: 1
                    features:
                      KYB: Approved
                    features_list:
                      - feature: KYB
                        status: Approved
                    last_session_at: '2026-03-15T10:30:00Z'
                    last_activity_at: '2026-03-15T10:30:00Z'
                    first_session_at: '2026-01-10T08:00:00Z'
                    tags:
                      - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                        name: VIP
                        color: '#2567FF'
                    created_at: '2026-01-10T08:00:00Z'
                    metadata:
                      industry: fintech
                      risk_level: low
                    updated_at: '2026-03-15T10:30:00Z'
        '400':
          description: >-
            Corps non valide : généralement un `status` inconnu, des `metadata`
            malformées ou une `reason` de plus de 1000 caractères.
          content:
            application/json:
              examples:
                Bad status:
                  value:
                    status:
                      - >-
                        Invalid status. Valid options are: ACTIVE, FLAGGED,
                        BLOCKED
                Bad metadata:
                  value:
                    metadata:
                      - Metadata must be a JSON object.
                Reason too long:
                  value:
                    reason:
                      - Ensure this field has no more than 1000 characters.
        '403':
          description: >-
            Clé API manquante, invalide ou révoquée, ou la clé ne peut pas
            mettre à jour d'entreprises pour cette application. Une clé
            manquante renvoie `403` ; une clé incorrecte, révoquée ou expirée
            renvoie `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Aucune entreprise (non supprimée) avec le `vendor_data` fourni
            n'existe pour cette application.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Limite de débit dépassée ; réduisez la cadence et réessayez après
            l'intervalle indiqué dans `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 PATCH
            'https://verification.didit.me/v3/businesses/company-123/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"display_name": "Acme Corp", "status": "FLAGGED"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.update(
                "company-123",
                display_name="Acme Corp",
            )
            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.update("company-123", {
              display_name: "Acme Corp",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Update(ctx, \"company-123\", didit.BusinessesUpdateParams{\n\tDisplayName: didit.String(\"Acme Corp\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.BusinessesUpdateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result = client.businesses().update("company-123",
            BusinessesUpdateParams.builder()
                    .displayName("Acme Corp")
                    .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->update('company-123', [
                'display_name' => 'Acme Corp',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.businesses.update(
              "company-123",
              display_name: "Acme Corp"
            )
            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.UpdateAsync("company-123", new
            BusinessesUpdateParams

            {
                DisplayName = "Acme Corp",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    BusinessDetailItem:
      type: object
      description: >-
        Détails complets de l'entreprise. Étend BusinessListItem avec
        métadonnées et updated_at.
      allOf:
        - $ref: '#/components/schemas/BusinessListItem'
        - type: object
          properties:
            metadata:
              type: object
              description: >-
                JSON de métadonnées personnalisées que vous avez associé à cette
                entreprise. La valeur par défaut est `{}`.
            updated_at:
              type: string
              format: date-time
    BusinessListItem:
      type: object
      description: Une entreprise vérifiée.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: UUID interne stable de Didit pour cette entreprise.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Votre identifiant unique pour cette entreprise (transmis lors de la
            création des sessions). Peut être nul si aucun identifiant
            fournisseur n'a été fourni.
        display_name:
          type: string
          nullable: true
          description: Nom d'affichage personnalisé défini par vous
        legal_name:
          type: string
          nullable: true
          description: Raison sociale officielle issue du registre ou saisie manuelle
        registration_number:
          type: string
          nullable: true
          description: Numéro d'immatriculation ou de constitution de l'entreprise
        country_code:
          type: string
          nullable: true
          description: Pays de constitution (ISO 3166-1 alpha-2, par ex. `GB`, `US`).
        effective_name:
          type: string
          nullable: true
          description: >-
            Meilleur nom disponible : display_name s'il est défini, sinon
            legal_name
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            Statut de cycle de vie de l'enregistrement d'entreprise (PAS un
            statut de session). `ACTIVE` est la valeur par défaut, `FLAGGED` le
            signale pour un examen manuel, `BLOCKED` empêche de nouvelles
            sessions pour ce `vendor_data`.
        session_count:
          type: integer
          description: Nombre total de sessions de vérification pour cette entreprise
        approved_count:
          type: integer
          description: Nombre de sessions approuvées
        declined_count:
          type: integer
          description: Nombre de sessions refusées
        in_review_count:
          type: integer
          description: Nombre de sessions en cours d'examen
        features:
          type: object
          description: "Statut agrégé par fonctionnalité sur l'ensemble des sessions KYB de cette entreprise. Actuellement, la seule clé est `KYB` (le statut de vérification de l'entreprise au registre). Valeurs possibles\_: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub Requested`."
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            Mêmes données que `features`, sous la forme d'un tableau ordonné
            d'objets `{feature, status}`.
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: Horodatage de la session la plus récente
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: Horodatage de la première session
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Horodatage de l'activité la plus récente (changement de statut, mise
            à jour de la session, etc.)
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: Tags attribués à cette entreprise
        created_at:
          type: string
          format: date-time
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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