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

# Régénérer une session KYC pour les personnes clés (API)

> Créez une nouvelle session KYC pour une personne clé KYB dont la session a été supprimée ou expirée, et envoyez-lui un nouveau lien par e-mail avec Didit.



Prompt de l'API pour régénérer une session KYC des personnes clés
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Give a Key People party of a Didit Business Verification (KYB) session a new individual KYC session through the API.

Endpoint:
POST https://verification.didit.me/v3/session/{session_id}/kyb/parties/{party_uuid}/regenerate/
(no request body)

Authentication:
Send my Didit API key in the x-api-key header. A scoped key needs decisions: write.

Goal:
\- Re-verify a person (UBO, director, other key person) whose individual KYC session was deleted, or expired before the person started it. Neither link lets the person complete verification. An expired child can cause the business session to become Declined; regenerate the party to issue a fresh link.

Behavior:
\- {session_id} is the parent business session; {party_uuid} is key_people_checks[].submitted.parties[].uuid from its decision and must belong to that session.
\- Works when the party's KYC session was deleted (kyc_session_deleted: true) or expired before the person started it. A session still in progress or one that ended in another status (Approved, Declined, In Review, Abandoned...) returns 409 unless it was deleted. A party that never had one or a company party always returns 409.
\- Deleted sessions qualify even if the person had already started or finished verification. Imported sessions do not qualify through expiry; they must have been deleted.
\- Didit creates a new hosted KYC session for the person, with the workflow the party was verified with (its latest published version) or, when that is no longer known, the workflow my Key People settings assign to the person's role. The new link lasts that KYC workflow's session expiration time, not the business session's. Its vendor_data is kyb-party-PARTY_UUID.
\- Didit emails the verification link to the party's email, when there is one.
\- is_skipped is cleared, so the Key People check waits on the new session.
\- The Key People check and the business session status are recomputed at once.
\- A data.updated webhook is sent for the business session with trigger "console_key_people_regenerate".
\- To exempt the party instead of re-verifying them, use PATCH /v3/session/{session_id}/kyb/parties/{party_uuid}/ with {"is_skipped": true}.

Example call:
curl -X POST "https://verification.didit.me/v3/session/33333333-4444-5555-6666-777777777777/kyb/parties/0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41/regenerate/" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response (the updated party):
\- kyc_session_id: the new KYC session.
\- kyc_session_url: its hosted link, to share yourself if the party has no email. A scoped key without sessions: write receives it as null.
\- kyc_session_status (Not Started), kyc_session_deleted (false), is_skipped (false).

Failure modes:
\- 401: the API key has expired.
\- 403: missing key (a wrong, revoked or expired key gets 401), a key of another application, a scoped key without decisions: write, or a request from outside the key's IP allowlist.
\- 404: the session does not exist, was deleted, or is outside a scoped key's limits; no party has this UUID; or the party belongs to another session.
\- 409 with code kyb_party_kyc_session_not_deleted: no eligible KYC session to replace. A person qualifies only when their session was deleted or a non-imported session expired before the person started it. All other sessions, a party that never had one, and company parties are rejected.

Side effects: creates a KYC session, may send an email to the party, recomputes the business session status and sends a data.updated webhook.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Coller dans

Utilisez ce prompt lorsque le lien précédent ne fonctionne plus : la session a été supprimée, ou elle a expiré avant que la personne ne la démarre. Les sessions supprimées sont éligibles même si la personne avait déjà commencé ou terminé la vérification. Les sessions importées ne sont pas éligibles en cas d'expiration ; elles doivent avoir été supprimées. Une session qui n'a pas été supprimée et que la personne avait déjà commencée n'est pas éligible en cas d'expiration.La nouvelle session est liée à la même partie, de sorte que son résultat est pris en compte dans la vérification des personnes clés comme l'aurait été celui de la session d'origine. Son lien reste valide pendant la durée d'expiration de la session du workflow KYC qu'elle exécute (de 1 heure à 4 semaines), et non pendant celle de la session d'entreprise. Consultez la partie et ses sessions enfants dans la [décision de session d'entreprise](https://docs.didit.me/fr/business-verification/response-schema.md#key_people_checks). Si la personne ne doit pas être vérifiée du tout, [ignorez la partie](https://docs.didit.me/fr/sessions-api/update-data.md#ignorer-une-partie-des-personnes-clés) à la place. Voir [Personnes clés](https://docs.didit.me/fr/business-verification/key-people.md) pour savoir comment les parties et leurs vérifications fonctionnent.


## OpenAPI

````yaml fr/openapi-25.json POST /v3/session/{sessionId}/kyb/parties/{partyUuid}/regenerate/
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/{partyUuid}/regenerate/:
    post:
      tags:
        - Sessions
      summary: Régénérer la session KYC d'une personne clé
      description: >-
        Attribuer à une partie de type personnes clés d'une session de
        vérification d'entreprise (KYB) une nouvelle session KYC individuelle
        après la suppression de la précédente ou son expiration avant que la
        personne ne l'ait commencée, afin que le contrôle des personnes clés
        puisse à nouveau se terminer ; n'envoyez aucun corps de requête. Cela
        fonctionne lorsque la session KYC de la partie a été supprimée
        (`kyc_session_deleted: true`) ou a expiré avant que la personne ne l'ait
        commencée (`Expired`, jamais commencée). Une session encore en cours ou
        qui s'est terminée sous tout autre statut (`Approved`, `Declined`, `In
        Review`, `Abandoned`, ...) renvoie `409`, sauf si elle a été supprimée.
        Une partie qui n'en a jamais eu ou une partie de type entreprise renvoie
        toujours `409`. Didit crée une nouvelle session KYC hébergée avec le
        workflow avec lequel la partie a été vérifiée (sa dernière version
        publiée) ou, lorsqu'il n'est plus connu, le workflow que vos paramètres
        de personnes clés attribuent au rôle de la partie, afin que son lien
        reste valide pendant la durée d'expiration de session de ce workflow KYC
        ; il envoie le lien par e-mail à la partie lorsqu'une adresse e-mail est
        enregistrée, efface `is_skipped` et recalcule le contrôle des personnes
        clés ainsi que le statut de la session d'entreprise. Il envoie ensuite
        un [webhook](https://docs.didit.me/fr/integration/webhooks)
        `data.updated` pour la session d'entreprise avec le déclencheur
        `console_key_people_regenerate` ; pour exempter la partie à la place,
        utilisez `PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/`. Une
        clé API restreinte nécessite `decisions: write`, et sans `sessions:
        write`, elle reçoit `kyc_session_url` avec la valeur `null`. Les
        sessions supprimées sont éligibles même si la personne avait déjà
        commencé ou terminé la vérification. Les sessions importées ne sont pas
        éligibles par expiration ; elles doivent avoir été supprimées.
      operationId: post_v3_session_kyb_party_regenerate
      parameters:
        - name: sessionId
          in: path
          required: true
          description: UUID de la session parente de Vérification d'entreprise (KYB).
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: partyUuid
          in: path
          required: true
          description: >-
            UUID de la partie « personnes clés »
            (`key_people_checks[].submitted.parties[].uuid` sur la décision de
            la session d'entreprise). Doit appartenir à la session référencée
            par `sessionId`.
          schema:
            type: string
            format: uuid
            example: 0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41
      responses:
        '200':
          description: >-
            Nouvelle session KYC créée. Renvoie la partie mise à jour avec sa
            nouvelle session enfant, qui expire après le délai d'expiration de
            session de son workflow KYC.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KYBKeyPeopleParty'
              example:
                uuid: 0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41
                entity_type: person
                source: USER
                name: Jane Smith
                first_name: Jane
                last_name: Smith
                company_name: null
                registration_number: null
                email: user@example.com
                nationality: GB
                phone_number: null
                date_of_birth: '1980-05-04'
                position: Director
                custom_fields: {}
                is_active: true
                is_skipped: false
                requires_verification: true
                roles:
                  - role: director
                    ownership_percent: null
                    voting_percent: null
                kyc_session_id: 55555555-6666-7777-8888-999999999999
                kyc_session_status: Not Started
                kyc_session_url: https://verify.didit.me/session/abc123def456
                kyc_session_deleted: false
                kyb_sub_session_id: null
                kyb_sub_session_status: null
                kyb_sub_session_url: null
                kyb_sub_session_deleted: false
                verification_workflow_type: kyc
                verification_workflow_id: 12121212-3434-5656-7878-909090909090
                verification_workflow_label: Key People KYC
                verification_workflow_features:
                  - feature: ID_VERIFICATION
                    status: Not Finished
                  - feature: LIVENESS
                    status: Not Finished
                  - feature: AML
                    status: Not Finished
                didit_internal_id: null
        '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.
        '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 ou se trouve en dehors des
            limites d'une clé restreinte ; aucune partie avec cet UUID n'existe
            dans votre application ; ou la partie appartient à une autre
            session. Chaque cas possède son propre `detail`. La recherche de
            session s'exécute avant la vérification des identifiants, donc un
            `sessionId` inconnu renvoie `404` même sans clé valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Unknown session:
                  summary: Aucune session avec cet ID n'existe, ou elle a été supprimée
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    La session se trouve en dehors des limites de workflow ou
                    réservées aux sessions approuvées d'une clé restreinte
                  value:
                    detail: Session not found.
                Unknown party:
                  summary: Aucune partie avec cet UUID dans votre application
                  value:
                    detail: No BusinessParty matches the given query.
                Party of another session:
                  summary: partyUuid existe mais appartient à une session différente
                  value:
                    detail: Party does not belong to the given session.
        '409':
          description: "La partie n'a aucune session KYC éligible à remplacer. Sauf si elle a été supprimée, une session toujours en cours ou terminée avec un autre statut (`Approved`, `Declined`, `In Review`, `Abandoned`, ...) ne peut pas être régénérée. Une partie qui n'en a jamais eu ou une partie représentant une entreprise renvoie également `409`. Une session éligible a été supprimée ou a expiré avant que la personne ne la commence. Les sessions supprimées restent éligibles même si la personne avait déjà commencé ou terminé la vérification. Les sessions importées ne sont pas éligibles par expiration\_; elles doivent avoir été supprimées. Créez une branche selon `code`."
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                  - code
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
                  code:
                    type: string
                    enum:
                      - kyb_party_kyc_session_not_deleted
                    description: Code d'erreur stable lisible par machine.
              example:
                detail: >-
                  This party's KYC session is still live (it has neither been
                  deleted nor expired without starting), so it cannot be
                  regenerated.
                code: kyb_party_kyc_session_not_deleted
        '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: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/session/33333333-4444-5555-6666-777777777777/kyb/parties/0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41/regenerate/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.regenerate_kyb_party(
                "33333333-4444-5555-6666-777777777777",
                "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41",
            )
            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.regenerateKybParty(
              "33333333-4444-5555-6666-777777777777",
              "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41",
            );
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RegenerateKYBParty(ctx, \"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().regenerateKybParty("33333333-4444-5555-6666-777777777777",
            "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41");

            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->regenerateKybParty('33333333-4444-5555-6666-777777777777',
            '0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41');

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

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

            result = didit.sessions.regenerate_kyb_party(
              "33333333-4444-5555-6666-777777777777",
              "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41"
            )
            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.RegenerateKybPartyAsync("33333333-4444-5555-6666-777777777777",
            "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41");

            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.