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

# Regenerar sessão KYC de pessoas-chave: API de verificação

> Crie uma nova sessão KYC para uma pessoa-chave KYB cuja sessão anterior foi eliminada ou expirou antes de a iniciar, e envie-lhe por e-mail uma nova ligação.



Prompt da API para regenerar a sessão KYC de pessoas-chave
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em

Use esta opção quando a ligação anterior já não funciona: a sessão foi eliminada ou expirou antes de a pessoa a ter iniciado. As sessões eliminadas são elegíveis mesmo que a pessoa já tenha iniciado ou concluído a verificação. As sessões importadas não são elegíveis por expiração; têm de ter sido eliminadas. Uma sessão que não foi eliminada e que a pessoa já tinha iniciado não é elegível por expiração.A nova sessão fica associada à mesma entidade, pelo que o respetivo resultado é tido em conta na verificação de pessoas-chave, tal como aconteceria com a sessão original. A ligação permanece válida durante o período de validade da sessão do fluxo KYC que executa (de 1 hora a 4 semanas), e não o da sessão empresarial. Consulte a entidade e as respetivas sessões secundárias na [decisão da sessão empresarial](https://docs.didit.me/pt/business-verification/response-schema.md#key_people_checks). Se a pessoa não deve ser verificada de todo, [ignore a entidade](https://docs.didit.me/pt/sessions-api/update-data.md#ignorar-uma-parte-de-pessoas-chave). Consulte [Pessoas-chave](https://docs.didit.me/pt/business-verification/key-people.md) para saber como funcionam as entidades e as respetivas verificações.


## OpenAPI

````yaml pt/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 Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/kyb/parties/{partyUuid}/regenerate/:
    post:
      tags:
        - Sessions
      summary: Regenerar a sessão de KYC de uma parte do tipo pessoas-chave
      description: >-
        Atribua a uma parte de Pessoas-chave de uma sessão de Verificação de
        empresas (KYB) uma nova sessão de KYC individual depois de a anterior
        ter sido eliminada ou ter expirado antes de a pessoa a iniciar, para que
        a verificação de Pessoas-chave possa ser concluída novamente; não envie
        corpo no pedido. Funciona quando a sessão de KYC da parte foi eliminada
        (`kyc_session_deleted: true`) ou expirou antes de a pessoa a iniciar
        (`Expired`, nunca iniciada). Uma sessão ainda em curso ou que tenha
        terminado em qualquer outro estado (`Approved`, `Declined`, `In Review`,
        `Abandoned`, ...) devolve `409`, a menos que tenha sido eliminada. Uma
        parte que nunca teve uma sessão ou uma parte que seja uma empresa
        devolve sempre `409`. A Didit cria uma nova sessão de KYC alojada com o
        fluxo com o qual a parte foi verificada (a sua versão publicada mais
        recente) ou, quando este já não for conhecido, o fluxo que as suas
        definições de Pessoas-chave atribuem à função da parte, pelo que a sua
        ligação dura o tempo de expiração da sessão desse fluxo de KYC; envia a
        ligação por e-mail para a parte se existir um e-mail registado, limpa
        `is_skipped` e recalcula a verificação de Pessoas-chave e o estado da
        sessão da empresa. Em seguida, envia um
        [webhook](https://docs.didit.me/pt/integration/webhooks) `data.updated`
        para a sessão da empresa com o acionador
        `console_key_people_regenerate`; para isentar a parte em alternativa,
        utilize `PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/`. Uma
        chave de API com escopo necessita de `decisions: write` e, sem
        `sessions: write`, recebe `kyc_session_url` como `null`. Sessões
        eliminadas são elegíveis mesmo que a pessoa já tenha iniciado ou
        concluído a verificação. Sessões importadas não são elegíveis por
        expiração; têm de ter sido eliminadas.
      operationId: post_v3_session_kyb_party_regenerate
      parameters:
        - name: sessionId
          in: path
          required: true
          description: UUID da sessão-pai de Verificação de empresas (KYB).
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: partyUuid
          in: path
          required: true
          description: >-
            UUID da parte de Pessoas-chave
            (`key_people_checks[].submitted.parties[].uuid` na decisão da sessão
            de empresa). Tem de pertencer à sessão referenciada por `sessionId`.
          schema:
            type: string
            format: uuid
            example: 0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41
      responses:
        '200':
          description: >-
            Nova sessão de KYC criada. Devolve a parte atualizada com a sua nova
            sessão filha, que expira após o tempo de expiração de sessão do
            respetivo fluxo de 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: >-
            A chave de API com âmbito expirou. Este é o único caso que devolve
            `401`: uma chave em falta, inválida ou revogada devolve `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Expired key:
                  summary: A data de validade da chave já passou
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Falha de autenticação ou autorização. Uma chave em falta devolve
            `403`, assim como uma chave de outra aplicação, uma chave com âmbito
            restrito sem a permissão que este endpoint requer e um pedido
            proveniente de fora da lista de IPs permitidos da chave; uma chave
            incorreta, revogada ou expirada devolve `401`. Distinga-as através
            de `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Missing or invalid credentials:
                  summary: Sem cabeçalho x-api-key ou a chave falhou a validação
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: >-
                    Uma chave válida que pertence a uma aplicação diferente da
                    sessão
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'Chave com âmbito não tem decisions: write'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: >-
                    Pedido proveniente de fora da lista de permissões de IP da
                    chave
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            A sessão não existe, foi eliminada ou está fora dos limites de uma
            chave com âmbito restrito; não existe nenhuma parte com este UUID na
            sua aplicação; ou a parte pertence a outra sessão. Cada caso tem o
            seu próprio `detail`. A pesquisa da sessão é executada antes da
            verificação de credenciais, pelo que um `sessionId` desconhecido
            devolve `404` mesmo sem uma chave válida.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Unknown session:
                  summary: Não existe nenhuma sessão com este ID ou foi eliminada
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    A sessão está fora dos limites de fluxo ou dos limites que
                    permitem apenas sessões aprovadas de uma chave com âmbito
                    restrito
                  value:
                    detail: Session not found.
                Unknown party:
                  summary: Nenhuma parte com este UUID na sua aplicação
                  value:
                    detail: No BusinessParty matches the given query.
                Party of another session:
                  summary: partyUuid existe, mas pertence a uma sessão diferente
                  value:
                    detail: Party does not belong to the given session.
        '409':
          description: >-
            A parte não tem nenhuma sessão de KYC elegível para substituir. A
            menos que seja eliminada, uma sessão ainda em curso ou que tenha
            terminado com outro estado (`Approved`, `Declined`, `In Review`,
            `Abandoned`, ...) não pode ser regenerada. Uma parte que nunca tenha
            tido uma ou uma parte empresarial também devolve `409`. Uma sessão
            elegível foi eliminada ou expirou antes de a pessoa a iniciar. As
            sessões eliminadas qualificam-se mesmo que a pessoa já tivesse
            iniciado ou concluído a verificação. As sessões importadas não se
            qualificam por expiração; têm de ter sido eliminadas. Ramifique
            consoante o `code`.
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                  - code
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
                  code:
                    type: string
                    enum:
                      - kyb_party_kyc_session_not_deleted
                    description: Código de erro legível por máquina estável.
              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 pedidos excedido: 300 pedidos de escrita (POST, PATCH,
            DELETE) por minuto por chave de API. Aguarde `Retry-After` segundos
            antes de tentar novamente; os cabeçalhos `X-RateLimit-*` mostram o
            orçamento.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Rate limited:
                  summary: Orçamento esgotado para o minuto atual
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: Segundos a aguardar antes de tentar novamente.
              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: >-
        Uma parte de pessoas-chave de uma sessão de Verificação de empresas
        (KYB), com a sua verificação subordinada. A mesma parte aparece em
        `key_people_checks[].submitted.parties[]` da decisão da sessão da
        empresa.
      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: Identificador da parte.
        entity_type:
          type: string
          enum:
            - person
            - company
          description: Se a parte é uma pessoa singular ou uma empresa.
        source:
          type: string
          enum:
            - REGISTRY
            - USER
          description: >-
            `REGISTRY`: obtido a partir do registo de empresas. `USER`:
            introduzido no ecrã Pessoas-chave.
        name:
          type: string
          description: Nome de apresentação da parte.
        first_name:
          type: string
          nullable: true
          description: Primeiro nome (pessoas).
        last_name:
          type: string
          nullable: true
          description: Apelido (pessoas singulares).
        company_name:
          type: string
          nullable: true
          description: Nome da empresa (partes empresariais).
        registration_number:
          type: string
          nullable: true
          description: Número de registo da empresa (partes empresariais).
        email:
          type: string
          format: email
          nullable: true
          description: E-mail para o qual a ligação de verificação é enviada.
        nationality:
          type: string
          nullable: true
          description: >-
            Nacionalidade para pessoas singulares, país de constituição para
            empresas.
        phone_number:
          type: string
          nullable: true
          description: Número de telefone recolhido para a parte.
        date_of_birth:
          type: string
          format: date
          nullable: true
          description: Data de nascimento (pessoas).
        position:
          type: string
          nullable: true
          description: Cargo em texto livre (pessoas singulares).
        custom_fields:
          type: object
          additionalProperties: true
          description: >-
            Campos personalizados definidos pelo fluxo recolhidos para a parte,
            indexados pela chave do campo.
        is_active:
          type: boolean
          description: Se a parte está ativa.
        is_skipped:
          type: boolean
          description: >-
            Se a parte está isenta de verificação. A regeneração elimina esta
            isenção.
        requires_verification:
          type: boolean
          description: >-
            Se as regras de função e propriedade exigem uma verificação para
            esta parte.
        roles:
          type: array
          description: Funções que a parte desempenha na empresa.
          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: Código da função.
              ownership_percent:
                type: number
                nullable: true
                description: Percentagem de propriedade para esta função, quando conhecida.
              voting_percent:
                type: number
                nullable: true
                description: >-
                  Percentagem de direitos de voto para esta função, quando
                  conhecida.
        kyc_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessão KYC individual dependente (pessoas singulares).
        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: >-
            Estado da sessão KYC subordinada. Uma sessão eliminada mantém o
            estado que tinha quando foi eliminada.
        kyc_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Ligação alojada da sessão de KYC dependente. `null` quando não
            existe nenhuma ou se foi eliminada, e para uma chave de API com
            âmbito restrito sem `sessions: write`.
        kyc_session_deleted:
          type: boolean
          description: >-
            A sessão de KYC subordinada foi eliminada, pelo que nunca poderá ser
            concluída.
        kyb_sub_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessão KYB dependente (partes empresariais).
        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: Estado da sessão KYB subordinada.
        kyb_sub_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Ligação alojada da sessão de KYB dependente, com as mesmas regras de
            `null` que `kyc_session_url`.
        kyb_sub_session_deleted:
          type: boolean
          description: Equivalente da parte empresarial 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: Tipo do fluxo que a sessão filha executa.
        verification_workflow_id:
          type: string
          format: uuid
          nullable: true
          description: Fluxo que a sessão filha executa.
        verification_workflow_label:
          type: string
          nullable: true
          description: Rótulo desse fluxo.
        verification_workflow_features:
          type: array
          nullable: true
          description: >-
            Funcionalidades do fluxo da sessão filha com o respetivo estado
            atual.
          items:
            type: object
            required:
              - feature
              - status
            properties:
              feature:
                type: string
                description: >-
                  Código da funcionalidade, por exemplo `ID_VERIFICATION` ou
                  `LIVENESS`.
              status:
                type: string
                description: Estado da funcionalidade, `Not Finished` até ser executada.
        didit_internal_id:
          type: string
          format: uuid
          nullable: true
          description: Identificador da Didit da pessoa verificada, assim que conhecida.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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