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

# Rigenera sessione KYC per persone chiave API

> Didit crea una nuova sessione KYC per una persona chiave KYB la cui sessione è scaduta o eliminata, e le invia un nuovo link via email.



Prompt API per rigenerare la sessione KYC delle persone chiave
        Copia il prompt negli appunti



      
      

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



      
      

Incolla in

Usa questa procedura quando il link precedente non funziona più: la sessione è stata eliminata oppure è scaduta prima che la persona la avviasse. Le sessioni eliminate rientrano in questo caso anche se la persona aveva già avviato o completato la verifica. Le sessioni importate non rientrano per scadenza; devono essere state eliminate. Una sessione non eliminata che la persona aveva già avviato non rientra per scadenza.La nuova sessione è collegata allo stesso soggetto, quindi il suo risultato confluisce nel controllo delle persone chiave come sarebbe confluito il risultato della sessione originale, e il suo link resta valido per la durata di validità della sessione del workflow KYC in cui viene eseguita (da 1 ora a 4 settimane), non per quella della sessione aziendale. Leggi il soggetto e le sue sessioni figlie nella [decisione della sessione aziendale](https://docs.didit.me/it/business-verification/response-schema.md#key_people_checks). Se la persona non deve essere verificata affatto, [ignora il soggetto](https://docs.didit.me/it/sessions-api/update-data.md#escludere-una-parte-della-sezione-key-people) invece. Vedi [Persone chiave](https://docs.didit.me/it/business-verification/key-people.md) per capire come funzionano i soggetti e le loro verifiche.


## OpenAPI

````yaml it/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 di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/kyb/parties/{partyUuid}/regenerate/:
    post:
      tags:
        - Sessions
      summary: Rigenera la sessione KYC di un soggetto Key People
      description: >-
        Assegna a una controparte di tipo persona chiave in una sessione di
        Verifica aziendale (KYB) una nuova sessione KYC individuale dopo che la
        precedente è stata eliminata o è scaduta prima che la persona la
        avviasse, in modo che il controllo sulle persone chiave possa
        concludersi nuovamente; non inviare alcun corpo della richiesta.
        Funziona quando la sessione KYC della controparte è stata eliminata
        (`kyc_session_deleted: true`) o è scaduta prima che la persona la
        avviasse (`Expired`, mai avviata). Una sessione ancora in corso o
        terminata con qualsiasi altro stato (`Approved`, `Declined`, `In
        Review`, `Abandoned`, ...) restituisce `409` a meno che non sia stata
        eliminata. Una controparte che non ne ha mai avuta una o una controparte
        aziendale restituisce sempre `409`. Didit crea una nuova sessione KYC
        ospitata con il workflow con cui la controparte è stata verificata (la
        sua versione pubblicata più recente) o, quando non è più nota, il
        workflow assegnato al ruolo della controparte nelle impostazioni delle
        persone chiave, in modo che il relativo link rimanga valido per il tempo
        di scadenza della sessione di quel workflow KYC; invia il link via email
        alla controparte se è presente un indirizzo email registrato, azzera
        `is_skipped` e ricalcola il controllo sulle persone chiave e lo stato
        della sessione aziendale. Invia quindi un
        [webhook](https://docs.didit.me/it/integration/webhooks) `data.updated`
        per la sessione aziendale con trigger `console_key_people_regenerate`;
        per esentare invece la controparte, usa `PATCH
        /v3/session/{sessionId}/kyb/parties/{partyUuid}/`. Una chiave API con
        ambito limitato richiede `decisions: write` e senza `sessions: write`
        riceve `kyc_session_url` come `null`. Le sessioni eliminate sono idonee
        anche se la persona aveva già avviato o completato la verifica. Le
        sessioni importate non sono idonee tramite scadenza; devono essere state
        eliminate.
      operationId: post_v3_session_kyb_party_regenerate
      parameters:
        - name: sessionId
          in: path
          required: true
          description: UUID della sessione padre di Verifica aziendale (KYB).
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: partyUuid
          in: path
          required: true
          description: >-
            UUID della parte relativa alle persone chiave
            (`key_people_checks[].submitted.parties[].uuid` nella decisione
            della sessione aziendale). Deve appartenere alla sessione a cui fa
            riferimento `sessionId`.
          schema:
            type: string
            format: uuid
            example: 0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41
      responses:
        '200':
          description: >-
            Nuova sessione KYC creata. Restituisce il soggetto aggiornato con la
            sua nuova sessione figlia, che scade dopo il tempo di scadenza della
            sessione del relativo 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 chiave API con ambito è scaduta. Questo è l'unico caso che
            restituisce `401`: una chiave mancante, non valida o revocata
            restituisce `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Messaggio di errore di facile lettura.
              examples:
                Expired key:
                  summary: La data di scadenza della chiave è stata superata
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Errore di autenticazione o autorizzazione. Una chiave mancante
            restituisce `403`, così come la chiave di un'altra applicazione, una
            chiave con ambito limitato priva dell'autorizzazione necessaria per
            questo endpoint e una richiesta proveniente dall'esterno
            dell'allowlist IP della chiave; una chiave errata, revocata o
            scaduta restituisce `401`. Distinguili tramite `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Messaggio di errore di facile lettura.
              examples:
                Missing or invalid credentials:
                  summary: >-
                    Nessuna intestazione x-api-key, oppure validazione della
                    chiave non riuscita
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: >-
                    Una chiave valida appartenente a un'applicazione diversa da
                    quella della sessione
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'La chiave con ambito non dispone di decisions: write'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: >-
                    Richiesta proveniente da un indirizzo esterno all'allowlist
                    degli IP della chiave
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            La sessione non esiste, è stata eliminata o non rientra nei limiti
            di una chiave con ambito limitato; nessuna parte con questo UUID
            esiste nella tua applicazione; oppure la parte appartiene a un'altra
            sessione. Ogni caso ha il proprio `detail`. La ricerca della
            sessione viene eseguita prima della verifica delle credenziali,
            quindi un `sessionId` sconosciuto restituisce `404` anche senza una
            chiave valida.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Messaggio di errore di facile lettura.
              examples:
                Unknown session:
                  summary: >-
                    Nessuna sessione con questo ID esiste, oppure è stata
                    eliminata
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    La sessione non rientra nei limiti di workflow o di sola
                    approvazione di una chiave con ambito limitato
                  value:
                    detail: Session not found.
                Unknown party:
                  summary: Nessuna parte con questo UUID nella tua applicazione
                  value:
                    detail: No BusinessParty matches the given query.
                Party of another session:
                  summary: partyUuid esiste ma appartiene a una sessione diversa
                  value:
                    detail: Party does not belong to the given session.
        '409':
          description: >-
            La parte non ha alcuna sessione KYC idonea da sostituire. A meno che
            non sia stata eliminata, una sessione ancora in corso o una
            terminata con un altro stato (`Approved`, `Declined`, `In Review`,
            `Abandoned`, ...) non può essere rigenerata. Anche una parte che non
            ne ha mai avuta una o una parte di tipo aziendale restituisce `409`.
            Una sessione idonea è stata eliminata o è scaduta prima che la
            persona la avviasse. Le sessioni eliminate sono idonee anche se la
            persona aveva già avviato o completato la verifica. Le sessioni
            importate non sono idonee per effetto della scadenza; devono essere
            state eliminate. Gestisci il caso in base a `code`.
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                  - code
                properties:
                  detail:
                    type: string
                    description: Messaggio di errore di facile lettura.
                  code:
                    type: string
                    enum:
                      - kyb_party_kyc_session_not_deleted
                    description: Codice di errore stabile leggibile da macchina.
              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 di frequenza superato: 300 richieste di scrittura (POST,
            PATCH, DELETE) al minuto per chiave API. Attendi i secondi indicati
            in `Retry-After` prima di riprovare; le intestazioni `X-RateLimit-*`
            indicano il budget.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Messaggio di errore di facile lettura.
              examples:
                Rate limited:
                  summary: Budget per il minuto corrente esaurito
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: Secondi da attendere prima di effettuare un nuovo tentativo.
              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: >-
        Una parte relativa alle persone chiave di una sessione di Verifica
        aziendale (KYB), con la relativa verifica figlia. La stessa parte
        compare in `key_people_checks[].submitted.parties[]` della decisione
        sulla sessione aziendale.
      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: Identificativo della parte.
        entity_type:
          type: string
          enum:
            - person
            - company
          description: Indica se la parte è una persona fisica o un'azienda.
        source:
          type: string
          enum:
            - REGISTRY
            - USER
          description: >-
            `REGISTRY`: ricavato dal registro delle imprese. `USER`: inserito
            nella schermata Persone chiave.
        name:
          type: string
          description: Nome visualizzato della parte.
        first_name:
          type: string
          nullable: true
          description: Nome (persone).
        last_name:
          type: string
          nullable: true
          description: Cognome (persone fisiche).
        company_name:
          type: string
          nullable: true
          description: Ragione sociale (parti aziendali).
        registration_number:
          type: string
          nullable: true
          description: Numero di registrazione dell'azienda (parti aziendali).
        email:
          type: string
          format: email
          nullable: true
          description: Email a cui viene inviato il link di verifica.
        nationality:
          type: string
          nullable: true
          description: >-
            Nazionalità per le persone fisiche, paese di costituzione per le
            aziende.
        phone_number:
          type: string
          nullable: true
          description: Numero di telefono raccolto per la parte.
        date_of_birth:
          type: string
          format: date
          nullable: true
          description: Data di nascita (persone).
        position:
          type: string
          nullable: true
          description: Titolo professionale in formato testo libero (persone).
        custom_fields:
          type: object
          additionalProperties: true
          description: >-
            Campi personalizzati definiti dal workflow raccolti per la parte,
            indicizzati per chiave del campo.
        is_active:
          type: boolean
          description: Indica se la parte è attiva.
        is_skipped:
          type: boolean
          description: >-
            Indica se la parte è esente dalla verifica. La rigenerazione
            cancella questa impostazione.
        requires_verification:
          type: boolean
          description: >-
            Indica se il ruolo e le regole sull'assetto proprietario richiedono
            una verifica per questa parte.
        roles:
          type: array
          description: Ruoli ricoperti dalla parte nell'azienda.
          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: Codice del ruolo.
              ownership_percent:
                type: number
                nullable: true
                description: >-
                  Percentuale dell'assetto proprietario per questo ruolo, quando
                  nota.
              voting_percent:
                type: number
                nullable: true
                description: Percentuale dei diritti di voto per questo ruolo, se nota.
        kyc_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessione KYC individuale figlia (persone fisiche).
        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: >-
            Stato della sessione KYC figlia. Una sessione eliminata mantiene lo
            stato che aveva al momento dell'eliminazione.
        kyc_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Link ospitato della sessione KYC secondaria. `null` quando non è
            presente alcuna sessione o è stata eliminata, e per una chiave API
            con ambito limitato senza `sessions: write`.
        kyc_session_deleted:
          type: boolean
          description: >-
            La sessione KYC figlia è stata eliminata, pertanto non potrà mai
            concludersi.
        kyb_sub_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessione KYB figlia (parti aziendali).
        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: Stato della sessione KYB figlia.
        kyb_sub_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Link ospitato della sessione KYB secondaria, con le stesse regole
            per `null` di `kyc_session_url`.
        kyb_sub_session_deleted:
          type: boolean
          description: Controparte a livello di azienda di `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: Tipo di workflow eseguito dalla sessione figlia.
        verification_workflow_id:
          type: string
          format: uuid
          nullable: true
          description: Workflow eseguito dalla sessione figlia.
        verification_workflow_label:
          type: string
          nullable: true
          description: Etichetta di quel workflow.
        verification_workflow_features:
          type: array
          nullable: true
          description: >-
            Funzionalità del workflow della sessione figlia con il relativo
            stato attuale.
          items:
            type: object
            required:
              - feature
              - status
            properties:
              feature:
                type: string
                description: >-
                  Codice della funzionalità, ad esempio `ID_VERIFICATION` o
                  `LIVENESS`.
              status:
                type: string
                description: >-
                  Stato della funzionalità, `Not Finished` fino a quando non
                  viene eseguita.
        didit_internal_id:
          type: string
          format: uuid
          nullable: true
          description: Identificatore Didit della persona verificata, una volta nota.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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