> ## 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 KYB Registry Select: obtener perfil de empresa

> Envía POST /v3/kyb/select/ en Didit con un kyb_response_id de la búsqueda en el registro para obtener el perfil completo y facturable de la empresa.

Usa este endpoint después de que `POST /v3/kyb/search/` devuelva empresas candidatas.

Select es el nivel **Lite**: obtiene el perfil de la empresa y sus administradores, y se factura al precio Lite del país ([precios por país](https://docs.didit.me/es/getting-started/kyb-registry-pricing.md)). Guarda la solicitud como una comprobación manual en la Business Console y devuelve un `request_id` que puedes usar para recuperar el resultado guardado de la verificación de la empresa. Para los accionistas o los beneficiarios finales, usa [`POST /v3/kyb/shareholders/`](https://docs.didit.me/es/standalone-apis/kyb-registry-shareholders) o [`POST /v3/kyb/ubo/`](https://docs.didit.me/es/standalone-apis/kyb-registry-ubo).

Didit espera a que el registro de origen termine antes de responder, por lo que `fetch_status` es `resolved` en la mayoría de las respuestas. Si un registro lento mantiene el perfil pendiente más allá de esa espera, la respuesta devuelve `fetch_status: pending` con `data_resolved: false`, y Didit completa automáticamente la comprobación guardada en cuanto el proveedor termina. Consulta de nuevo el resultado guardado de la verificación en lugar de repetir la búsqueda, ya que una búsqueda nueva emite nuevos valores de `kyb_response_id`.


## OpenAPI

````yaml es/openapi-25.json POST /v3/kyb/select/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/kyb/select/:
    post:
      tags:
        - Standalone APIs
      summary: 'Selección de empresa en el registro KYB: nivel Lite (independiente)'
      description: >-
        Obtén el perfil de registro **Lite** de un candidato devuelto por `POST
        /v3/kyb/search/`: datos de la empresa, domicilio social,
        identificadores, estado, actividad y directivos, además del payload sin
        procesar del registro. Los accionistas y los beneficiarios finales
        últimos se venden mediante `POST /v3/kyb/shareholders/` y `POST
        /v3/kyb/ubo/`.


        **Emparejamiento con la búsqueda.** Pasa el `kyb_response_id` del
        candidato exactamente como lo devolvió una búsqueda de la misma
        aplicación. El identificador es efímero y está vinculado a esa búsqueda:
        selecciónalo sin demora y, en lugar de almacenarlo, vuelve a buscar para
        obtener uno nuevo.


        **Facturación.** Cada selección se factura al precio Lite del país
        (cualquier tarifa de búsqueda es aparte); consulta [Precios del registro
        KYB](/es/getting-started/kyb-registry-pricing). El saldo se comprueba
        antes de cualquier llamada al registro (`403` si no es suficiente) y el
        cargo se registra en la sesión de empresa creada.


        **La persistencia es obligatoria.** Cada selección crea una sesión de
        empresa (su id es el `request_id`) para poder hacer seguimiento de la
        facturación y la recuperación; aparece en la consola. `save_api_request`
        se acepta por simetría, pero debe ser `true` (el valor predeterminado):
        enviar `false` devuelve `400`.
      operationId: post_v3_kyb_select
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KYBRegistryCandidateRequest'
            example:
              kyb_response_id: 69aeeb95febb0f1704042259
              vendor_data: company-1234
      responses:
        '200':
          description: >-
            Empresa obtenida y facturada. `kyb_registry` contiene el perfil
            completo; revisa `data_resolved`: cuando es `false`, el registro de
            empresas aún estaba procesando la solicitud y el registro guardado
            se completa automáticamente en cuanto se resuelve.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      ID de la sesión de empresa creada para esta consulta. El
                      registro almacenado (visible en la consola) se sigue
                      actualizando si el registro de empresas responde después
                      de la respuesta.
                  registry_tier_requested:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      El nivel que vende este endpoint: `basic` (Lite) para
                      países seleccionados, `shareholders`, `ubo`.
                  registry_tier_delivered:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      El nivel realmente entregado y facturado. Es inferior al
                      solicitado cuando los registros del país no contienen
                      datos de propiedad o cuando el registro no tiene ningún
                      registro de propiedad para esta empresa.
                  kyb_registry:
                    type: object
                    description: Perfil completo de la empresa en el registro.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                        description: ID de Didit de este registro de empresa.
                      node_id:
                        type: string
                        example: feature_kyb_registry
                      status:
                        type: string
                        enum:
                          - Not Finished
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          Evaluación de Didit de la comprobación en el registro
                          (p. ej., `In Review` cuando la empresa no está activa
                          en el registro o no se pudieron derivar los datos de
                          propiedad).
                      registry_status:
                        type: string
                        nullable: true
                        enum:
                          - active
                          - dissolved
                          - deregistered
                          - see full details
                          - authorised
                          - appointed representative
                          - unauthorised
                          - inactive
                          - no longer authorised
                          - closed
                          - struck off
                        description: >-
                          Estado normalizado de la empresa según lo informa el
                          registro.
                      data_resolved:
                        type: boolean
                        description: >-
                          `true` una vez que el registro de empresas devolvió el
                          perfil completo. `false` cuando el registro de
                          empresas seguía procesando tras el sondeo: los datos
                          almacenados se completan automáticamente cuando el
                          registro de empresas lo resuelve.
                      company_name:
                        type: string
                        example: Tesco PLC
                      registration_number:
                        type: string
                        nullable: true
                        example: '00445790'
                      country_code:
                        type: string
                        description: ISO 3166-1 alpha-2.
                        example: GB
                      region:
                        type: string
                        nullable: true
                        description: >-
                          Código de subdivisión cuando el registro es regional
                          (p. ej., `CA` para `US-CA`); vacío en caso contrario.
                      company_type:
                        type: string
                        nullable: true
                        example: Public Limited Company
                      incorporation_date:
                        type: string
                        format: date
                        nullable: true
                        example: '1947-11-27'
                      registered_address:
                        type: string
                        nullable: true
                        example: >-
                          Tesco House, Shire Park, Kestrel Way, Welwyn Garden
                          City, United Kingdom, AL7 1GA
                      tax_number:
                        type: string
                        nullable: true
                        example: GB412 8925 93
                      risk_level:
                        type: string
                        nullable: true
                        description: >-
                          Nivel de riesgo según el registro, cuando está
                          disponible.
                      verification_status:
                        type: string
                        nullable: true
                        description: >-
                          Estado de verificación en el registro, cuando está
                          disponible.
                      is_from_registry:
                        type: boolean
                        description: >-
                          Siempre `true` en este endpoint: el perfil se obtuvo
                          de un registro oficial.
                      fetch_status:
                        type: string
                        enum:
                          - pending
                          - resolved
                        description: >-
                          Ciclo de vida de la consulta al registro. Se refleja
                          en `data_resolved`.
                      alternative_names:
                        type: string
                        nullable: true
                        description: >-
                          Nombres alternativos, comerciales, anteriores o en el
                          idioma original de la empresa, como texto, cuando se
                          informan.
                      nature_of_business:
                        type: string
                        nullable: true
                        description: >-
                          Descripción de la actividad o código de clasificación,
                          cuando se informa.
                      registered_capital:
                        type: string
                        nullable: true
                      registered_capital_amount:
                        type: string
                        nullable: true
                        description: Importe decimal como cadena, cuando se informa.
                      registered_capital_currency:
                        type: string
                        nullable: true
                        description: Código ISO 4217, cuando se informa.
                      website:
                        type: string
                        nullable: true
                        example: https://www.tesco.com/
                      email:
                        type: string
                        nullable: true
                        example: customer.service@tesco.co.uk
                      phone:
                        type: string
                        nullable: true
                        example: '03301231688'
                      legal_entity_identifier:
                        type: string
                        nullable: true
                        description: LEI, cuando se informa.
                      location_of_registration:
                        type: string
                        nullable: true
                        description: >-
                          Registro o jurisdicción en la que está inscrita la
                          empresa, cuando se indica.
                      vat_number:
                        type: string
                        nullable: true
                        description: >-
                          Número de IVA de la UE, cuando se recopila durante el
                          paso de registro alojado o se edita después. En el
                          momento de la selección normalmente todavía no está
                          definido: la validación del IVA y de la identificación
                          fiscal se ejecuta cuando el usuario final envía el
                          paso de registro en el flujo alojado.
                      vat_validation_status:
                        type: string
                        enum:
                          - valid
                          - invalid
                          - format_valid
                          - invalid_format
                          - could_not_validate
                          - not_applicable
                        description: >-
                          Resultado de validar el número de IVA o, si no lo hay,
                          el `tax_number`, al enviar al registro. `valid` /
                          `invalid`: lo decide el registro oficial del país
                          (VIES de la UE, Noruega, Suiza, Brasil, Colombia,
                          Costa Rica, Ecuador, Paraguay; Polonia también
                          mediante su registro nacional de IVA). `format_valid`
                          / `invalid_format`: lo deciden las reglas de formato y
                          dígito de control del país cuando no se puede
                          consultar ningún registro. `could_not_validate`: el
                          registro no estaba disponible. `not_applicable`: no
                          hay número, el país no tiene registro ni reglas, o es
                          una sesión de sandbox.
                      vat_validated_number:
                        type: string
                        nullable: true
                        description: >-
                          El número que se comprobó, tal como lo conoce la
                          fuente (por ejemplo, el número de IVA derivado de un
                          SIREN francés o de un RSIN neerlandés). `null` cuando
                          no se realizó ninguna comprobación.
                      vat_validation_source:
                        type: string
                        nullable: true
                        enum:
                          - eu_vies
                          - pl_vat_white_list
                          - no_brreg
                          - ch_uid_register
                          - br_receita_federal
                          - co_rues
                          - cr_hacienda
                          - ec_sri
                          - py_dnit
                          - format_rules
                          - null
                        description: >-
                          La fuente que determinó `vat_validation_status`: un
                          registro oficial o `format_rules`. `null` cuando no se
                          ejecutó ninguna comprobación.
                      vat_validated_name:
                        type: string
                        nullable: true
                        description: >-
                          Nombre registrado en la fuente que validó el número,
                          cuando la fuente lo revela. Solo se informa cuando el
                          estado es `valid`.
                      vat_validated_address:
                        type: string
                        nullable: true
                        description: >-
                          Dirección registrada en la fuente que validó el
                          número, cuando esta la facilita. Solo se establece
                          cuando el estado es `valid`.
                      vat_checked_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Marca de tiempo de la comprobación. `null` cuando no
                          se ejecutó ninguna comprobación.
                      financial_summary:
                        type: object
                        nullable: true
                        description: >-
                          Detalles de acciones y capital según el registro
                          (moneda, total de acciones, clases de acciones),
                          cuando están disponibles.
                      officers:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                              format: uuid
                            name:
                              type: string
                              example: MELISSA BETHELL
                            designation:
                              type: string
                              nullable: true
                              description: >-
                                Designación del registro sin procesar (p. ej.,
                                `Director`, `Secretary`).
                            role:
                              type: string
                              description: >-
                                Rol normalizado derivado del cargo. Conjunto
                                completo del modelo de 17 valores; el análisis
                                del registro en este endpoint suele devolver
                                director, non_executive_director, secretary,
                                chairman o company_officer.
                              enum:
                                - director
                                - non_executive_director
                                - secretary
                                - chairman
                                - ubo
                                - shareholder
                                - representative
                                - founder
                                - legal_advisor
                                - authorized_signatory
                                - trustee
                                - beneficiary
                                - company_officer
                                - settlor
                                - protector
                                - investor
                                - other
                            nationality:
                              type: string
                              nullable: true
                            is_active:
                              type: boolean
                              description: >-
                                `false` cuando el registro marca el nombramiento
                                como dimitido.
                            kyc_status:
                              type: string
                              nullable: true
                              enum:
                                - Approved
                                - Declined
                                - Pending
                              description: >-
                                Estado de una sesión KYC asociada, cuando se
                                inició una para este directivo. `null` en caso
                                contrario.
                            kyc_session_url:
                              type: string
                              nullable: true
                              description: >-
                                URL de verificación de la sesión de KYC
                                asociada, si existe.
                            first_name:
                              type: string
                              nullable: true
                              description: >-
                                Nombre de pila cuando el registro lo indica
                                explícitamente; no se deduce del nombre
                                completo.
                            last_name:
                              type: string
                              nullable: true
                              description: >-
                                Apellido, cuando el registro lo indica
                                explícitamente.
                            address:
                              type: string
                              nullable: true
                              description: Dirección del directivo según el registro.
                            appointment_date:
                              type: string
                              nullable: true
                              description: Fecha en que se nombró al cargo.
                              format: date
                            termination_date:
                              type: string
                              nullable: true
                              description: >-
                                Fecha en que terminó el nombramiento, cuando se
                                informa.
                              format: date
                            date_of_birth:
                              type: string
                              nullable: true
                              description: >-
                                Fecha de nacimiento completa según el registro.
                                Es null cuando solo se conoce el año o el mes de
                                nacimiento.
                              format: date
                            date_of_birth_year:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 9999
                              description: >-
                                Año de nacimiento según el registro, incluso
                                cuando la fecha completa no está disponible.
                            date_of_birth_month:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 12
                              description: >-
                                Mes de nacimiento según el registro. Null cuando
                                solo se conoce el año.
                        description: >-
                          Directores, secretarios y otros administradores
                          extraídos del registro.
                      beneficial_owners:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                              format: uuid
                            name:
                              type: string
                            first_name:
                              type: string
                              nullable: true
                            last_name:
                              type: string
                              nullable: true
                            entity_type:
                              type: string
                              enum:
                                - person
                                - company
                              description: >-
                                Si el propietario es una persona física o una
                                persona jurídica.
                            roles:
                              type: array
                              items:
                                type: string
                              description: >-
                                Roles normalizados (por ejemplo, `ubo`,
                                `shareholder`).
                            ownership_min_shares:
                              type: string
                              nullable: true
                              description: >-
                                Límite inferior de la franja de propiedad
                                informada por el registro (por ejemplo, `25%`).
                            ownership_max_shares:
                              type: string
                              nullable: true
                              description: >-
                                Límite superior del rango de propiedad informado
                                por el registro.
                            is_active:
                              type: boolean
                            kyc_status:
                              type: string
                              enum:
                                - Approved
                                - Declined
                                - Pending
                              nullable: true
                            kyc_session_url:
                              type: string
                              nullable: true
                            effective_ownership_percent:
                              type: number
                              nullable: true
                              description: >-
                                Porcentaje de propiedad analizado (límite
                                máximo, con el límite mínimo como alternativa).
                            company_name:
                              type: string
                              nullable: true
                            registration_number:
                              type: string
                              nullable: true
                            country_of_birth:
                              type: string
                              nullable: true
                            email:
                              type: string
                              nullable: true
                            nationality:
                              type: string
                              nullable: true
                            designation:
                              type: string
                              nullable: true
                            voting_min_shares:
                              type: string
                              nullable: true
                            voting_max_shares:
                              type: string
                              nullable: true
                            date_of_birth:
                              type: string
                              nullable: true
                              description: Fecha de nacimiento completa, cuando se informa.
                              format: date
                            appointment_date:
                              type: string
                              nullable: true
                              description: Fecha de nombramiento, cuando se informa.
                              format: date
                            shareholding:
                              $ref: '#/components/schemas/KYBRegistryShareholding'
                        description: >-
                          Beneficiarios finales / personas con control
                          significativo extraídos del registro. Puede estar
                          vacío cuando el registro no expone la propiedad.
                      addresses:
                        type: array
                        nullable: true
                        description: >-
                          Todas las direcciones que indica el registro, con una
                          única forma canónica. Es null si no indica ninguna.
                        items:
                          $ref: '#/components/schemas/KYBRegistryAddress'
                      industries:
                        type: array
                        nullable: true
                        description: >-
                          Las actividades en las que el registro clasifica a la
                          empresa, con una única forma canónica. Es null cuando
                          no indica ninguna.
                        items:
                          $ref: '#/components/schemas/KYBRegistryIndustry'
                      accounts:
                        type: object
                        nullable: true
                        additionalProperties: true
                        description: >-
                          Fechas de presentación ante el registro, cuando están
                          disponibles. Las declaraciones anuales y las juntas
                          generales usan last_annual_return_date y
                          last_agm_date; son distintas de las cuentas
                          financieras.
                      registry_data:
                        $ref: '#/components/schemas/KYBRegistryData'
                      user_provided_data:
                        type: object
                        nullable: true
                        description: >-
                          Siempre `null` en este endpoint (lo usa el flujo de
                          KYB alojado cuando los usuarios finales editan los
                          datos del registro).
                      confirmed_by_user_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: Siempre `null` en este endpoint.
                      last_console_edit_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Se establece cuando un revisor de la consola edita el
                          registro más adelante.
                      is_editable:
                        type: boolean
                        description: >-
                          Si los datos procedentes del registro aún se pueden
                          editar en el flujo alojado o en la consola.
                      registry_tier_delivered:
                        type: string
                        enum:
                          - basic
                          - shareholders
                          - ubo
                        description: >-
                          Igual que `registry_tier_delivered` del nivel
                          superior.
                      registry_ownership_status:
                        type: string
                        nullable: true
                        enum:
                          - not_requested
                          - delivered
                          - not_held
                          - unavailable
                        description: >-
                          `delivered` cuando se recibieron los datos de
                          propiedad, `not_held` cuando el registro de propiedad
                          respondió y no incluye esta empresa (consulta
                          `registry_data.ownership_error`), `unavailable` cuando
                          se solicitó un nivel con propiedad pero el registro no
                          tenía datos de esta empresa o no se pudo consultar
                          (consulta `registry_data.ownership_error`),
                          `not_requested` en el nivel Lite.
                      ownership:
                        $ref: '#/components/schemas/KYBRegistryOwnership'
                      registry_tier:
                        type: string
                        nullable: true
                        description: >-
                          El nivel de registro que solicitó el flujo: `basic`,
                          `shareholders` o `ubo`. También en
                          `ownership.tier_requested`.
                      registry_monitoring:
                        type: object
                        nullable: true
                        description: >-
                          El monitor de registro más reciente de la empresa, o
                          `null` si no existe ninguno.
                        properties:
                          uuid:
                            type: string
                            format: uuid
                          status:
                            type: string
                          unavailable_reason:
                            type: string
                            nullable: true
                          enrolled_at:
                            type: string
                            format: date-time
                            nullable: true
                          cancelled_at:
                            type: string
                            format: date-time
                            nullable: true
                          last_bill_date:
                            type: string
                            format: date
                            nullable: true
                          next_bill_date:
                            type: string
                            format: date
                            nullable: true
                          last_event_at:
                            type: string
                            format: date-time
                            nullable: true
                          events_count:
                            type: integer
                          watched_fields:
                            description: Los campos de la empresa que vigila el monitor.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Devuelve el `vendor_data` que enviaste.
                  metadata:
                    type: object
                    nullable: true
                    description: Devuelve el `metadata` que enviaste.
                  created_at:
                    type: string
                    format: date-time
              examples:
                Resolved company:
                  summary: >-
                    Perfil completo del registro (lista de cargos truncada por
                    brevedad)
                  value:
                    request_id: 9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e
                    kyb_registry:
                      uuid: f1e2d3c4-b5a6-4789-9c0d-1e2f3a4b5c6d
                      node_id: feature_kyb_registry
                      status: In Review
                      registry_status: active
                      data_resolved: true
                      company_name: Tesco PLC
                      registration_number: '00445790'
                      country_code: GB
                      region: ''
                      company_type: Public Limited Company
                      incorporation_date: '1947-11-27'
                      registered_address: >-
                        Tesco House, Shire Park, Kestrel Way, Welwyn Garden
                        City, United Kingdom, AL7 1GA
                      tax_number: GB412 8925 93
                      risk_level: low risk
                      verification_status: verified
                      is_from_registry: true
                      fetch_status: resolved
                      alternative_names: TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY
                      nature_of_business: null
                      registered_capital: null
                      registered_capital_amount: null
                      registered_capital_currency: null
                      website: https://www.tesco.com/
                      email: customer.service@tesco.co.uk
                      phone: '03301231688'
                      legal_entity_identifier: null
                      location_of_registration: null
                      financial_summary:
                        currency: Pound (£)
                        total_number_of_shares: '8174378721'
                        meta_detail:
                          Class_Of_Share: Ordinary
                      officers:
                        - uuid: a1b2c3d4-e5f6-4789-9a0b-1c2d3e4f5a6b
                          name: CHRISTOPHER JON TAYLOR
                          designation: Secretary
                          role: secretary
                          nationality: null
                          is_active: true
                          kyc_status: null
                          kyc_session_url: null
                        - uuid: b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c
                          name: MELISSA BETHELL
                          designation: Director
                          role: director
                          nationality: British
                          is_active: true
                          kyc_status: null
                          kyc_session_url: null
                      beneficial_owners: []
                      addresses:
                        - address: >-
                            Tesco House, Shire Park, Kestrel Way, Welwyn Garden
                            City, United Kingdom, AL7 1GA
                          type: legal_entity_registry_address
                          description: registered office address
                      industries: null
                      accounts:
                        last_account: 26 February 2025
                        next_account: 26 February 2026
                        due_by_date: 26 August 2026
                      registry_data: {}
                      user_provided_data: null
                      confirmed_by_user_at: null
                      last_console_edit_at: null
                      is_editable: true
                    vendor_data: company-1234
                    metadata: null
                    created_at: '2026-06-11T10:45:00.000000+00:00'
                Pending (registry still resolving):
                  summary: >-
                    La selección siguió pendiente tras el sondeo: campos
                    incompletos, se completa automáticamente en el servidor
                  value:
                    request_id: 9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e
                    kyb_registry:
                      uuid: 7c0a4f7e-2b1d-4f6a-9c3e-8d5b2a1f0e9d
                      node_id: feature_kyb_registry
                      status: Not Finished
                      registry_status: null
                      data_resolved: false
                      company_name: Tesco PLC
                      registration_number: '00445790'
                      country_code: GB
                      region: null
                      company_type: null
                      incorporation_date: null
                      registered_address: null
                      tax_number: null
                      risk_level: null
                      verification_status: null
                      is_from_registry: true
                      fetch_status: pending
                      alternative_names: null
                      nature_of_business: null
                      registered_capital: null
                      registered_capital_amount: null
                      registered_capital_currency: null
                      website: null
                      email: null
                      phone: null
                      legal_entity_identifier: null
                      location_of_registration: null
                      financial_summary: {}
                      officers: []
                      beneficial_owners: []
                      addresses: null
                      industries: null
                      accounts: null
                      registry_data: {}
                      user_provided_data: null
                      confirmed_by_user_at: null
                      last_console_edit_at: null
                      is_editable: true
                    vendor_data: company-1234
                    metadata: null
                    created_at: '2026-06-11T10:45:00.000000+00:00'
        '400':
          description: >-
            Error de validación. Los problemas a nivel de campo usan el
            envoltorio estándar de DRF. Un país que los registros no cubren
            responde `400` con `code: kyb_registry_country_unsupported`.
          content:
            application/json:
              examples:
                Missing kyb_response_id:
                  summary: '`kyb_response_id` es obligatorio'
                  value:
                    kyb_response_id:
                      - This field is required.
                save_api_request=false rejected:
                  summary: Las selecciones siempre se guardan
                  value:
                    save_api_request:
                      - >-
                        KYB registry select must be saved so billing and
                        retrieval can be tracked.
                Country not covered:
                  summary: Ningún registro de empresas cubre el país
                  value:
                    detail: >-
                      Company registry search is not available for this country.
                      Enter the company details manually to continue.
                    code: kyb_registry_country_unsupported
        '403':
          description: >-
            Permiso denegado. Se devuelve cuando falta el encabezado `x-api-key`
            y también cuando el saldo de la organización que realiza la llamada
            no la cubre; una clave incorrecta, revocada o expirada devuelve
            `401`. Si falta la clave, se devuelve `403` con `{"detail": ...}`;
            una clave incorrecta, revocada o expirada devuelve `401`. La falta
            de créditos devuelve `403` con `{"error": ...}` antes de que se
            realice cualquier análisis o llamada a un proveedor.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Falta el encabezado `x-api-key`, o la clave no es válida o
                    está revocada
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: El saldo de la organización no cubre la llamada
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Límite de solicitudes superado. Todos los endpoints
            POST/PATCH/DELETE comparten un presupuesto de 300 solicitudes de
            escritura por minuto por clave de API. La respuesta incluye los
            encabezados `X-RateLimit-Limit`, `X-RateLimit-Remaining`,
            `X-RateLimit-Reset` y `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Más de 300 solicitudes de escritura en el minuto actual
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/kyb/select/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "kyb_response_id": "69aeeb95febb0f1704042259",
                "vendor_data": "company-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.kyb.select(
                kyb_response_id="69aeeb95febb0f1704042259",
                vendor_data="company-1234",
            )
            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.kyb.select({
              kyb_response_id: "69aeeb95febb0f1704042259",
              vendor_data: "company-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.KYB.Select(ctx, didit.KYBRegistryCandidateRequest{\n\tKYBResponseID: \"69aeeb95febb0f1704042259\",\n\tVendorData:    didit.String(\"company-1234\"),\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.KYBRegistryCandidateRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.kyb().select(KYBRegistryCandidateRequest.builder()
                    .kybResponseId("69aeeb95febb0f1704042259")
                    .vendorData("company-1234")
                    .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->kyb->select([
                'kyb_response_id' => '69aeeb95febb0f1704042259',
                'vendor_data' => 'company-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.kyb.select(
              kyb_response_id: "69aeeb95febb0f1704042259",
              vendor_data: "company-1234"
            )
            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.Kyb.SelectAsync(new
            KYBRegistryCandidateRequest

            {
                KybResponseId = "69aeeb95febb0f1704042259",
                VendorData = "company-1234",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    KYBRegistryCandidateRequest:
      type: object
      required:
        - kyb_response_id
      properties:
        kyb_response_id:
          type: string
          maxLength: 1024
          description: >-
            Identificador del candidato devuelto por `POST /v3/kyb/search/`
            (`kyb_registry.companies[].kyb_response_id`). Efímero: úsalo poco
            después de la búsqueda que lo generó. Los identificadores pueden ser
            largos, así que guarda y envía el valor exactamente como se
            devolvió, sin recortarlo ni suponer una longitud.
          example: 69aeeb95febb0f1704042259
        vendor_data:
          type: string
          description: >-
            Tu identificador de esta empresa; se devuelve en la respuesta y se
            almacena con la sesión de empresa.
        metadata:
          type: object
          nullable: true
          description: >-
            JSON libre que se guarda con la sesión de empresa y se devuelve en
            la respuesta.
        save_api_request:
          type: boolean
          default: true
          description: >-
            Debe ser `true` (el valor predeterminado). Las selecciones del
            registro KYB siempre se guardan para poder hacer el seguimiento de
            la facturación y la recuperación; `false` devuelve `400`.
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        Qué participación tiene un propietario, con la misma estructura para
        cada país y fuente de registro. Es null cuando el registro no indica
        ninguna participación. Un rango (por ejemplo, el 25-50% de un PSC del
        Reino Unido) no es una participación: `percentage` es null y el rango se
        mantiene en `ownership_min_shares` / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Clase o tipo de participación tal como la denomina el registro.
        number_of_shares:
          type: number
          nullable: true
          description: Número de acciones en posesión.
        currency:
          type: string
          nullable: true
          description: Moneda ISO 4217 de los valores siguientes.
        nominal_value:
          type: number
          nullable: true
          description: Valor nominal por acción.
        total_value:
          type: number
          nullable: true
          description: Valor total de la participación.
        percentage:
          type: number
          nullable: true
          description: Participación exacta en porcentaje, con cuatro decimales.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Una dirección que declara el registro, con la misma estructura para
        todos los países y fuentes de registro. Todas las claves están siempre
        presentes; una parte que el registro no publica es null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Tipo de dirección en minúsculas: `registered` para el domicilio
            social; otros tipos, tal como los denomina el registro (por ejemplo,
            `postal`, `office`). `null` cuando el registro no indica de qué
            dirección se trata.
        address:
          type: string
          description: >-
            La dirección completa en una sola línea. Siempre está presente en
            todas las direcciones.
        street:
          type: string
          nullable: true
          description: Calle y número.
        city:
          type: string
          nullable: true
          description: Ciudad o localidad.
        postal_code:
          type: string
          nullable: true
          description: Código postal.
        region:
          type: string
          nullable: true
          description: Región, estado o provincia.
        country_code:
          type: string
          nullable: true
          description: Código de país ISO 3166-1 alfa-2.
        description:
          type: string
          nullable: true
          description: >-
            La etiqueta propia del registro para la dirección, cuando
            proporciona una.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Una actividad en la que el registro clasifica a la empresa, con la misma
        estructura para todos los países y fuentes de registro.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Código de actividad tal como lo publica el registro (por ejemplo,
            `73110`).
        description:
          type: string
          nullable: true
          description: Etiqueta de la actividad, cuando el registro la publica.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistema de clasificación, con un único nombre por sistema
            independientemente de la fuente que lo haya informado: `UK SIC
            2007`, `US SIC`, `NACE Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`,
            `CNAE`, `SBI`, `NOGA 2008`, `CAE Rev. 4`, `Canada SIC 1977`; los
            demás sistemas nacionales conservan el nombre que les da el
            registro. Es nulo cuando el registro no indica el sistema.
        is_primary:
          type: boolean
          description: >-
            True para la actividad principal de la empresa. Exactamente una
            entrada es la principal cuando la lista no está vacía.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Detalle normalizado del registro de Didit para la empresa: el resultado
        de propiedad (`ownership_error`, `section_errors`, `ubo_resolution`,
        `lite_enrichment`), las correcciones realizadas con update-data y los
        datos del registro que no tienen un campo propio. Nunca incluye el
        registro original de la fuente del registro. Todas las claves son
        opcionales y solo aparecen cuando la empresa tiene un valor para ellas;
        se pueden añadir claves nuevas. Consulta los campos canónicos
        (`addresses`, `industries`, `ownership`,
        `beneficial_owners[].shareholding`) para todo lo que cubren.
      properties:
        company_name:
          type: string
          description: Nombre de la empresa tal como se corrigió en la consola.
        registration_number:
          type: string
          description: >-
            Número de registro tal como lo indica el registro o una corrección
            hecha en la consola.
        country_code:
          type: string
          description: >-
            País del registro, tal como lo indica el registro o una corrección
            hecha en la consola.
        region:
          type: string
          description: Región o estado del registro.
        incorporation_date:
          type: string
          description: Fecha de constitución (ISO 8601).
        registration_date:
          type: string
          description: >-
            Fecha de registro (ISO 8601) cuando el registro indica una distinta
            de la fecha de constitución.
        dissolution_date:
          type: string
          description: Fecha de disolución (ISO 8601) cuando el registro indica una.
        tax_number:
          type: string
          description: Número de identificación fiscal.
        vat_number:
          type: string
          description: Número de IVA.
        legal_address:
          type: string
          description: Dirección legal tal como se corrigió en la consola.
        registered_address:
          type: string
          description: Dirección registrada tal como figura en el registro.
        company_type:
          type: string
          description: Forma jurídica.
        registry_status:
          type: string
          description: Estado de la empresa en el registro.
        verification_status:
          type: string
          description: Estado de la verificación.
        alternative_names:
          type: string
          description: Otros nombres comerciales que usa o ha usado la empresa.
        nature_of_business:
          type: string
          description: Descripción de la actividad.
        registered_capital:
          type: string
          description: Capital social tal como figura impreso.
        registered_capital_amount:
          type: string
          description: Importe del capital social, como cadena decimal.
        registered_capital_currency:
          type: string
          description: Moneda del capital social (ISO 4217).
        website:
          type: string
          description: Sitio web.
        email:
          type: string
          description: Correo electrónico de contacto.
        phone:
          type: string
          description: Teléfono de contacto.
        legal_entity_identifier:
          type: string
          description: Identificador de entidad jurídica (LEI).
        location_of_registration:
          type: string
          description: Lugar de registro.
        control_scheme:
          type: string
          description: Esquema de gobierno corporativo cuando el registro lo expone.
        ownership_error:
          type: string
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
          description: >-
            Por qué no se entregó un nivel de propiedad solicitado, con los
            mismos códigos que `ownership.unavailable_reason`.
            `no_owners_on_record` (el registro respondió y no indica ningún
            propietario) y `ownership_section_unavailable` (el registro no
            devolvió la sección de propiedad) son resultados distintos.
        section_errors:
          type: object
          description: >-
            Secciones que el registro no devolvió, indexadas por sección
            (`officers`, `shareholders`, `group_structure`). Una sección que
            aparece aquí nunca se entregó: una lista vacía junto a ella no dice
            nada sobre la empresa.
          additionalProperties:
            $ref: '#/components/schemas/KYBRegistrySectionError'
        ubo_resolution:
          $ref: '#/components/schemas/KYBRegistryUboResolution'
        lite_enrichment:
          $ref: '#/components/schemas/KYBRegistryLiteEnrichment'
        registry_metadata:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
          description: >-
            Los campos propios del registro mercantil para la empresa, con las
            claves tal como las nombra el registro, como valores simples
            (registros heredados). Solo se incluyen los campos revisados como
            datos del registro.
        registry_sources:
          type: array
          description: >-
            Los registros oficiales de los que se leyó el registro (registros
            heredados). Las demás fuentes no se nombran.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nombres con los que la empresa estuvo registrada anteriormente
            (registros antiguos).
        parent_companies:
          type: array
          items:
            type: string
          description: Empresas matrices que indica el registro (registros heredados).
        documents_available:
          type: integer
          description: >-
            Cuántos documentos presentados ofrece el registro para la empresa
            (registros heredados).
    KYBRegistryOwnership:
      type: object
      description: >-
        El resultado del nivel de propiedad (accionistas / UBO), con la misma
        estructura para cada país y fuente de registro.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` cuando el registro publicó la propiedad; `not_held`
            cuando el registro de propiedad respondió y no incluye la empresa en
            absoluto (consulta `unavailable_reason`); `unavailable` cuando no
            proporcionó los datos de propiedad por cualquier otro motivo
            (consulta `unavailable_reason`); `pending` mientras el registro
            todavía los está obteniendo; `not_requested` para el nivel Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: El nivel que solicitó el flujo.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            El nivel que entregó el registro (y que se factura). Una solicitud
            de UBO respondida solo con accionistas directos es `shareholders`.
        unavailable_reason:
          type: string
          nullable: true
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
            - null
          description: >-
            Por qué no se entregó un nivel de propiedad solicitado. Es null
            salvo que `status` sea `unavailable` o `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True cuando las participaciones declaradas de los accionistas
            directos suman 100% (con un margen de redondeo de un punto
            porcentual); false cuando no es así; null cuando no se entregaron
            los datos de propiedad o no se declara alguna participación.
        unresolved:
          type: array
          description: >-
            Partes de la cadena de propiedad que el registro no pudo resolver;
            por ejemplo, cuando no consta ninguna estructura de grupo por encima
            de los propietarios directos.
          items:
            type: object
            properties:
              reason:
                type: string
              section:
                type: string
                nullable: true
      required:
        - status
        - tier_requested
        - tier_delivered
        - unavailable_reason
        - direct_ownership_complete
        - unresolved
    KYBRegistrySectionError:
      type: object
      description: Una sección que el registro no devolvió.
      properties:
        status_code:
          type: integer
          nullable: true
          description: El estado que respondió el registro para la sección.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        Cómo recorrió el nivel UBO la cadena de propiedad por encima de la
        empresa.
      properties:
        parent_chain:
          type: array
          description: Matrices corporativas, desde la matriz última hasta la empresa.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Empresas situadas directamente por debajo de la empresa en su grupo
            corporativo.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Partes de la cadena que el registro no pudo resolver (las mismas
            entradas que `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Por qué, por ejemplo `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` o `section_error`.
              section:
                type: string
                nullable: true
                description: La sección afectada, por ejemplo `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Campos vacíos del perfil Lite que rellenó otra de las fuentes de
        registro del país. No se indica cuál es la fuente.
      properties:
        fields:
          type: array
          items:
            type: string
          description: Los campos de la empresa que se rellenaron.
        people_added:
          type: integer
          description: Cuántos administradores o propietarios se añadieron.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Registro oficial del que se leyó la información. Solo se nombran
        registros gubernamentales oficiales, reguladores y el sistema oficial de
        identificadores; cualquier otra fuente se omite.
      properties:
        name:
          type: string
          description: Nombre del registro, por ejemplo `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Siempre `official`.
      required:
        - name
        - source_type
    KYBRegistryGroupCompany:
      type: object
      description: >-
        Una empresa del grupo corporativo, identificada por su identidad en el
        registro.
      properties:
        name:
          type: string
          nullable: true
          description: Nombre de la empresa.
        country_code:
          type: string
          nullable: true
          description: País de registro.
        registration_number:
          type: string
          nullable: true
          description: Número de registro.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

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