> ## 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 Pilih Registri KYB: Ambil Profil Perusahaan

> Didit: ambil profil perusahaan registri KYB lengkap (berbayar) via POST /v3/kyb/select/ dengan kyb_response_id dari pencarian registri.

Gunakan endpoint ini setelah `POST /v3/kyb/search/` mengembalikan kandidat perusahaan.

Select adalah tingkat **Lite**: endpoint ini mengambil profil perusahaan beserta pejabatnya, dan ditagih sesuai harga Lite negara tersebut ([harga per negara](https://docs.didit.me/id/getting-started/kyb-registry-pricing.md)). Endpoint ini menyimpan permintaan sebagai Manual Check di Business Console dan mengembalikan `request_id` yang dapat Anda gunakan untuk mengambil hasil verifikasi bisnis yang tersimpan. Untuk pemegang saham atau pemilik manfaat akhir, gunakan [`POST /v3/kyb/shareholders/`](https://docs.didit.me/id/standalone-apis/kyb-registry-shareholders) atau [`POST /v3/kyb/ubo/`](https://docs.didit.me/id/standalone-apis/kyb-registry-ubo).

Didit menunggu registri sumber menyelesaikan prosesnya sebelum merespons, sehingga `fetch_status` bernilai `resolved` pada sebagian besar respons. Jika registri yang lambat membuat profil tetap tertunda melewati waktu tunggu tersebut, respons akan mengembalikan `fetch_status: pending` dengan `data_resolved: false`. Didit akan menyelesaikan pemeriksaan yang tersimpan secara otomatis begitu penyedia menyelesaikan prosesnya. Baca kembali hasil verifikasi yang tersimpan alih-alih mengulang pencarian, karena pencarian baru akan menerbitkan nilai `kyb_response_id` yang baru.


## OpenAPI

````yaml id/openapi-25.json POST /v3/kyb/select/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/kyb/select/:
    post:
      tags:
        - Standalone APIs
      summary: Pemilihan perusahaan registri KYB — tingkat Lite (mandiri)
      description: >-
        Ambil profil registri **Lite** dari satu kandidat yang dikembalikan oleh
        `POST /v3/kyb/search/` — detail perusahaan, alamat terdaftar,
        pengidentifikasi, status, aktivitas, dan para pengurus, ditambah payload
        mentah registri. Pemegang saham dan pemilik manfaat akhir (UBO) dijual
        melalui `POST /v3/kyb/shareholders/` dan `POST /v3/kyb/ubo/`.


        **Penyandingan dengan pencarian.** Teruskan `kyb_response_id` kandidat
        persis seperti yang dikembalikan oleh pencarian pada aplikasi yang sama.
        Handle ini bersifat sementara dan hanya berlaku untuk pencarian tersebut
        — lakukan pemilihan segera, dan cari ulang untuk mendapatkan handle baru
        daripada menyimpannya.


        **Penagihan.** Setiap pemilihan ditagih sesuai harga Lite negara
        tersebut (biaya pencarian apa pun terpisah); lihat [Harga registri
        KYB](/id/getting-started/kyb-registry-pricing). Saldo diperiksa sebelum
        panggilan registri apa pun (`403` jika tidak mencukupi) dan biaya
        dicatat pada sesi bisnis yang dibuat.


        **Persistensi wajib dilakukan.** Setiap pemilihan membuat sesi bisnis
        (id-nya adalah `request_id`) sehingga penagihan dan pengambilan data
        dapat dilacak; sesi ini muncul di konsol. `save_api_request` diterima
        demi keselarasan struktur tetapi harus bernilai `true` (default) —
        mengirimkan `false` akan mengembalikan `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: >-
            Perusahaan diambil dan ditagih. `kyb_registry` memuat profil
            lengkap; periksa `data_resolved` — jika `false`, registri masih
            memproses, dan rekaman yang disimpan akan dilengkapi secara otomatis
            setelah registri menyelesaikan pemrosesan.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      ID sesi bisnis yang dibuat untuk pengambilan ini. Catatan
                      yang disimpan (terlihat di konsol) terus diperbarui jika
                      registri berhasil menyelesaikan pencarian setelah respons.
                  registry_tier_requested:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      Tingkat yang dijual endpoint ini: `basic` (Lite) untuk
                      opsi tertentu, `shareholders`, `ubo`.
                  registry_tier_delivered:
                    type: string
                    enum:
                      - basic
                      - shareholders
                      - ubo
                    description: >-
                      Tingkat yang benar-benar dikirimkan dan ditagihkan. Lebih
                      rendah dari yang diminta jika registri negara tersebut
                      tidak menyimpan data kepemilikan, atau registri tidak
                      memiliki catatan kepemilikan untuk perusahaan ini.
                  kyb_registry:
                    type: object
                    description: Profil perusahaan registri lengkap.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                        description: ID Didit untuk catatan perusahaan ini.
                      node_id:
                        type: string
                        example: feature_kyb_registry
                      status:
                        type: string
                        enum:
                          - Not Finished
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          Penilaian Didit atas pemeriksaan registri (misalnya
                          `In Review` ketika perusahaan tidak aktif di registri
                          atau data kepemilikan tidak dapat diturunkan).
                      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: >-
                          Status perusahaan yang dinormalisasi sebagaimana
                          dilaporkan oleh registri.
                      data_resolved:
                        type: boolean
                        description: >-
                          `true` setelah registri mengembalikan profil lengkap.
                          `false` jika registri masih memproses setelah polling
                          — data yang disimpan akan selesai secara otomatis
                          setelah registri selesai memproses.
                      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: >-
                          Kode subdivisi jika registri bersifat regional
                          (misalnya `CA` untuk `US-CA`); kosong jika tidak.
                      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: >-
                          Tingkat risiko yang dilaporkan registri, jika
                          tersedia.
                      verification_status:
                        type: string
                        enum:
                          - verified
                          - failed
                          - unknown
                        nullable: true
                        description: >-
                          Status verifikasi lintas yurisdiksi: `verified` ketika
                          status registri menetapkan status hukum aktif
                          (`active`), `failed` ketika menyatakan bahwa
                          perusahaan tidak lagi berstatus baik (misalnya
                          `dissolved`), jika tidak maka `unknown`. Bernilai
                          `null` untuk perusahaan yang tidak berasal dari
                          registri dan selama pemilihan masih `pending`.
                      is_from_registry:
                        type: boolean
                        description: >-
                          Selalu `true` untuk endpoint ini — profil diambil dari
                          registri resmi.
                      fetch_status:
                        type: string
                        enum:
                          - pending
                          - resolved
                        description: >-
                          Siklus hidup pengambilan registri. Dicerminkan oleh
                          `data_resolved`.
                      alternative_names:
                        type: string
                        nullable: true
                        description: >-
                          Nama perusahaan alternatif, nama dagang, nama
                          terdahulu, atau nama dalam bahasa asli sebagai teks,
                          jika dilaporkan.
                      nature_of_business:
                        type: string
                        nullable: true
                        description: >-
                          Deskripsi aktivitas atau kode klasifikasi, jika
                          dilaporkan.
                      registered_capital:
                        type: string
                        nullable: true
                      registered_capital_amount:
                        type: string
                        nullable: true
                        description: Jumlah desimal sebagai string, saat dilaporkan.
                      registered_capital_currency:
                        type: string
                        nullable: true
                        description: Kode ISO 4217, saat dilaporkan.
                      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, jika dilaporkan.
                      location_of_registration:
                        type: string
                        nullable: true
                        description: >-
                          Registri/yurisdiksi tempat perusahaan terdaftar, jika
                          dilaporkan.
                      vat_number:
                        type: string
                        nullable: true
                        description: >-
                          Nomor PPN Uni Eropa, saat dikumpulkan selama langkah
                          registri yang di-hosting atau diedit sesudahnya. Saat
                          dipilih, nilai ini biasanya belum ditetapkan —
                          validasi PPN dan ID pajak dijalankan ketika pengguna
                          akhir mengirimkan langkah registri dalam alur yang
                          di-hosting.
                      vat_validation_status:
                        type: string
                        enum:
                          - valid
                          - invalid
                          - format_valid
                          - invalid_format
                          - could_not_validate
                          - not_applicable
                        description: >-
                          Hasil validasi nomor PPN atau, jika tidak ada,
                          `tax_number`, saat pengiriman ke registri. `valid` /
                          `invalid`: ditentukan oleh registri resmi negara (EU
                          VIES, Norwegia, Swiss, Brasil, Kolombia, Kosta Rika,
                          Ekuador, Paraguay; Polandia juga melalui registri PPN
                          domestiknya). `format_valid` / `invalid_format`:
                          ditentukan oleh aturan format dan digit centang negara
                          tersebut jika tidak ada registri yang dapat dikueri.
                          `could_not_validate`: registri tidak tersedia.
                          `not_applicable`: tidak ada nomor, negara tanpa
                          registri atau aturan, atau sesi sandbox.
                      vat_validated_number:
                        type: string
                        nullable: true
                        description: >-
                          Nomor yang diperiksa, sebagaimana diketahui oleh
                          sumber (misalnya nomor PPN yang diperoleh dari SIREN
                          Prancis atau RSIN Belanda). `null` jika tidak ada
                          pemeriksaan yang dijalankan.
                      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: >-
                          Sumber yang menentukan `vat_validation_status`:
                          registri resmi, atau `format_rules`. `null` jika tidak
                          ada pemeriksaan yang dijalankan.
                      vat_validated_name:
                        type: string
                        nullable: true
                        description: >-
                          Nama yang terdaftar pada sumber yang memvalidasi nomor
                          tersebut, jika menyediakannya. Hanya ditetapkan saat
                          statusnya `valid`.
                      vat_validated_address:
                        type: string
                        nullable: true
                        description: >-
                          Alamat yang terdaftar pada sumber yang memvalidasi
                          nomor tersebut, jika sumber mengungkapkannya. Hanya
                          diisi jika statusnya `valid`.
                      vat_checked_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Cap waktu pemeriksaan. `null` jika tidak ada
                          pemeriksaan yang dilakukan.
                      financial_summary:
                        type: object
                        nullable: true
                        description: >-
                          Detail saham/modal yang dilaporkan registri (mata
                          uang, total saham, kelas saham), jika tersedia.
                      officers:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                              format: uuid
                            name:
                              type: string
                              example: MELISSA BETHELL
                            designation:
                              type: string
                              nullable: true
                              description: >-
                                Penetapan registri mentah (misalnya `Director`,
                                `Secretary`).
                            role:
                              type: string
                              description: >-
                                Peran yang dinormalisasi yang diturunkan dari
                                sebutan. Kumpulan model 17 nilai lengkap;
                                penguraian registri pada endpoint ini biasanya
                                menghasilkan director, non_executive_director,
                                secretary, chairman, atau 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` saat registri menandai pengangkatan
                                telah berakhir karena pengunduran diri.
                            kyc_status:
                              type: string
                              nullable: true
                              enum:
                                - Approved
                                - Declined
                                - Pending
                              description: >-
                                Status sesi KYC terkait, jika ada yang dimulai
                                untuk pejabat ini. Jika tidak, bernilai `null`.
                            kyc_session_url:
                              type: string
                              nullable: true
                              description: URL verifikasi dari sesi KYC terkait, jika ada.
                            first_name:
                              type: string
                              nullable: true
                              description: >-
                                Nama depan ketika dilaporkan secara eksplisit
                                oleh registri; tidak disimpulkan dari nama
                                lengkap.
                            last_name:
                              type: string
                              nullable: true
                              description: >-
                                Nama keluarga ketika dilaporkan secara eksplisit
                                oleh registri.
                            address:
                              type: string
                              nullable: true
                              description: Alamat pejabat yang dilaporkan oleh registri.
                            appointment_date:
                              type: string
                              nullable: true
                              description: Tanggal petugas diangkat.
                              format: date
                            termination_date:
                              type: string
                              nullable: true
                              description: Tanggal pengangkatan berakhir, jika dilaporkan.
                              format: date
                            date_of_birth:
                              type: string
                              nullable: true
                              description: >-
                                Tanggal lahir lengkap yang dilaporkan registri.
                                Bernilai null jika hanya tahun atau bulan lahir
                                yang diketahui.
                              format: date
                            date_of_birth_year:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 9999
                              description: >-
                                Tahun lahir yang dilaporkan registri, termasuk
                                saat tanggal lengkap tidak tersedia.
                            date_of_birth_month:
                              type: integer
                              nullable: true
                              minimum: 1
                              maximum: 12
                              description: >-
                                Bulan lahir yang dilaporkan registri. Null jika
                                hanya tahun yang diketahui.
                        description: >-
                          Direktur, sekretaris, dan petugas lainnya yang
                          diekstrak dari registri.
                      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: >-
                                Apakah pemiliknya adalah perorangan atau entitas
                                korporat.
                            roles:
                              type: array
                              items:
                                type: string
                              description: >-
                                Peran yang dinormalisasi (misalnya `ubo`,
                                `shareholder`).
                            ownership_min_shares:
                              type: string
                              nullable: true
                              description: >-
                                Batas bawah rentang kepemilikan yang dilaporkan
                                oleh registri (misalnya `25%`).
                            ownership_max_shares:
                              type: string
                              nullable: true
                              description: >-
                                Batas atas rentang kepemilikan yang dilaporkan
                                oleh registri.
                            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: >-
                                Persentase kepemilikan terurai (batas maksimum,
                                beralih ke batas minimum jika tidak ada).
                            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: Tanggal lahir lengkap jika dilaporkan.
                              format: date
                            appointment_date:
                              type: string
                              nullable: true
                              description: Tanggal penunjukan saat dilaporkan.
                              format: date
                            shareholding:
                              $ref: '#/components/schemas/KYBRegistryShareholding'
                        description: >-
                          Pemilik manfaat / pihak dengan kendali signifikan yang
                          diekstrak dari registri. Dapat bernilai kosong jika
                          registri tidak mencantumkan kepemilikan.
                      addresses:
                        type: array
                        nullable: true
                        description: >-
                          Setiap alamat yang dinyatakan oleh registri, satu
                          bentuk kanonikal. Null jika tidak ada yang dinyatakan.
                        items:
                          $ref: '#/components/schemas/KYBRegistryAddress'
                      industries:
                        type: array
                        nullable: true
                        description: >-
                          Aktivitas yang diklasifikasikan oleh registri untuk
                          perusahaan, dalam satu format kanonis. Bernilai null
                          jika tidak ada yang dinyatakan.
                        items:
                          $ref: '#/components/schemas/KYBRegistryIndustry'
                      accounts:
                        type: object
                        nullable: true
                        additionalProperties: true
                        description: >-
                          Tanggal pengajuan registri, jika tersedia. Laporan
                          tahunan dan rapat umum menggunakan
                          last_annual_return_date dan last_agm_date; keduanya
                          berbeda dari laporan keuangan.
                      registry_data:
                        $ref: '#/components/schemas/KYBRegistryData'
                      user_provided_data:
                        type: object
                        nullable: true
                        description: >-
                          Selalu `null` pada endpoint ini (digunakan oleh alur
                          KYB yang di-hosting saat pengguna akhir mengedit data
                          registri).
                      confirmed_by_user_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: Selalu `null` pada endpoint ini.
                      last_console_edit_at:
                        type: string
                        format: date-time
                        nullable: true
                        description: >-
                          Ditetapkan saat peninjau konsol mengedit catatan
                          tersebut nanti.
                      is_editable:
                        type: boolean
                        description: >-
                          Apakah data yang bersumber dari registri masih dapat
                          diedit di alur yang di-hosting atau di konsol.
                      registry_tier_delivered:
                        type: string
                        enum:
                          - basic
                          - shareholders
                          - ubo
                        description: >-
                          Sama dengan `registry_tier_delivered` di tingkat
                          teratas.
                      registry_ownership_status:
                        type: string
                        nullable: true
                        enum:
                          - not_requested
                          - delivered
                          - not_held
                          - unavailable
                        description: >-
                          `delivered` saat data kepemilikan berhasil diperoleh,
                          `not_held` saat registri kepemilikan merespons dan
                          tidak mencantumkan perusahaan ini (lihat
                          `registry_data.ownership_error`), `unavailable` saat
                          tingkat kepemilikan diminta tetapi registri tidak
                          memilikinya untuk perusahaan ini atau tidak dapat
                          dimintai keterangan (lihat
                          `registry_data.ownership_error`), `not_requested` pada
                          tingkat Lite.
                      ownership:
                        $ref: '#/components/schemas/KYBRegistryOwnership'
                      registry_tier:
                        type: string
                        nullable: true
                        description: >-
                          Tingkat registri yang dipesan oleh alur kerja:
                          `basic`, `shareholders`, atau `ubo`. Juga terdapat di
                          `ownership.tier_requested`.
                      registry_monitoring:
                        type: object
                        nullable: true
                        description: >-
                          Pemantau registri terbaru untuk perusahaan, atau
                          `null` jika tidak ada.
                        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: Kolom perusahaan yang dipantau oleh pemantau.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Menampilkan kembali `vendor_data` yang Anda kirimkan.
                  metadata:
                    type: object
                    nullable: true
                    description: Salinan `metadata` yang Anda kirimkan.
                  created_at:
                    type: string
                    format: date-time
              examples:
                Resolved company:
                  summary: >-
                    Profil registri lengkap (daftar pejabat dipersingkat untuk
                    menghemat tempat)
                  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: >-
                    Select tetap pending setelah polling — kolom yang tersedia
                    hanya sebagian, dilengkapi secara otomatis di sisi 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: >-
            Kesalahan validasi. Masalah tingkat kolom menggunakan format standar
            DRF. Negara yang tidak dicakup oleh registri menghasilkan respons
            `400` dengan `code: kyb_registry_country_unsupported`.
          content:
            application/json:
              examples:
                Missing kyb_response_id:
                  summary: '`kyb_response_id` diperlukan'
                  value:
                    kyb_response_id:
                      - This field is required.
                save_api_request=false rejected:
                  summary: Pilihan selalu disimpan
                  value:
                    save_api_request:
                      - >-
                        KYB registry select must be saved so billing and
                        retrieval can be tracked.
                Country not covered:
                  summary: Tidak ada registri perusahaan yang mencakup negara tersebut
                  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: >-
            Izin ditolak. Dikembalikan ketika header `x-api-key` tidak ada, dan
            juga ketika saldo organisasi pemanggil tidak dapat mencukupi biaya
            panggilan tersebut; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`. Kunci yang tidak ada mengembalikan `403` dengan
            `{"detail": ...}`; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`. Kekurangan kredit mengembalikan `403` dengan
            `{"error": ...}` sebelum skrining atau panggilan penyedia apa pun
            terjadi.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Tidak ada header `x-api-key`, atau kuncinya tidak
                    valid/dicabut
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: Saldo organisasi tidak mencukupi untuk panggilan ini
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Batas laju terlampaui. Endpoint POST/PATCH/DELETE berbagi anggaran
            300 permintaan penulisan per menit per kunci API (pembuatan
            transaksi dan ingesti event memiliki anggaran terpisah sebesar 600).
            Respons menyertakan header `X-RateLimit-Limit`,
            `X-RateLimit-Remaining`, `X-RateLimit-Reset`, dan `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Lebih dari 300 permintaan tulis pada menit ini
                  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: >-
            ID kandidat dari `POST /v3/kyb/search/`
            (`kyb_registry.companies[].kyb_response_id`). Bersifat fana: gunakan
            segera setelah pencarian yang menghasilkannya. ID bisa berukuran
            panjang, jadi simpan dan kirim nilainya persis seperti yang
            dikembalikan, tanpa memotong atau mengasumsikan panjangnya.
          example: 69aeeb95febb0f1704042259
        vendor_data:
          type: string
          description: >-
            Pengenal Anda untuk perusahaan ini; dikembalikan dan disimpan
            bersama sesi bisnis.
        metadata:
          type: object
          nullable: true
          description: >-
            JSON bentuk bebas yang disimpan bersama sesi bisnis dan dikembalikan
            dalam respons.
        save_api_request:
          type: boolean
          default: true
          description: >-
            Harus bernilai `true` (default). Pemilihan registri KYB selalu
            disimpan agar penagihan dan pengambilan data dapat dilacak; `false`
            mengembalikan `400`.
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        Apa yang dimiliki seorang pemilik, dalam format yang sama untuk setiap
        negara dan sumber registri. Null jika registri tidak menyatakan adanya
        kepemilikan. Rentang persentase (misalnya 25-50% pada PSC Inggris) bukan
        merupakan bagian kepemilikan: `percentage` bernilai null dan rentang
        tersebut tetap berada di `ownership_min_shares` /
        `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Kelas atau jenis saham sebagaimana dinamai oleh registri.
        number_of_shares:
          type: number
          nullable: true
          description: Jumlah saham yang dimiliki.
        currency:
          type: string
          nullable: true
          description: Mata uang ISO 4217 dari nilai di bawah.
        nominal_value:
          type: number
          nullable: true
          description: Nilai nominal per saham.
        total_value:
          type: number
          nullable: true
          description: Nilai total kepemilikan.
        percentage:
          type: number
          nullable: true
          description: Porsi kepemilikan persis dalam persen, hingga empat tempat desimal.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Alamat yang dinyatakan oleh registri, dalam bentuk yang sama untuk
        setiap negara dan sumber registri. Setiap kunci selalu ada; bagian yang
        tidak dipublikasikan oleh registri bernilai null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Jenis alamat dalam huruf kecil: `registered` untuk kantor terdaftar;
            jenis lain sebagaimana dinamai oleh registri (misalnya `postal`,
            `office`). `null` jika registri tidak menyebutkan jenis alamat
            tersebut.
        address:
          type: string
          description: Alamat lengkap dalam satu baris. Selalu ada pada setiap alamat.
        street:
          type: string
          nullable: true
          description: Jalan dan nomor.
        city:
          type: string
          nullable: true
          description: Kota atau lokalitas.
        postal_code:
          type: string
          nullable: true
          description: Kode pos.
        region:
          type: string
          nullable: true
          description: Wilayah, negara bagian, atau provinsi.
        country_code:
          type: string
          nullable: true
          description: Kode negara ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: >-
            Label milik registri sendiri untuk alamat tersebut, jika
            menyediakannya.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Aktivitas yang diklasifikasikan oleh registri untuk perusahaan tersebut,
        dalam bentuk yang sama untuk setiap negara dan sumber registri.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Kode aktivitas sebagaimana yang tercetak pada registri (misalnya
            `73110`).
        description:
          type: string
          nullable: true
          description: Label aktivitas, jika registri menerbitkannya.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistem klasifikasi, satu nama per sistem dari sumber mana pun yang
            melaporkannya: `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`; sistem nasional lainnya tetap menggunakan nama
            dari registri itu sendiri. Bernilai null jika registri tidak
            mencantumkan nama sistem.
        is_primary:
          type: boolean
          description: >-
            True untuk aktivitas utama perusahaan. Tepat satu entri bersifat
            primer saat daftar tidak kosong.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Detail registri yang dinormalisasi Didit untuk perusahaan: hasil
        kepemilikan (`ownership_error`, `section_errors`, `ubo_resolution`,
        `lite_enrichment`), koreksi yang dilakukan dengan update-data, dan fakta
        registri yang tidak memiliki kolom tersendiri. Kolom ini tidak pernah
        memuat catatan asli dari sumber registri. Setiap kunci bersifat opsional
        dan hanya ada jika perusahaan memiliki nilai untuk kunci tersebut; kunci
        baru dapat ditambahkan. Baca kolom kanonikal (`addresses`, `industries`,
        `ownership`, `beneficial_owners[].shareholding`) untuk hal apa pun yang
        dicakupnya.
      properties:
        company_name:
          type: string
          description: Nama perusahaan sebagaimana dikoreksi di konsol.
        registration_number:
          type: string
          description: >-
            Nomor registrasi sebagaimana tercantum di registri atau koreksi
            konsol.
        country_code:
          type: string
          description: >-
            Negara registrasi sebagaimana dinyatakan oleh registri atau koreksi
            konsol.
        region:
          type: string
          description: Wilayah atau negara bagian dari registrasi.
        incorporation_date:
          type: string
          description: Tanggal pendirian (ISO 8601).
        registration_date:
          type: string
          description: >-
            Tanggal pendaftaran (ISO 8601) jika registri mencantumkan tanggal
            yang berbeda dari tanggal pendirian.
        dissolution_date:
          type: string
          description: Tanggal pembubaran (ISO 8601) jika registri menyediakannya.
        tax_number:
          type: string
          description: ID pajak.
        vat_number:
          type: string
          description: Nomor PPN.
        legal_address:
          type: string
          description: Alamat resmi seperti yang dikoreksi di konsol.
        registered_address:
          type: string
          description: Alamat terdaftar sesuai yang tercantum di registri.
        company_type:
          type: string
          description: Bentuk hukum.
        registry_status:
          type: string
          description: Status perusahaan di registri.
        verification_status:
          type: string
          description: Status verifikasi.
        alternative_names:
          type: string
          description: >-
            Nama lain yang digunakan atau pernah digunakan perusahaan untuk
            menjalankan bisnis.
        nature_of_business:
          type: string
          description: Deskripsi aktivitas.
        registered_capital:
          type: string
          description: Modal terdaftar seperti yang tercetak.
        registered_capital_amount:
          type: string
          description: Jumlah modal terdaftar, sebagai string desimal.
        registered_capital_currency:
          type: string
          description: Mata uang modal terdaftar (ISO 4217).
        website:
          type: string
          description: Situs web.
        email:
          type: string
          description: Email kontak.
        phone:
          type: string
          description: Telepon kontak.
        legal_entity_identifier:
          type: string
          description: Legal Entity Identifier (LEI).
        location_of_registration:
          type: string
          description: Tempat registrasi.
        control_scheme:
          type: string
          description: Skema tata kelola saat registri menampilkannya.
        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: >-
            Alasan tingkat kepemilikan yang diminta tidak diberikan, dalam kode
            yang sama dengan `ownership.unavailable_reason`.
            `no_owners_on_record` (registri merespons dan tidak menyebutkan
            pemilik) dan `ownership_section_unavailable` (registri tidak
            mengembalikan bagian kepemilikan) merupakan temuan yang berbeda.
        section_errors:
          type: object
          description: >-
            Bagian yang tidak dikembalikan oleh registri, dengan kunci
            berdasarkan bagian (`officers`, `shareholders`, `group_structure`).
            Bagian yang tercantum di sini tidak pernah dikirimkan: daftar kosong
            di sampingnya tidak menunjukkan apa pun tentang perusahaan.
          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: >-
            Kolom milik registri sendiri untuk perusahaan, dengan kunci sesuai
            penamaan registri, sebagai nilai biasa (rekaman lama). Hanya kolom
            yang ditinjau sebagai fakta registri yang disertakan.
        registry_sources:
          type: array
          description: >-
            Registri resmi tempat catatan dibaca (catatan lama). Sumber lain
            tidak disebutkan namanya.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nama yang pernah digunakan perusahaan saat terdaftar sebelumnya
            (catatan historis).
        parent_companies:
          type: array
          items:
            type: string
          description: Perusahaan induk yang dicantumkan oleh registri (catatan lama).
        documents_available:
          type: integer
          description: >-
            Berapa banyak pengajuan yang disediakan registri untuk perusahaan
            tersebut (catatan terdahulu).
    KYBRegistryOwnership:
      type: object
      description: >-
        Hasil dari tingkat kepemilikan (Pemegang Saham / UBO), dalam format yang
        sama untuk setiap negara dan sumber registri.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` saat registri memublikasikan kepemilikan; `not_held`
            saat registri kepemilikan merespons dan sama sekali tidak
            mencantumkan perusahaan tersebut (lihat `unavailable_reason`);
            `unavailable` saat registri tidak menyajikan data kepemilikan karena
            alasan lain apa pun (lihat `unavailable_reason`); `pending` saat
            registri masih mengambilnya; `not_requested` untuk tingkat Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: Tingkat yang dipesan oleh alur kerja.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            Tingkat yang dikirimkan oleh registri (dan yang ditagihkan).
            Permintaan UBO yang dijawab hanya dengan pemegang saham langsung
            adalah `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: >-
            Alasan tingkat kepemilikan yang diminta tidak diberikan. Bernilai
            null kecuali `status` adalah `unavailable` atau `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True saat kepemilikan saham yang dinyatakan pemegang saham langsung
            berjumlah 100% (dalam batas pembulatan satu poin persentase); false
            jika tidak; null jika kepemilikan tidak dikirimkan atau besaran
            saham tidak dinyatakan.
        unresolved:
          type: array
          description: >-
            Bagian dari rantai kepemilikan yang tidak dapat diselesaikan oleh
            registri, misalnya tidak ada struktur grup yang tercatat di atas
            pemilik langsung.
          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: Bagian yang tidak dikembalikan oleh registri.
      properties:
        status_code:
          type: integer
          nullable: true
          description: Status jawaban registri untuk bagian tersebut.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        Bagaimana tingkat UBO menelusuri rantai kepemilikan di atas perusahaan
        tersebut.
      properties:
        parent_chain:
          type: array
          description: Induk perusahaan dari induk utama hingga perusahaan.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Perusahaan langsung di bawah perusahaan tersebut dalam grup
            perusahaannya.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Bagian dari rantai yang tidak dapat diselesaikan oleh registri
            (entri yang sama dengan `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Alasan, misalnya `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure`, atau
                  `section_error`.
              section:
                type: string
                nullable: true
                description: Bagian yang terkait, misalnya `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Kolom profil Lite kosong yang diisi oleh sumber registri negara tersebut
        yang lain. Sumber tersebut tidak disebutkan namanya.
      properties:
        fields:
          type: array
          items:
            type: string
          description: Kolom perusahaan yang telah diisi.
        people_added:
          type: integer
          description: Berapa banyak pejabat atau pemilik yang ditambahkan.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Registri resmi tempat rekaman dibaca. Hanya registri resmi pemerintah,
        regulator, dan sistem pengidentifikasi resmi yang disebutkan; sumber
        lainnya diabaikan.
      properties:
        name:
          type: string
          description: Nama registri, misalnya `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Selalu `official`.
      required:
        - name
        - source_type
    KYBRegistryGroupCompany:
      type: object
      description: Perusahaan dari grup korporasi, berdasarkan identitas registrinya.
      properties:
        name:
          type: string
          nullable: true
          description: Nama perusahaan.
        country_code:
          type: string
          nullable: true
          description: Negara registrasi.
        registration_number:
          type: string
          nullable: true
          description: Nomor registrasi.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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