> ## 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 Select Registro KYB: Recupera il Profilo Aziendale

> Usa POST /v3/kyb/select/ con un kyb_response_id della ricerca nel registro per recuperare il profilo aziendale completo di Didit.

Usa questo endpoint dopo che `POST /v3/kyb/search/` restituisce le aziende candidate.

Select è il livello **Lite**: recupera il profilo dell'azienda e i suoi dirigenti, con addebito al prezzo Lite del paese ([prezzi per paese](https://docs.didit.me/it/getting-started/kyb-registry-pricing.md)). Salva la richiesta come Manual Check nella Business Console e restituisce un `request_id` che puoi usare per recuperare il risultato di verifica aziendale salvato. Per gli azionisti o i titolari effettivi usa [`POST /v3/kyb/shareholders/`](https://docs.didit.me/it/standalone-apis/kyb-registry-shareholders) o [`POST /v3/kyb/ubo/`](https://docs.didit.me/it/standalone-apis/kyb-registry-ubo).

Didit attende che il registro di origine completi la richiesta prima di rispondere, quindi `fetch_status` è `resolved` nella maggior parte delle risposte. Se un registro lento mantiene il profilo in attesa oltre questo tempo, la risposta restituisce `fetch_status: pending` con `data_resolved: false`, e Didit completa automaticamente la verifica salvata non appena il provider termina l'elaborazione. Rileggi il risultato di verifica salvato invece di ripetere la ricerca, perché una nuova ricerca genera nuovi valori `kyb_response_id`.


## OpenAPI

````yaml it/openapi-25.json POST /v3/kyb/select/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/kyb/select/:
    post:
      tags:
        - Standalone APIs
      summary: Selezione azienda nel registro KYB — Livello Lite (autonoma)
      description: >-
        Recupera il profilo di registro **Lite** di un candidato restituito da
        `POST /v3/kyb/search/` — dettagli aziendali, sede legale,
        identificativi, stato, attività e amministratori, oltre al payload
        grezzo del registro. Gli azionisti e i titolari effettivi sono venduti
        tramite `POST /v3/kyb/shareholders/` e `POST /v3/kyb/ubo/`.


        **Abbinamento con la ricerca.** Passa il `kyb_response_id` del candidato
        esattamente come restituito da una ricerca della stessa applicazione.
        L'handle è temporaneo e limitato a quella ricerca — effettua la
        selezione tempestivamente e ripeti la ricerca per ottenere un nuovo
        handle anziché memorizzarlo.


        **Fatturazione.** Ogni selezione viene fatturata al prezzo Lite del
        paese (l'eventuale tariffa di ricerca è separata); vedi [Prezzi del
        registro KYB](/it/getting-started/kyb-registry-pricing). Il saldo viene
        verificato prima di qualsiasi chiamata al registro (`403` in caso di
        saldo insufficiente) e l'addebito viene registrato sulla sessione
        aziendale creata.


        **La persistenza è obbligatoria.** Ogni selezione crea una sessione
        aziendale (il cui id è il `request_id`) in modo da consentire il
        monitoraggio della fatturazione e del recupero; viene visualizzata nella
        console. `save_api_request` è accettato per simmetria ma deve essere
        `true` (impostazione predefinita) — l'invio di `false` restituisce
        `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: >-
            Azienda recuperata e fatturata. `kyb_registry` include il profilo
            completo; verifica `data_resolved` — se `false`, il registro delle
            imprese era ancora in fase di elaborazione e il record salvato si
            completa automaticamente una volta risolto.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      ID della sessione aziendale creata per questo recupero. Il
                      record memorizzato (visibile nella console) continua ad
                      aggiornarsi se la ricerca nel registro viene completata
                      dopo la risposta.
                  registry_tier_requested:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      Il livello venduto da questo endpoint: `basic` (Lite) per
                      select, `shareholders`, `ubo`.
                  registry_tier_delivered:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      Il livello effettivamente fornito e fatturato. Inferiore a
                      quello richiesto quando i registri del paese non
                      contengono dati sull'assetto proprietario, oppure il
                      registro non ha record sull'assetto proprietario per
                      questa azienda.
                  kyb_registry:
                    type: object
                    description: Profilo aziendale completo del registro delle imprese.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                        description: ID Didit per questo record aziendale.
                      node_id:
                        type: string
                        example: feature_kyb_registry
                      status:
                        type: string
                        enum:
                          - Not Finished
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          Valutazione di Didit sulla verifica del registro delle
                          imprese (ad es. `In Review` quando l'azienda non è
                          attiva nel registro o non è stato possibile ricavare i
                          dati sull'assetto proprietario).
                      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: >-
                          Stato aziendale normalizzato come riportato dal
                          registro.
                      data_resolved:
                        type: boolean
                        description: >-
                          `true` quando il registro ha restituito il profilo
                          completo. `false` quando il registro era ancora in
                          elaborazione dopo il polling — il record memorizzato
                          viene completato automaticamente una volta che il
                          registro ha completato l'elaborazione.
                      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: >-
                          Codice della suddivisione quando il registro è
                          regionale (ad es. `CA` per `US-CA`); altrimenti vuoto.
                      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: >-
                          Livello di rischio riportato dal registro delle
                          imprese, se disponibile.
                      verification_status:
                        type: string
                        enum:
                          - verified
                          - failed
                          - unknown
                        nullable: true
                        description: >-
                          Stato di verifica tra giurisdizioni: `verified` quando
                          lo stato nel registro ne attesta la validità operativa
                          (`active`), `failed` quando indica che l'azienda non è
                          più operativa (ad esempio `dissolved`), altrimenti
                          `unknown`. `null` per un'azienda che non proviene da
                          un registro delle imprese e mentre una selezione è
                          ancora `pending`.
                      is_from_registry:
                        type: boolean
                        description: >-
                          Sempre `true` per questo endpoint — il profilo è stato
                          recuperato da un registro ufficiale.
                      fetch_status:
                        type: string
                        enum:
                          - pending
                          - resolved
                        description: >-
                          Ciclo di vita del recupero dal registro delle imprese.
                          Riflesso da `data_resolved`.
                      alternative_names:
                        type: string
                        nullable: true
                        description: >-
                          Denominazioni aziendali alternative, commerciali,
                          precedenti o nella lingua originale sotto forma di
                          testo, se segnalate.
                      nature_of_business:
                        type: string
                        nullable: true
                        description: >-
                          Descrizione dell'attività o codice di classificazione,
                          se segnalato.
                      registered_capital:
                        type: string
                        nullable: true
                      registered_capital_amount:
                        type: string
                        nullable: true
                        description: >-
                          Importo decimale sotto forma di stringa, se
                          comunicato.
                      registered_capital_currency:
                        type: string
                        nullable: true
                        description: Codice ISO 4217, se indicato.
                      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, se segnalato.
                      location_of_registration:
                        type: string
                        nullable: true
                        description: >-
                          Registro delle imprese/giurisdizione presso cui
                          l'azienda è registrata, se indicati.
                      vat_number:
                        type: string
                        nullable: true
                        description: >-
                          Partita IVA UE, se raccolta durante il passaggio del
                          registro ospitato o modificata successivamente. Al
                          momento della selezione in genere non è ancora
                          impostata: la validazione della partita IVA e
                          dell'identificativo fiscale viene eseguita quando
                          l'utente finale invia il passaggio del registro nel
                          flusso ospitato.
                      vat_validation_status:
                        type: string
                        enum:
                          - valid
                          - invalid
                          - format_valid
                          - invalid_format
                          - could_not_validate
                          - not_applicable
                        description: >-
                          Risultato della validazione della partita IVA o,
                          qualora non presente, del `tax_number`, al momento
                          dell'invio al registro. `valid` / `invalid`: stabilito
                          dal registro ufficiale del paese (VIES UE, Norvegia,
                          Svizzera, Brasile, Colombia, Costa Rica, Ecuador,
                          Paraguay; per la Polonia anche dal registro IVA
                          nazionale). `format_valid` / `invalid_format`:
                          stabilito dalle regole di formato e cifra di controllo
                          del paese laddove non sia possibile interrogare alcun
                          registro. `could_not_validate`: il registro non era
                          disponibile. `not_applicable`: nessun numero, paese
                          privo di registro o regole, oppure sessione sandbox.
                      vat_validated_number:
                        type: string
                        nullable: true
                        description: >-
                          Il numero verificato, così come noto alla fonte (ad
                          esempio la partita IVA derivata da un SIREN francese o
                          un RSIN olandese). `null` quando non è stato eseguito
                          alcun controllo.
                      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 fonte che ha stabilito `vat_validation_status`: un
                          registro ufficiale, oppure `format_rules`. `null` se
                          non è stato eseguito alcun controllo.
                      vat_validated_name:
                        type: string
                        nullable: true
                        description: >-
                          Nome registrato presso la fonte che ha validato il
                          numero, quando ne fornisce uno. Impostato solo quando
                          lo stato è `valid`.
                      vat_validated_address:
                        type: string
                        nullable: true
                        description: >-
                          Indirizzo registrato presso la fonte che ha
                          convalidato il numero, quando ne comunica uno.
                          Impostato solo quando lo stato è `valid`.
                      vat_checked_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Timestamp del controllo. `null` se non è stato
                          eseguito alcun controllo.
                      financial_summary:
                        type: object
                        nullable: true
                        description: >-
                          Dettagli sulle azioni/sul capitale riportati dal
                          registro delle imprese (valuta, azioni totali,
                          categorie di azioni), se disponibili.
                      officers:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                              format: uuid
                            name:
                              type: string
                              example: MELISSA BETHELL
                            designation:
                              type: string
                              nullable: true
                              description: >-
                                Denominazione del registro non elaborata (ad es.
                                `Director`, `Secretary`).
                            role:
                              type: string
                              description: >-
                                Ruolo normalizzato derivato dalla qualifica. Set
                                completo di 17 valori del modello; l'analisi del
                                registro su questo endpoint genera tipicamente
                                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` quando il registro contrassegna
                                l'incarico come terminato per dimissioni.
                            kyc_status:
                              type: string
                              nullable: true
                              enum:
                                - Approved
                                - Declined
                                - Pending
                              description: >-
                                Stato di una sessione KYC associata, se ne è
                                stata avviata una per questo funzionario. `null`
                                altrimenti.
                            kyc_session_url:
                              type: string
                              nullable: true
                              description: >-
                                URL di verifica della sessione KYC associata, se
                                esistente.
                            first_name:
                              type: string
                              nullable: true
                              description: >-
                                Nome quando esplicitamente riportato dal
                                registro; non dedotto dal nome completo.
                            last_name:
                              type: string
                              nullable: true
                              description: >-
                                Cognome quando esplicitamente riportato dal
                                registro.
                            address:
                              type: string
                              nullable: true
                              description: >-
                                Indirizzo dell'amministratore riportato dal
                                registro.
                            appointment_date:
                              type: string
                              nullable: true
                              description: Data di nomina dell'amministratore.
                              format: date
                            termination_date:
                              type: string
                              nullable: true
                              description: Data di fine dell'incarico, quando indicata.
                              format: date
                            date_of_birth:
                              type: string
                              nullable: true
                              description: >-
                                Data di nascita completa comunicata dal registro
                                delle imprese. Null se sono noti solo l'anno o
                                il mese di nascita.
                              format: date
                            date_of_birth_year:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 9999
                              description: >-
                                Anno di nascita riportato dal registro delle
                                imprese, anche quando la data completa non è
                                disponibile.
                            date_of_birth_month:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 12
                              description: >-
                                Mese di nascita riportato dal registro delle
                                imprese. Null se è noto solo l'anno.
                        description: >-
                          Amministratori, segretari e altri dirigenti estratti
                          dal 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: >-
                                Indica se il titolare è una persona fisica o
                                un'entità aziendale.
                            roles:
                              type: array
                              items:
                                type: string
                              description: >-
                                Ruoli normalizzati (ad es. `ubo`,
                                `shareholder`).
                            ownership_min_shares:
                              type: string
                              nullable: true
                              description: >-
                                Limite inferiore della fascia di assetto
                                proprietario riportata dal registro (ad es.
                                `25%`).
                            ownership_max_shares:
                              type: string
                              nullable: true
                              description: >-
                                Limite superiore della fascia di assetto
                                proprietario riportata dal registro delle
                                imprese.
                            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: >-
                                Percentuale di assetto proprietario analizzata
                                (limite massimo, con fallback al limite minimo).
                            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: Data di nascita completa, se indicata.
                              format: date
                            appointment_date:
                              type: string
                              nullable: true
                              description: Data di nomina, se comunicata.
                              format: date
                            shareholding:
                              $ref: '#/components/schemas/KYBRegistryShareholding'
                        description: >-
                          Titolari effettivi / persone con controllo
                          significativo estratti dal registro. Può essere vuoto
                          se il registro non espone l'assetto proprietario.
                      addresses:
                        type: array
                        nullable: true
                        description: >-
                          Ogni indirizzo indicato dal registro, in un formato
                          canonico. Null se non ne indica alcuno.
                        items:
                          $ref: '#/components/schemas/KYBRegistryAddress'
                      industries:
                        type: array
                        nullable: true
                        description: >-
                          Le attività con cui il registro classifica l'azienda,
                          in formato canonico. Null quando non ne viene indicata
                          alcuna.
                        items:
                          $ref: '#/components/schemas/KYBRegistryIndustry'
                      accounts:
                        type: object
                        nullable: true
                        additionalProperties: true
                        description: >-
                          Date di deposito presso il registro delle imprese, se
                          disponibili. Le dichiarazioni annuali e le assemblee
                          generali utilizzano last_annual_return_date e
                          last_agm_date; sono distinte dai bilanci di esercizio.
                      registry_data:
                        $ref: '#/components/schemas/KYBRegistryData'
                      user_provided_data:
                        type: object
                        nullable: true
                        description: >-
                          Sempre `null` su questo endpoint (utilizzato dal
                          flusso KYB ospitato quando gli utenti finali
                          modificano i dati del registro).
                      confirmed_by_user_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: Sempre `null` su questo endpoint.
                      last_console_edit_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Impostato quando un revisore della console modifica il
                          record in un secondo momento.
                      is_editable:
                        type: boolean
                        description: >-
                          Indica se i dati provenienti dal registro delle
                          imprese possono ancora essere modificati nel flusso
                          ospitato o nella console.
                      registry_tier_delivered:
                        type: string
                        enum:
                          - basic
                          - shareholders
                          - ubo
                        description: >-
                          Corrisponde al valore di primo livello
                          `registry_tier_delivered`.
                      registry_ownership_status:
                        type: string
                        nullable: true
                        enum:
                          - not_requested
                          - delivered
                          - not_held
                          - unavailable
                        description: >-
                          `delivered` quando i dati sull'assetto proprietario
                          sono stati restituiti, `not_held` quando il registro
                          delle imprese ha risposto e non elenca questa azienda
                          (vedi `registry_data.ownership_error`), `unavailable`
                          quando è stato richiesto un livello di assetto
                          proprietario ma il registro non ne disponeva per
                          questa azienda o non è stato possibile interrogarlo
                          (vedi `registry_data.ownership_error`),
                          `not_requested` per il livello Lite.
                      ownership:
                        $ref: '#/components/schemas/KYBRegistryOwnership'
                      registry_tier:
                        type: string
                        nullable: true
                        description: >-
                          Il livello del registro ordinato dal workflow:
                          `basic`, `shareholders` o `ubo`. Anche in
                          `ownership.tier_requested`.
                      registry_monitoring:
                        type: object
                        nullable: true
                        description: >-
                          Il monitoraggio del registro più recente per
                          l'azienda, o `null` quando non ne esiste alcuno.
                        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: I campi aziendali che il monitor monitora.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Eco del `vendor_data` inviato.
                  metadata:
                    type: object
                    nullable: true
                    description: Eco del `metadata` inviato.
                  created_at:
                    type: string
                    format: date-time
              examples:
                Resolved company:
                  summary: >-
                    Profilo completo del registro delle imprese (elenco degli
                    amministratori troncato per brevità)
                  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 selezione è rimasta in sospeso dopo il polling — campi
                    sparsi, completamento automatico lato server
                  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: >-
            Errore di validazione. I problemi a livello di campo utilizzano
            l'involucro standard di DRF. Un paese non coperto dai registri
            restituisce `400` con `code: kyb_registry_country_unsupported`.
          content:
            application/json:
              examples:
                Missing kyb_response_id:
                  summary: '`kyb_response_id` è obbligatorio'
                  value:
                    kyb_response_id:
                      - This field is required.
                save_api_request=false rejected:
                  summary: Le selezioni vengono sempre salvate in modo persistente
                  value:
                    save_api_request:
                      - >-
                        KYB registry select must be saved so billing and
                        retrieval can be tracked.
                Country not covered:
                  summary: Nessun registro delle imprese è disponibile per il paese
                  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: >-
            Autorizzazione negata. Restituito quando l'intestazione `x-api-key`
            è mancante e anche quando il saldo dell'organizzazione chiamante non
            è sufficiente a coprire la chiamata; una chiave errata, revocata o
            scaduta restituisce `401`. Una chiave mancante restituisce `403` con
            `{"detail": ...}`; una chiave errata, revocata o scaduta restituisce
            `401`. Crediti insufficienti restituiscono `403` con `{"error":
            ...}` prima che avvenga qualsiasi screening o chiamata al provider.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Nessuna intestazione `x-api-key`, oppure la chiave non è
                    valida/revocata
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: >-
                    Il saldo dell'organizzazione non è sufficiente per coprire
                    la chiamata
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Limite di frequenza superato. Gli endpoint POST/PATCH/DELETE
            condividono un budget di 300 richieste di scrittura al minuto per
            chiave API (la creazione di transazioni e l'ingestione di eventi
            hanno un budget separato di 600). La risposta contiene le
            intestazioni `X-RateLimit-Limit`, `X-RateLimit-Remaining`,
            `X-RateLimit-Reset` e `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Più di 300 richieste di scrittura nel minuto corrente
                  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: >-
            Handle del candidato da `POST /v3/kyb/search/`
            (`kyb_registry.companies[].kyb_response_id`). Effimero: usalo poco
            dopo la ricerca che lo ha generato. Gli handle possono essere
            lunghi, quindi memorizza e invia il valore esattamente come
            restituito, senza troncarlo o presumere una lunghezza.
          example: 69aeeb95febb0f1704042259
        vendor_data:
          type: string
          description: >-
            Il tuo identificatore per questa azienda; restituito nella risposta
            e memorizzato con la sessione aziendale.
        metadata:
          type: object
          nullable: true
          description: >-
            JSON a struttura libera memorizzato con la sessione aziendale e
            restituito nella risposta.
        save_api_request:
          type: boolean
          default: true
          description: >-
            Deve essere `true` (valore predefinito). Le selezioni dal registro
            KYB vengono sempre salvate per consentire il tracciamento della
            fatturazione e del recupero; `false` restituisce `400`.
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        La quota detenuta da un titolare, nello stesso formato per ogni paese e
        registro di origine. Null quando il registro non indica alcuna
        partecipazione. Una fascia (ad esempio il 25-50% di un PSC nel Regno
        Unito) non costituisce una partecipazione: `percentage` è null e la
        fascia rimane in `ownership_min_shares` / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Classe o tipologia di quota, come denominata dal registro.
        number_of_shares:
          type: number
          nullable: true
          description: Numero di azioni detenute.
        currency:
          type: string
          nullable: true
          description: Valuta ISO 4217 dei valori sottostanti.
        nominal_value:
          type: number
          nullable: true
          description: Valore nominale per azione.
        total_value:
          type: number
          nullable: true
          description: Valore totale della partecipazione.
        percentage:
          type: number
          nullable: true
          description: Quota esatta in percentuale, con quattro cifre decimali.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Un indirizzo indicato dal registro, nello stesso formato per ogni paese
        e fonte del registro. Tutte le chiavi sono sempre presenti; una parte
        non pubblicata dal registro è null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Tipo di indirizzo in lettere minuscole: `registered` per la sede
            legale; altri tipi così come denominati dal registro (ad esempio
            `postal`, `office`). `null` quando il registro non specifica il tipo
            di indirizzo.
        address:
          type: string
          description: >-
            L'indirizzo completo su una sola riga. Sempre presente per ogni
            indirizzo.
        street:
          type: string
          nullable: true
          description: Via e numero civico.
        city:
          type: string
          nullable: true
          description: Città o località.
        postal_code:
          type: string
          nullable: true
          description: Codice postale.
        region:
          type: string
          nullable: true
          description: Regione, stato o provincia.
        country_code:
          type: string
          nullable: true
          description: Codice paese ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: L'etichetta del registro per l'indirizzo, se fornita.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Un'attività con cui il registro classifica l'azienda, nello stesso
        formato per ogni paese e fonte del registro.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Codice di attività così come riportato dal registro (ad esempio
            `73110`).
        description:
          type: string
          nullable: true
          description: Etichetta dell'attività, se pubblicata dal registro.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistema di classificazione, un solo nome per sistema
            indipendentemente dalla fonte che lo ha segnalato: `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`; gli altri
            sistemi nazionali mantengono il nome assegnato dal registro. Null
            quando il registro non specifica il sistema.
        is_primary:
          type: boolean
          description: >-
            True per l'attività principale dell'azienda. Esattamente una voce è
            primaria quando l'elenco non è vuoto.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Dettaglio normalizzato del registro delle imprese fornito da Didit per
        l'azienda: l'esito sull'assetto proprietario (`ownership_error`,
        `section_errors`, `ubo_resolution`, `lite_enrichment`), le correzioni
        apportate con update-data e i dati di registro privi di un campo
        dedicato. Non contiene mai il record grezzo della fonte del registro.
        Ogni chiave è opzionale e presente solo quando l'azienda dispone di un
        valore corrispondente; potrebbero essere aggiunte nuove chiavi. Fai
        riferimento ai campi canonici (`addresses`, `industries`, `ownership`,
        `beneficial_owners[].shareholding`) per tutti i dati coperti da essi.
      properties:
        company_name:
          type: string
          description: Ragione sociale corretta nella console.
        registration_number:
          type: string
          description: >-
            Numero di registrazione indicato dal registro delle imprese o da una
            correzione nella console.
        country_code:
          type: string
          description: >-
            Paese della registrazione come indicato dal registro o da una
            correzione della console.
        region:
          type: string
          description: Regione o stato della registrazione.
        incorporation_date:
          type: string
          description: Data di costituzione (ISO 8601).
        registration_date:
          type: string
          description: >-
            Data di registrazione (ISO 8601) quando il registro delle imprese ne
            indica una distinta rispetto alla data di costituzione.
        dissolution_date:
          type: string
          description: Data di scioglimento (ISO 8601) quando indicata dal registro.
        tax_number:
          type: string
          description: Identificativo fiscale.
        vat_number:
          type: string
          description: Partita IVA.
        legal_address:
          type: string
          description: Sede legale corretta nella console.
        registered_address:
          type: string
          description: Sede legale così come riportata nel registro.
        company_type:
          type: string
          description: Forma giuridica.
        registry_status:
          type: string
          description: Stato dell'azienda presso il registro delle imprese.
        verification_status:
          type: string
          description: Stato della verifica.
        alternative_names:
          type: string
          description: Altre denominazioni con cui l'azienda opera o ha operato in passato.
        nature_of_business:
          type: string
          description: Descrizione dell'attività.
        registered_capital:
          type: string
          description: Capitale sociale come stampato.
        registered_capital_amount:
          type: string
          description: Importo del capitale sociale, come stringa decimale.
        registered_capital_currency:
          type: string
          description: Valuta del capitale sociale (ISO 4217).
        website:
          type: string
          description: Sito web.
        email:
          type: string
          description: Email di contatto.
        phone:
          type: string
          description: Telefono di contatto.
        legal_entity_identifier:
          type: string
          description: Identificativo dell'entità giuridica (LEI).
        location_of_registration:
          type: string
          description: Luogo di registrazione.
        control_scheme:
          type: string
          description: Modello di governance quando il registro lo espone.
        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: >-
            Il motivo per cui un livello dell'assetto proprietario richiesto non
            è stato consegnato, con gli stessi codici di
            `ownership.unavailable_reason`. `no_owners_on_record` (il registro
            ha risposto e non indica alcun proprietario) e
            `ownership_section_unavailable` (il registro non ha restituito la
            sezione dell'assetto proprietario) sono esiti differenti.
        section_errors:
          type: object
          description: >-
            Sezioni non restituite dal registro delle imprese, indicizzate per
            sezione (`officers`, `shareholders`, `group_structure`). Una sezione
            elencata qui non è mai stata consegnata: un elenco vuoto accanto ad
            essa non indica nulla sull'azienda.
          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: >-
            I campi del registro relativi all'azienda, indicizzati con i nomi
            attribuiti dal registro, come valori semplici (record legacy). Sono
            inclusi solo i campi revisionati come fatti di registro.
        registry_sources:
          type: array
          description: >-
            I registri ufficiali da cui è stato letto il record (record legacy).
            Le altre fonti non vengono indicate per nome.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nomi con cui l'azienda era registrata in precedenza (record
            storici).
        parent_companies:
          type: array
          items:
            type: string
          description: Società controllanti indicate dal registro (record legacy).
        documents_available:
          type: integer
          description: Quante pratiche offre il registro per l'azienda (record storici).
    KYBRegistryOwnership:
      type: object
      description: >-
        L'esito del livello relativo all'assetto proprietario (Azionisti / UBO),
        nello stesso formato per ogni paese e fonte del registro.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` quando il registro ha pubblicato l'assetto proprietario;
            `not_held` quando il registro delle imprese ha risposto e non elenca
            affatto l'azienda (vedi `unavailable_reason`); `unavailable` quando
            non ha fornito i dati sull'assetto proprietario per qualsiasi altro
            motivo (vedi `unavailable_reason`); `pending` mentre il registro lo
            sta ancora recuperando; `not_requested` per il livello Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: Il livello ordinato dal workflow.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            Il livello fornito dal registro (e fatturato). Una richiesta UBO con
            risposta contenente solo azionisti diretti è `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: >-
            Il motivo per cui un livello dell'assetto proprietario richiesto non
            è stato consegnato. Null a meno che `status` non sia `unavailable` o
            `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True quando le quote dichiarate degli azionisti diretti ammontano al
            100% (entro un punto percentuale dovuto all'arrotondamento); false
            quando non è così; null quando l'assetto proprietario non è stato
            fornito o una quota non è dichiarata.
        unresolved:
          type: array
          description: >-
            Parti della catena proprietaria che il registro non è riuscito a
            risolvere, ad esempio nessuna struttura di gruppo registrata sopra i
            proprietari diretti.
          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 sezione non restituita dal registro.
      properties:
        status_code:
          type: integer
          nullable: true
          description: Lo stato restituito dal registro per la sezione.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        In che modo il livello UBO ha risalito la catena proprietaria a monte
        dell'azienda.
      properties:
        parent_chain:
          type: array
          description: Società controllanti, dalla controllante finale fino all'azienda.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Aziende direttamente controllate dall'azienda all'interno del suo
            gruppo societario.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Parti della catena che il registro non è riuscito a risolvere (le
            stesse voci di `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Il motivo, ad esempio `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` o `section_error`.
              section:
                type: string
                nullable: true
                description: La sezione interessata, ad esempio `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Campi vuoti del profilo Lite compilati da un'altra delle fonti del
        registro del paese. La fonte non viene specificata.
      properties:
        fields:
          type: array
          items:
            type: string
          description: I campi aziendali che sono stati compilati.
        people_added:
          type: integer
          description: Quanti amministratori o titolari sono stati aggiunti.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Un registro ufficiale da cui è stato letto il record. Vengono indicati
        solo i registri governativi ufficiali, le autorità di regolamentazione e
        il sistema di identificazione ufficiale; qualsiasi altra fonte viene
        esclusa.
      properties:
        name:
          type: string
          description: Nome del registro, ad esempio `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Sempre `official`.
      required:
        - name
        - source_type
    KYBRegistryGroupCompany:
      type: object
      description: >-
        Un'azienda del gruppo societario, identificata tramite il registro delle
        imprese.
      properties:
        name:
          type: string
          nullable: true
          description: Ragione sociale.
        country_code:
          type: string
          nullable: true
          description: Paese di registrazione.
        registration_number:
          type: string
          nullable: true
          description: Numero di registrazione.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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