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

# Enviar pessoas-chave do KYB: API

> Declare na Didit as pessoas-chave preparadas de uma sessão KYB e inicie a verificação KYC de cada parte que precisar dela.



## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/session/{sessionId}/kyb/parties/submit/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de 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/submit/:
    post:
      tags:
        - Sessions
      summary: Enviar os rascunhos das partes do KYB
      description: >-
        Declare os rascunhos armazenados como as pessoas-chave da empresa. Esta
        é a etapa hospedada de Pessoas-chave sob a sua chave de API: a Didit
        decide, a partir das configurações de função e dos limiares de
        propriedade do fluxo, quais partes devem ser verificadas, cria uma
        sessão de KYC individual (ou uma subsessão de KYB para um proprietário
        pessoa jurídica) para cada uma delas, envia os e-mails que o fluxo
        solicita e avança a sessão. Cada sessão filha é cobrada como no fluxo
        hospedado. Os rascunhos são consumidos. Repetir a chamada após um envio
        bem-sucedido não altera nada e responde `200` com `already_submitted:
        true` e as partes que já existem. A sessão deve estar na etapa de
        Pessoas-chave. Envie a cada pessoa o seu `kyc_session_url` ou
        incorpore-o. Requer `write:businesses`.
      operationId: post_v3_session_kyb_parties_submit
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID da sessão de Verificação de empresas (KYB). Ela deve pertencer
            à aplicação da chave de API.
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: node_id
          in: query
          required: false
          description: >-
            Nó do fluxo da etapa de KYB. Necessário apenas quando o fluxo tem
            mais de um nó de KYB; por padrão, a Didit usa o próprio nó da
            sessão.
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                locale:
                  type: string
                  maxLength: 10
                  description: >-
                    Localidade usada para traduzir a resposta da etapa para a
                    qual a sessão avança.
            example:
              locale: es
      responses:
        '200':
          description: Partes declaradas (ou já declaradas).
          content:
            application/json:
              schema:
                type: object
                properties:
                  valid:
                    type: boolean
                  next_step:
                    type: string
                    nullable: true
                    description: Etapa em que a sessão está.
                  status:
                    type: string
                    description: Status da sessão de empresa.
                  advanced:
                    type: boolean
                    description: >-
                      `true` quando esta chamada declarou as partes e avançou a
                      sessão.
                  already_submitted:
                    type: boolean
                    description: >-
                      `true` quando as partes já haviam sido declaradas por uma
                      chamada anterior.
                  kyb_key_people_status:
                    type: string
                  parties:
                    type: array
                    items:
                      $ref: '#/components/schemas/KYBKeyPeopleParty'
              example:
                valid: true
                next_step: FINISHED
                status: In Progress
                advanced: true
                already_submitted: false
                kyb_key_people_status: In Progress
                parties: []
        '401':
          description: >-
            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.
        '402':
          description: >-
            A organização não tem mais crédito para as sessões de verificação
            filhas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              example:
                detail: Insufficient credits.
        '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, pertence a outra aplicação ou
            está fora dos limites de uma chave com escopo; nenhum detalhe
            diferencia esses casos.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              example:
                detail: Session not found.
        '409':
          description: >-
            `kyb_no_party_drafts`: não há nada para enviar.
            `kyb_parties_already_submitted`: rascunhos foram adicionados depois
            que as partes foram declaradas. `kyb_step_mismatch`: a sessão não
            está na etapa de pessoas-chave (`next_step` indica a etapa em que
            ela está). `kyb_session_not_writable`: a sessão foi finalizada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
                  code:
                    type: string
                  next_step:
                    type: string
              example:
                detail: There are no draft parties to submit.
                code: kyb_no_party_drafts
        '429':
          description: >-
            Limite de 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: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.submit_kyb_parties(
                "33333333-4444-5555-6666-777777777777",
                locale="es",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.sessions.submitKybParties("33333333-4444-5555-6666-777777777777",
            {
              locale: "es",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.SubmitKYBParties(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsSubmitKYBPartiesParams{\n\tLocale: didit.String(\"es\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsSubmitKybPartiesParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().submitKybParties("33333333-4444-5555-6666-777777777777",
            SessionsSubmitKybPartiesParams.builder()
                    .locale("es")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->sessions->submitKybParties('33333333-4444-5555-6666-777777777777',
            [
                'locale' => 'es',
            ]);

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

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

            result = didit.sessions.submit_kyb_parties(
              "33333333-4444-5555-6666-777777777777",
              locale: "es"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Sessions.SubmitKybPartiesAsync("33333333-4444-5555-6666-777777777777",
            new SessionsSubmitKybPartiesParams

            {
                Locale = "es",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    KYBKeyPeopleParty:
      type: object
      description: >-
        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.