> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API para regenerar sessão KYC de pessoas-chave do KYB

> Crie com a Didit uma nova sessão KYC para pessoa-chave do KYB cuja sessão expirou ou foi excluída antes do início e envie novo link por e-mail.



Prompt da API para regenerar a sessão de 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 isto quando o link anterior não funciona mais: a sessão foi excluída ou expirou antes de a pessoa sequer iniciá-la. Sessões excluídas 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; elas precisam ter sido excluídas. Uma sessão que não foi excluída e que a pessoa já havia iniciado não é elegível por expiração.A nova sessão fica vinculada à mesma parte, então o resultado dela entra na verificação de pessoas-chave como o da sessão original entraria, e o link permanece válido pelo tempo de expiração da sessão do fluxo de KYC que ela executa (de 1 hora a 4 semanas), não o da sessão de empresa. Consulte a parte e as sessões filhas dela na [decisão da sessão de empresa](https://docs.didit.me/pt-br/business-verification/response-schema.md#key_people_checks). Se a pessoa não deve ser verificada de forma alguma, [ignore a parte](https://docs.didit.me/pt-br/sessions-api/update-data.md#ignorar-uma-parte-de-pessoas-chave) em vez disso. Veja [Pessoas-chave](https://docs.didit.me/pt-br/business-verification/key-people.md) para entender como as partes e as verificações delas funcionam.


## OpenAPI

````yaml pt-br/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: Gerar novamente a sessão de KYC de uma parte de pessoas-chave
      description: >-
        Gera uma nova sessão de KYC individual para uma parte de Pessoas-chave
        de uma sessão de Verificação de empresas (KYB) depois que a anterior foi
        excluída ou expirou antes de a pessoa iniciá-la, para que a verificação
        de Pessoas-chave possa ser concluída novamente; não envie corpo na
        requisição. Funciona quando a sessão de KYC da parte foi excluída
        (`kyc_session_deleted: true`) ou expirou antes de a pessoa iniciá-la
        (`Expired`, nunca iniciada). Uma sessão ainda em andamento ou que
        terminou em qualquer outro status (`Approved`, `Declined`, `In Review`,
        `Abandoned`, ...) retorna `409`, a menos que tenha sido excluída. Uma
        parte que nunca teve uma sessão ou uma parte que seja empresa sempre
        retorna `409`. A Didit cria uma nova sessão de KYC hospedada com o fluxo
        com que a parte foi verificada (sua versão publicada mais recente) ou,
        quando ele não é mais conhecido, com o fluxo que suas configurações de
        Pessoas-chave atribuem à função da parte, de modo que o link dura o
        tempo de expiração de sessão desse fluxo de KYC; ela envia o link por
        e-mail à parte quando há um e-mail registrado, limpa `is_skipped` e
        recalcula a verificação de Pessoas-chave e o status da sessão de
        empresa. Em seguida, envia um
        [webhook](https://docs.didit.me/pt-br/integration/webhooks)
        `data.updated` para a sessão de empresa com o gatilho
        `console_key_people_regenerate`; para isentar a parte em vez disso, use
        `PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/`. Uma chave de
        API com escopo precisa de `decisions: write` e, sem `sessions: write`,
        recebe `kyc_session_url` como `null`. Sessões excluídas se qualificam
        mesmo que a pessoa já tenha iniciado ou concluído a verificação. Sessões
        importadas não se qualificam por expiração; elas precisam ter sido
        excluídas.
      operationId: post_v3_session_kyb_party_regenerate
      parameters:
        - name: sessionId
          in: path
          required: true
          description: UUID da sessão principal 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)
            (`key_people_checks[].submitted.parties[].uuid` na decisão da sessão
            de empresa). Deve 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. Retorna a parte atualizada com sua nova
            sessão filha, que expira após o tempo de expiração de sessão do
            fluxo de verificação (workflow) de KYC correspondente.
          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 escopo expirou. Este é o único caso que retorna
            `401`: uma chave ausente, inválida ou revogada retorna `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 ausente retorna
            `403`, assim como uma chave de outra aplicação, uma chave com escopo
            sem a permissão exigida por este endpoint e uma requisição de fora
            da lista de IPs permitidos da chave; uma chave incorreta, revogada
            ou expirada retorna `401`. Diferencie-as pelo `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Missing or invalid credentials:
                  summary: Cabeçalho x-api-key ausente, ou a chave falhou na 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
                    aplicação da sessão
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'Chave com escopo sem decisions: write'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: Requisição de fora da lista de IPs permitidos da chave
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            A sessão não existe, foi excluída ou está fora dos limites de uma
            chave com escopo; nenhuma parte com este UUID existe na sua
            aplicação; ou a parte pertence a outra sessão. Cada caso tem seu
            próprio `detail`. A busca da sessão é feita antes da verificação da
            credencial, então um `sessionId` desconhecido retorna `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 ela foi excluída
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    A sessão está fora dos limites de fluxo ou de somente
                    aprovadas de uma chave com escopo
                  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 outra sessão
                  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 tenha sido excluída, uma sessão ainda em andamento ou que
            terminou em outro status (`Approved`, `Declined`, `In Review`,
            `Abandoned`, ...) não pode ser regenerada. Uma parte que nunca teve
            uma sessão ou uma parte que é empresa também retorna `409`. Uma
            sessão elegível foi excluída ou expirou antes de a pessoa iniciá-la.
            Sessões excluídas se qualificam mesmo que a pessoa já tenha iniciado
            ou concluído a verificação. Sessões importadas não se qualificam por
            expiração; elas precisam ter sido excluídas. Ramifique com base em
            `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 estável e legível por máquina.
              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 requisições excedido: 300 requisições 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 a cota.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Rate limited:
                  summary: Orçamento do minuto atual esgotado
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: Segundos de espera 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 sua verificação filha. 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 física ou uma empresa.
        source:
          type: string
          enum:
            - REGISTRY
            - USER
          description: >-
            `REGISTRY`: obtido do registro de empresas. `USER`: informado na
            tela Pessoas-chave.
        name:
          type: string
          description: Nome de exibição da parte.
        first_name:
          type: string
          nullable: true
          description: Primeiro nome (pessoas físicas).
        last_name:
          type: string
          nullable: true
          description: Sobrenome (pessoas).
        company_name:
          type: string
          nullable: true
          description: Nome da empresa (partes do tipo empresa).
        registration_number:
          type: string
          nullable: true
          description: Número de registro da empresa (partes do tipo empresa).
        email:
          type: string
          format: email
          nullable: true
          description: E-mail para o qual o link de verificação é enviado.
        nationality:
          type: string
          nullable: true
          description: Nacionalidade para pessoas, país de constituição para empresas.
        phone_number:
          type: string
          nullable: true
          description: Número de telefone coletado 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).
        custom_fields:
          type: object
          additionalProperties: true
          description: >-
            Campos personalizados definidos pelo fluxo e coletados 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. Gerar novamente limpa esse
            valor.
        requires_verification:
          type: boolean
          description: >-
            Se as regras de função e de propriedade exigem uma verificação para
            esta parte.
        roles:
          type: array
          description: Funções que a parte exerce 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: Percentual de propriedade para esta função, quando conhecido.
              voting_percent:
                type: number
                nullable: true
                description: >-
                  Percentual de direitos de voto para esta função, quando
                  conhecido.
        kyc_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessão KYC individual filha (pessoas).
        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: >-
            Status da sessão de KYC filha. Uma sessão excluída mantém o status
            que tinha quando foi excluída.
        kyc_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Link hospedado da sessão KYC filha. `null` quando ela não existe ou
            foi excluída, e para uma chave de API com escopo sem `sessions:
            write`.
        kyc_session_deleted:
          type: boolean
          description: >-
            A sessão de KYC filha foi excluída, portanto nunca poderá ser
            concluída.
        kyb_sub_session_id:
          type: string
          format: uuid
          nullable: true
          description: Sessão KYB filha (partes que são empresas).
        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: Status da sessão de KYB filha.
        kyb_sub_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Link hospedado da sessão KYB filha, com as mesmas regras de `null`
            que `kyc_session_url`.
        kyb_sub_session_deleted:
          type: boolean
          description: Equivalente de `kyc_session_deleted` para partes do tipo empresa.
        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 executado pela sessão filha.
        verification_workflow_id:
          type: string
          format: uuid
          nullable: true
          description: Fluxo executado pela sessão filha.
        verification_workflow_label:
          type: string
          nullable: true
          description: Rótulo desse fluxo.
        verification_workflow_features:
          type: array
          nullable: true
          description: >-
            Recursos do fluxo de verificação (workflow) da sessão filha, com o
            status atual de cada um.
          items:
            type: object
            required:
              - feature
              - status
            properties:
              feature:
                type: string
                description: >-
                  Código do recurso, por exemplo `ID_VERIFICATION` ou
                  `LIVENESS`.
              status:
                type: string
                description: Status do recurso, `Not Finished` até ser executado.
        didit_internal_id:
          type: string
          format: uuid
          nullable: true
          description: Identificador da Didit para a pessoa verificada, quando conhecido.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, 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á errada, 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 a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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