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

# Soumettre les personnes clés KYB via l'API

> Déclarez les personnes clés préparées d'une session KYB avec Didit et lancez la vérification KYC de chaque partie concernée.



## OpenAPI

````yaml fr/openapi-25.json POST /v3/session/{sessionId}/kyb/parties/submit/
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/session/{sessionId}/kyb/parties/submit/:
    post:
      tags:
        - Sessions
      summary: Soumettre les brouillons des parties du KYB
      description: >-
        Déclarer les brouillons enregistrés comme personnes clés de
        l'entreprise. Il s'agit de l'étape hébergée Personnes clés sous votre
        clé API : Didit détermine à partir des paramètres de rôle et des seuils
        d'actionnariat du workflow quelles parties doivent être vérifiées, crée
        une session de KYC individuel (ou une sous-session KYB pour un
        propriétaire personne morale) pour chacune d'elles, envoie les e-mails
        demandés par le workflow et fait avancer la session. Chaque session
        enfant est facturée comme dans le flux hébergé. Les brouillons sont
        consommés. Répéter l'appel après une soumission réussie ne change rien
        et renvoie `200` avec `already_submitted: true` et les parties qui
        existent déjà. La session doit se trouver à l'étape Personnes clés.
        Envoyez l'`kyc_session_url` de chaque personne à celle-ci, ou
        intégrez-la. Nécessite `write:businesses`.
      operationId: post_v3_session_kyb_parties_submit
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID de la session de Vérification d'entreprise (KYB). Il doit
            appartenir à l'application de la clé API.
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: node_id
          in: query
          required: false
          description: >-
            Nœud de workflow de l'étape KYB. Nécessaire uniquement lorsque le
            workflow comporte plus d'un nœud KYB ; par défaut, Didit utilise le
            nœud propre à la session.
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                locale:
                  type: string
                  maxLength: 10
                  description: >-
                    Locale utilisée pour traduire la réponse de l'étape vers
                    laquelle la session avance.
            example:
              locale: es
      responses:
        '200':
          description: Parties déclarées (ou déjà déclarées).
          content:
            application/json:
              schema:
                type: object
                properties:
                  valid:
                    type: boolean
                  next_step:
                    type: string
                    nullable: true
                    description: Étape où se trouve la session.
                  status:
                    type: string
                    description: Statut de la session d'entreprise.
                  advanced:
                    type: boolean
                    description: >-
                      `true` lorsque cet appel a déclaré les parties et fait
                      avancer la session.
                  already_submitted:
                    type: boolean
                    description: >-
                      `true` lorsque les parties avaient été déclarées par un
                      appel antérieur.
                  kyb_key_people_status:
                    type: string
                  parties:
                    type: array
                    items:
                      $ref: '#/components/schemas/KYBKeyPeopleParty'
              example:
                valid: true
                next_step: FINISHED
                status: In Progress
                advanced: true
                already_submitted: false
                kyb_key_people_status: In Progress
                parties: []
        '401':
          description: >-
            La clé API restreinte a expiré. C'est le seul cas qui renvoie `401`
            : une clé manquante, invalide ou révoquée renvoie `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Expired key:
                  summary: La date d'expiration de la clé est dépassée
                  value:
                    detail: This API key has expired.
        '402':
          description: >-
            L'organisation n'a plus de crédit pour les sessions de vérification
            enfants.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              example:
                detail: Insufficient credits.
        '403':
          description: >-
            Échec d'authentification ou d'autorisation. Une clé manquante
            renvoie `403`, tout comme la clé d'une autre application, une clé
            restreinte ne disposant pas de l'autorisation requise par cet
            endpoint, ou une requête provenant de l'extérieur de la liste
            d'adresses IP autorisées de la clé ; une clé incorrecte, révoquée ou
            expirée renvoie `401`. Distinguez-les grâce au champ `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Missing or invalid credentials:
                  summary: Aucun en-tête x-api-key, ou la validation de la clé a échoué
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: >-
                    Une clé valide qui appartient à une application différente
                    de la session
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'La clé restreinte ne dispose pas de decisions: write'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: >-
                    Requête provenant de l'extérieur de la liste d'adresses IP
                    autorisées de la clé
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            La session n'existe pas, a été supprimée, appartient à une autre
            application ou se trouve en dehors des limites d'une clé restreinte
            ; aucun détail ne permet de les distinguer.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              example:
                detail: Session not found.
        '409':
          description: >-
            `kyb_no_party_drafts` : il n'y a rien à soumettre.
            `kyb_parties_already_submitted` : des brouillons ont été ajoutés
            après la déclaration des parties. `kyb_step_mismatch` : la session
            n'est pas à l'étape Personnes clés (`next_step` indique son étape).
            `kyb_session_not_writable` : la session est terminée.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
                  code:
                    type: string
                  next_step:
                    type: string
              example:
                detail: There are no draft parties to submit.
                code: kyb_no_party_drafts
        '429':
          description: >-
            Limite de débit dépassée : 300 requêtes d'écriture (POST, PATCH,
            DELETE) par minute par clé API. Attendez `Retry-After` secondes
            avant de réessayer ; les en-têtes `X-RateLimit-*` indiquent le
            budget.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Rate limited:
                  summary: Budget épuisé pour la minute en cours
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: Secondes à attendre avant de réessayer.
              schema:
                type: integer
                minimum: 1
                example: 30
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.submit_kyb_parties(
                "33333333-4444-5555-6666-777777777777",
                locale="es",
            )
            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.sessions.submitKybParties("33333333-4444-5555-6666-777777777777",
            {
              locale: "es",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.SubmitKYBParties(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsSubmitKYBPartiesParams{\n\tLocale: didit.String(\"es\"),\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.SessionsSubmitKybPartiesParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().submitKybParties("33333333-4444-5555-6666-777777777777",
            SessionsSubmitKybPartiesParams.builder()
                    .locale("es")
                    .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->sessions->submitKybParties('33333333-4444-5555-6666-777777777777',
            [
                'locale' => 'es',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.submit_kyb_parties(
              "33333333-4444-5555-6666-777777777777",
              locale: "es"
            )
            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.Sessions.SubmitKybPartiesAsync("33333333-4444-5555-6666-777777777777",
            new SessionsSubmitKybPartiesParams

            {
                Locale = "es",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    KYBKeyPeopleParty:
      type: object
      description: >-
        Une personne clé d'une session de Vérification d'entreprise (KYB), avec
        sa vérification enfant. La même partie apparaît dans
        `key_people_checks[].submitted.parties[]` de la décision de session
        d'entreprise.
      required:
        - uuid
        - entity_type
        - source
        - name
        - is_active
        - is_skipped
        - requires_verification
        - roles
        - kyc_session_deleted
        - kyb_sub_session_deleted
      properties:
        uuid:
          type: string
          format: uuid
          description: Identifiant de la partie.
        entity_type:
          type: string
          enum:
            - person
            - company
          description: Indique si la partie est un particulier ou une entreprise.
        source:
          type: string
          enum:
            - REGISTRY
            - USER
          description: >-
            `REGISTRY` : provient du registre des sociétés. `USER` : saisi dans
            l'écran Key People.
        name:
          type: string
          description: Nom d'affichage de la partie.
        first_name:
          type: string
          nullable: true
          description: Prénom (personnes physiques).
        last_name:
          type: string
          nullable: true
          description: Nom de famille (personnes physiques).
        company_name:
          type: string
          nullable: true
          description: Nom de l'entreprise (parties de type entreprise).
        registration_number:
          type: string
          nullable: true
          description: >-
            Numéro d'immatriculation de l'entreprise (parties de type
            entreprise).
        email:
          type: string
          format: email
          nullable: true
          description: E-mail auquel le lien de vérification est envoyé.
        nationality:
          type: string
          nullable: true
          description: >-
            Nationalité pour les personnes physiques, pays de constitution pour
            les entreprises.
        phone_number:
          type: string
          nullable: true
          description: Numéro de téléphone recueilli pour la partie.
        date_of_birth:
          type: string
          format: date
          nullable: true
          description: Date de naissance (personnes).
        position:
          type: string
          nullable: true
          description: Intitulé de poste en texte libre (personnes physiques).
        custom_fields:
          type: object
          additionalProperties: true
          description: >-
            Champs personnalisés définis par le workflow collectés pour la
            partie, indexés par clé de champ.
        is_active:
          type: boolean
          description: Indique si la partie est active.
        is_skipped:
          type: boolean
          description: >-
            Indique si la partie est exemptée de vérification. Une régénération
            l'efface.
        requires_verification:
          type: boolean
          description: >-
            Indique si les règles de rôle et d'actionnariat exigent une
            vérification pour cette partie.
        roles:
          type: array
          description: Rôles que la partie détient dans l'entreprise.
          items:
            type: object
            required:
              - role
              - ownership_percent
              - voting_percent
            properties:
              role:
                type: string
                enum:
                  - director
                  - non_executive_director
                  - secretary
                  - chairman
                  - ubo
                  - shareholder
                  - representative
                  - founder
                  - legal_advisor
                  - authorized_signatory
                  - trustee
                  - beneficiary
                  - settlor
                  - protector
                  - company_officer
                  - investor
                  - other
                description: Code du rôle.
              ownership_percent:
                type: number
                nullable: true
                description: Pourcentage de détention pour ce rôle, lorsqu'il est connu.
              voting_percent:
                type: number
                nullable: true
                description: >-
                  Pourcentage de droits de vote pour ce rôle, lorsqu'il est
                  connu.
        kyc_session_id:
          type: string
          format: uuid
          nullable: true
          description: Session KYC individuelle enfant (personnes).
        kyc_session_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
            - null
          description: >-
            Statut de la session KYC enfant. Une session supprimée conserve le
            statut qu'elle avait au moment de sa suppression.
        kyc_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Lien hébergé de la session KYC enfant. `null` lorsqu'il n'y en a pas
            ou qu'elle a été supprimée, ainsi que pour une clé API restreinte
            sans `sessions: write`.
        kyc_session_deleted:
          type: boolean
          description: >-
            La session KYC enfant a été supprimée, elle ne pourra donc jamais
            aboutir.
        kyb_sub_session_id:
          type: string
          format: uuid
          nullable: true
          description: Session KYB enfant (parties morales).
        kyb_sub_session_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
            - null
          description: Statut de la session KYB enfant.
        kyb_sub_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Lien hébergé de la session KYB enfant, avec les mêmes règles de
            valeur `null` que `kyc_session_url`.
        kyb_sub_session_deleted:
          type: boolean
          description: Équivalent côté entreprise de `kyc_session_deleted`.
        verification_workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: Type de workflow exécuté par la session enfant.
        verification_workflow_id:
          type: string
          format: uuid
          nullable: true
          description: Workflow exécuté par la session enfant.
        verification_workflow_label:
          type: string
          nullable: true
          description: Libellé de ce workflow.
        verification_workflow_features:
          type: array
          nullable: true
          description: >-
            Fonctionnalités du workflow de la session enfant avec leur statut
            actuel.
          items:
            type: object
            required:
              - feature
              - status
            properties:
              feature:
                type: string
                description: >-
                  Code de la fonctionnalité, par exemple `ID_VERIFICATION` ou
                  `LIVENESS`.
              status:
                type: string
                description: >-
                  Statut de la fonctionnalité, `Not Finished` jusqu'à son
                  exécution.
        didit_internal_id:
          type: string
          format: uuid
          nullable: true
          description: Identifiant Didit de la personne vérifiée, une fois connue.
  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.