> ## 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 création d'entreprise KYB : entité fournisseur

> Pré-créez des entités KYB dans Didit avant les sessions. Intégrez en masse depuis vos bases externes ou pour la surveillance des transactions.



Prompt de création d'entreprise
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Goal: Pre-create a Didit Business (KYB) entity by vendor_data before any KYB session runs.

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

Request body fields:
\- vendor_data (string, REQUIRED) — your unique identifier. Free-form string, NOT a UUID. Must be unique among non-deleted businesses for the app. Normalised lowercase + whitespace trim ("COMPANY-1" and "company-1" collide).
\- display_name (string, nullable) — friendly display name shown in Console (takes precedence over legal_name).
\- legal_name (string, nullable)
\- registration_number (string, nullable)
\- country_code (string, nullable) — country of incorporation, ISO 3166-1 alpha-2 (e.g. "GB", "US").
\- region (string, nullable) — ISO 3166-2 subdivision code.
\- status (enum) — "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorBusinessStatusChoices). Defaults to "ACTIVE".
\- metadata (object, nullable) — arbitrary JSON.

curl:
curl -X POST 'https://verification.didit.me/v3/businesses/create/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data": "company-456", "legal_name": "New Corp Ltd", "country_code": "US"}'

Response 201: full BusinessDetailItem (same shape as GET /v3/businesses/{vendor_data}/). Includes didit_internal_id (UUID), session_count=0, metadata, comments=[], created_at, updated_at. See /reference/data-models.

Failure modes (envelope {"detail": "..."} for auth):
\- 400 — validation errors keyed by field. Common cases:
\{ "vendor_data": ["A business with this vendor_data already exists."] }  // NOT idempotent — use PATCH /v3/businesses/{vendor_data}/ to update.
\{ "vendor_data": ["This field is required."] }
\{ "metadata": ["Metadata must be a JSON object."] }
\- 401 — missing/invalid x-api-key.
\- 403 — lacks create:businesses.
\- 429 — rate-limited.

Upsert pattern (NOT idempotent on vendor_data):
GET /v3/businesses/{vendor_data}/  → on 404, POST /v3/businesses/create/; on 200, PATCH /v3/businesses/{vendor_data}/.

Notes:
\- Registry-derived fields (legal_name, registration_number, country_code) can be seeded here but will be OVERWRITTEN by the first approved Business Verification (KYB) session's registry data.
\- last_activity_at is set at the moment of creation.

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

\</pre>



      
      

Coller dans

## Vue d'ensembleCrée explicitement une [entité Business](https://docs.didit.me/fr/entities/businesses/overview.md) avant l'exécution de toute session de Vérification d'entreprise (KYB).## Quand l'utiliser- **Pré-renseigner les métadonnées** (partenaire, niveau, identifiants internes) avant la première session de Vérification d'entreprise (KYB).
- **Migrer** depuis un autre prestataire KYB avec une liste d'entreprises existante.
- **Enregistrement limité aux transactions** : soumettez des transactions pour une entreprise que vous avez vérifiée par un processus hors ligne.## Remarques- `vendor_data` est obligatoire et unique par application. Les doublons renvoient une erreur de conflit ; utilisez [`PATCH /v3/businesses/{vendor_data}/`](https://docs.didit.me/fr/management-api/businesses/update) pour mettre à jour l'entreprise.
- Les champs issus du registre (`legal_name`, `registration_number`, `country_code`) peuvent être pré-renseignés, mais ils seront **écrasés** par les données du registre de la première session de Vérification d'entreprise (KYB) approuvée.
- Si `country_code` correspond à la liste des [pays dangereux](https://docs.didit.me/fr/entities/businesses/blocklist.md#pays-dangereux) de votre application, l'entreprise est créée avec le statut `BLOCKED`.
- Émet `business.data.updated`.## AutorisationsLe rôle doit accorder `create:businesses`.## Voir aussi- [Modèle de données des entreprises](https://docs.didit.me/fr/entities/businesses/data-model.md)
- [Liaison des données du fournisseur](https://docs.didit.me/fr/entities/vendor-data-linking.md)
- [Opérations sur les entreprises](https://docs.didit.me/fr/entities/businesses/operations.md)


## OpenAPI

````yaml fr/openapi-25.json POST /v3/businesses/create/
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/create/:
    post:
      tags:
        - Businesses
      summary: Créer une entreprise
      description: >-
        Pré-créez une [entreprise](/entities/businesses) *sans* session KYB.
        Tous les champs sont facultatifs, mais vous devez toujours envoyer
        `vendor_data` — sans cela, l'enregistrement ne peut pas être lié à des
        sessions ou des transactions. Lorsqu'il est fourni, `vendor_data` doit
        être unique parmi les entreprises non supprimées (correspondance exacte
        ; les conflits renvoient une erreur 400). Non idempotent.
      operationId: create_business
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                vendor_data:
                  type: string
                  nullable: true
                  description: >-
                    Votre identifiant unique pour cette entreprise (chaîne
                    libre, PAS un UUID). Facultatif mais fortement recommandé.
                    Lorsqu'il est fourni, il doit être unique parmi les
                    entreprises non supprimées de l'application ; mis en
                    correspondance exactement tel qu'envoyé.
                display_name:
                  type: string
                  nullable: true
                  maxLength: 255
                  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
                  maxLength: 255
                  description: Raison sociale officielle de l'entreprise.
                registration_number:
                  type: string
                  nullable: true
                  maxLength: 100
                  description: Numéro d'immatriculation ou de constitution de l'entreprise.
                country_code:
                  type: string
                  nullable: true
                  maxLength: 10
                  description: >-
                    Pays de constitution (ISO 3166-1 alpha-2, par ex. `GB`,
                    `US`).
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - FLAGGED
                    - BLOCKED
                  default: ACTIVE
                  description: >-
                    Statut de cycle de vie initial. La valeur par défaut est
                    `ACTIVE`.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    Objet JSON arbitraire que vous associez à l'entreprise. La
                    valeur par défaut est `{}`.
            examples:
              Basic:
                summary: Minimum recommandé
                value:
                  vendor_data: company-456
                  legal_name: New Corp Ltd
                  country_code: US
              Full:
                summary: Tous les champs
                value:
                  vendor_data: company-789
                  display_name: New Corp
                  legal_name: New Corp International Ltd
                  registration_number: '98765432'
                  country_code: DE
                  status: ACTIVE
                  metadata:
                    industry: fintech
                    tier: enterprise
      responses:
        '201':
          description: >-
            Entreprise créée. L'enregistrement complet de l'entreprise est
            renvoyé (même format que Get Business).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessDetailItem'
              examples:
                Created:
                  value:
                    didit_internal_id: a1b2c3d4-e5f6-4890-abcd-ef1234567890
                    vendor_data: company-456
                    display_name: null
                    legal_name: New Corp Ltd
                    registration_number: null
                    country_code: US
                    effective_name: New Corp Ltd
                    status: ACTIVE
                    session_count: 0
                    approved_count: 0
                    declined_count: 0
                    in_review_count: 0
                    features: {}
                    features_list: []
                    last_session_at: null
                    last_activity_at: '2026-03-15T10:30:00Z'
                    first_session_at: null
                    tags: []
                    created_at: '2026-03-15T10:30:00Z'
                    metadata: {}
                    updated_at: '2026-03-15T10:30:00Z'
        '400':
          description: >-
            Corps non valide — généralement un `vendor_data` en double, un
            `status` inconnu ou des `metadata` malformées.
          content:
            application/json:
              examples:
                Duplicate:
                  value:
                    vendor_data:
                      - A business with this vendor_data already exists.
                Bad status:
                  value:
                    status:
                      - >-
                        Invalid status. Valid options are: ACTIVE, FLAGGED,
                        BLOCKED
                Bad metadata:
                  value:
                    metadata:
                      - Metadata must be a JSON object.
        '403':
          description: >-
            Clé API manquante, invalide ou révoquée, ou la clé ne peut pas créer
            d'entreprises pour cette application. Une clé manquante renvoie
            `403` ; une clé erronée, révoquée ou expirée renvoie `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '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 POST 'https://verification.didit.me/v3/businesses/create/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"vendor_data": "company-456", "legal_name": "New Corp Ltd", "country_code": "US"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.create(
                vendor_data="company-456",
                legal_name="New Corp Ltd",
                country_code="US",
            )
            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.create({
              vendor_data: "company-456",
              legal_name: "New Corp Ltd",
              country_code: "US",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Create(ctx, didit.BusinessesCreateParams{\n\tVendorData:  didit.String(\"company-456\"),\n\tLegalName:   didit.String(\"New Corp Ltd\"),\n\tCountryCode: didit.String(\"US\"),\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.BusinessesCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.businesses().create(BusinessesCreateParams.builder()
                    .vendorData("company-456")
                    .legalName("New Corp Ltd")
                    .countryCode("US")
                    .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->create([
                'vendor_data' => 'company-456',
                'legal_name' => 'New Corp Ltd',
                'country_code' => 'US',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.businesses.create(
              vendor_data: "company-456",
              legal_name: "New Corp Ltd",
              country_code: "US"
            )
            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.CreateAsync(new
            BusinessesCreateParams

            {
                VendorData = "company-456",
                LegalName = "New Corp Ltd",
                CountryCode = "US",
            });

            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.