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

# KYB法人登記API：企業の検索と選択

> DiditのKYB法人登記APIで法人登記を検索し、必要なレベル（Lite（select）、株主、実質的支配者（UBO））で企業情報を取得できます。料金は国ごとに設定されています。

## エンドポイントと請求

有料の企業データソースを使用したスタンドアロン検索が成功すると、候補の件数にかかわらず**リクエスト1件あたり\$0.50**の料金がかかります。結果が空の場合、検索が失敗した場合、および他のソースのみから結果が返された場合は課金されません。その後のプロファイル取得は別途請求されます。

取得は3つのデータレベルで提供され、レベルごとに1つのエンドポイントがあり、料金は国ごとに設定されています（[国別の料金](https://docs.didit.me/ja/getting-started/kyb-registry-pricing.md)）。

| エンドポイント | 取得できる内容 | 料金 |
| - | - | - |
| [`POST /v3/kyb/search/`](https://docs.didit.me/ja/standalone-apis/kyb-registry-search) | 候補企業：名称、登記番号、ステータス、種類 | 有料ソースの結果が返された場合に\$0.50 |
| [`POST /v3/kyb/select/`](https://docs.didit.me/ja/standalone-apis/kyb-registry-select) | **Lite**：企業プロファイル（識別子、ステータス、法的形態、設立日、登記住所、事業内容、連絡先情報）と役員 | Lite料金：国により\$2.00-\$3.00 |
| [`POST /v3/kyb/shareholders/`](https://docs.didit.me/ja/standalone-apis/kyb-registry-shareholders) | Liteに加えて、直接の株主とその所有比率の区分 | Shareholders料金：国により\$5.00-\$22.00 |
| [`POST /v3/kyb/ubo/`](https://docs.didit.me/ja/standalone-apis/kyb-registry-ubo) | Shareholdersに加えて、所有構造の連鎖をたどって特定された最終的な実質的支配者 | UBO料金：国により\$9.00-\$96.00 |

`select`はLiteレベルです。ホスト型のKYBワークフローがLiteレベルの登記チェックに対して請求するものであり、従来どおりの仕様を維持します。Europeとは、EEA、英国、スイスを指します。

ShareholdersまたはUBOの検索では、そのレベルに対応する所有構造のソースに問い合わせます。そのソースが当該企業のデータを保持していないと回答した場合、検索はその国の他の登記ソースにも問い合わせます。これにより、所有構造のソースに掲載されていない企業も、手動入力に移行することなく候補として提示されます。この方法で見つかった候補は、リクエストしたレベルを維持します。取得時には所有構造のソースに再度問い合わせが行われ、それでも当該企業のデータが保持されていない場合は、Liteプロファイルが提供・請求され、`registry_ownership_status: "not_held"`が付与されます。

> [!NOTE]
>
> **提供されたレベルの料金をお支払いいただきます。** すべてのレスポンスには`registry_tier_requested`と`registry_tier_delivered`が含まれます。その国の登記機関が所有構造のデータを保持していない場合、または選択した企業について登記機関に所有構造の記録がない場合、所有構造のリクエストは利用可能な最上位のレベル（通常はLite）として提供・請求され、その理由が`registry_ownership_status`に示されます。UBOリクエストで、解決後のレポートに実質的支配者として自然人が1人も記載されていない場合は、Shareholdersとして提供・請求されます。

> [!NOTE]
>
> **バージョニング。** ShareholdersとUBOのエンドポイントは`/v3/`にのみ存在します。スタンドアロン検索の料金は`/v2/kyb/search/`にも適用されます。プロファイル取得は別途請求されます。

## 所有構造のステータス

`registry_ownership_status`は、ShareholdersまたはUBOのリクエストのうち、所有構造部分がどうなったかを示します。

| 値 | 意味 |
| - | - |
| `not_requested` | Liteでの取得だったため、所有構造は要求されていません。 |
| `delivered` | レジストリが所有構造データを提供しました。`registry_tier_delivered`に示されるレベルが請求の対象です。 |
| `not_held` | 所有構造のレジストリは応答しましたが、この企業を掲載していないため、提供できる所有構造の記録がありません。この企業は、その国の別のレジストリソースで見つかったものです。代わりにLiteプロファイルが提供・請求され、`registry_data.ownership_error: "company_not_found"`が返されます。 |
| `unavailable` | その他の理由で所有構造データが提供されませんでした。レジストリが保持する記録に所有者の記載がない、レジストリが所有構造セクションをまったく返さなかった、またはレジストリに問い合わせできなかった、のいずれかです。どれに該当するかは`registry_data.ownership_error`に示されます。代わりにLiteプロファイルが提供・請求されます。 |
| `pending` | 所有構造セクションはまだレジストリから取得されていません。取得されるまでは何も請求されず、`registry_tier_delivered`は`null`です。 |

`not_held`と`unavailable`はいずれもLiteとして提供・請求されますが、同じ結果ではありません。`not_held`は所有構造のソースがその企業をカバーしていないこと、つまりカバレッジの欠落を意味します。一方`unavailable`はデータが提供されなかったこと、つまり障害、またはレジストリが空のまま返したセクションを意味します。理由は`registry_data.ownership_error`に示されます。以前は所有構造のレジストリが企業を掲載していないために`unavailable`を返していた選択は、現在は`not_held`を返します。ステータスで分岐している場合は、どちらも同じLiteの提供として扱ってください。この理由の値のうち、次の2つは意味が異なり、同じ結果として解釈してはなりません。

| `ownership_error` | 意味 |
| - | - |
| `no_owners_on_record` | レジストリは所有構造セクションに応答しましたが、所有者の記載がありません。その企業は、そのレジストリに株主名簿を登録していません。 |
| `ownership_section_unavailable` | レジストリが所有構造セクションを返さなかったため、そのセクションについては何も提供されていません。リストは空なのではなく欠落しています。企業の所有者については何も示していません。 |

レジストリが返さなかったセクションは、構造化された形でも`registry_data.section_errors`に記録されます。セクション(`officers`、`shareholders`、`group_structure`)をキーとし、レジストリが応答したステータスが格納されます。

```json theme={null}
{
  "section_errors": {
    "shareholders": {
      "status_code": 404
    }
  }
}
```

`section_errors`は、手元にあるレスポンスの状態を表すもので、それまでの経緯を表すものではありません。最初のリクエストでは返されず、後の処理で提供されたセクション(下記の非同期取得を参照)は、そのエントリが削除されます。そのため`registry_ownership_status`、`ownership_error`、`section_errors`は常に一致します。`delivered`のセクションにエントリが存在することはなく、`no_owners_on_record`に`shareholders`のエントリが伴うこともありません。また、セクションが部分的に提供されることもありません。レジストリがリストの最初のページを提供した後に以降のページの提供に失敗した場合、その試行では取得は完了しません(`pending`の取得は次の処理で再試行され、新しいリクエストにはレジストリ利用不可のエラーが返されます)。したがって、提供された`officers`や株主のリストは、常にレジストリが保持するリスト全体です。`section_errors`に記載されたセクションは、空の結果ではなく、提供されなかったデータとして扱ってください。`section_errors`にエントリがあるのに`officers`や株主のリストが空であっても、その企業については何も示していません。

### 所有構造の非同期取得

一部のレジストリはオンデマンドで照会されます。そのソースに対してまだ照会されたことのない企業に対する最初のリクエストでは、取得中のため所有構造セクションが返されず、データは数分以内に届きます。これを「所有構造の記録なし」として報告すると、実際には株主がいる企業を過小に示すことになるため、リクエストは代わりに`pending`として返されます。

取得が`pending`の間は、`fetch_status`も`pending`となり、レスポンスのステータスは`202 Accepted`です。Diditはこのセクションを自動的に再試行し、追加のリクエストを行うことなく取得を完了します。

* 所有構造データが届くと、保存されたチェックに株主と実質的支配者が表示され、`registry_tier_delivered`は提供されたレベルになり、そのレベルで利用料金が請求されます。
* 再試行期間の終了時点でもセクションが空の場合、ステータスは`unavailable`となり、リクエストはLiteとして提供・請求されます。

`request_id`を保持し、`registry_checks[0].company.fetch_status`が`resolved`になるまで`GET /v3/session/{request_id}/decision/`をポーリングしてください。`pending`の間は取得リクエストを繰り返さないでください。新しい`POST`はそれぞれ別個のリクエストとして、個別に請求されます。

候補企業を探すには`POST /v3/kyb/search/`を使用します。検索では保存されたチェックは作成されません。検索の`tier`入力によって、検索対象のチェーンが決まります。詳しくは[検索のレベル](https://docs.didit.me/ja/standalone-apis/kyb-registry-search.md#検索レベル)を参照してください。

レジストリの検索には90秒ほどかかることがあります。Diditにすぐ応答を返させ、候補の準備ができた時点で指定のURLに通知させたい場合は、`webhook_url`を送信してください。この軽量な通知のための検索コールバックには意図的に署名が付与されていないため、共有シークレットを設定する必要はありません。

返された`kyb_response_id`を使い、`POST /v3/kyb/select/`、`POST /v3/kyb/shareholders/`、または`POST /v3/kyb/ubo/`で必要なレベルのプロファイルを取得します。取得は請求の対象となり、結果はBusiness ConsoleにManual Checkとして保存されます。

## 一般的な流れ

1. 購入する予定の`tier`で、会社名、登記番号、国を指定して検索します(`basic`がデフォルトのLiteチェーンで、`shareholders`と`ubo`はそれぞれのレベルのチェーンを検索します)。
2. `search_resolved=false`の場合は、ポーリングせずにオプションの`webhook_url`コールバックを待ちます。
3. 返された候補をオペレーターまたは顧客に表示します。
4. 該当する`kyb_response_id`を必要なレベルで取得します（Lite の場合は select、shareholders、または ubo を選択します）。
5. 返された`request_id`を保存し、保存された法人確認の結果を取得する際に使用します。

## 検索コールバック

プロバイダーが検索の完了をDiditに通知すると、Didit はお客様の `webhook_url` に `POST` を1回送信します。

```json theme={null}
{
  "event_id": "7f5a1c93-6a44-4f0e-9f2b-3d8a1c6f2e91",
  "event_type": "kyb.registry_search.resolved",
  "request_id": "b5ef9df5-bd9e-4d61-bbe5-5eb7a8fb6f85",
  "vendor_data": "business-123",
  "metadata": {
    "source": "onboarding"
  },
  "search_status": "resolved",
  "search_resolved": true,
  "kyb_registry": {
    "companies": [
      {
        "kyb_response_id": "kyb_resp_123",
        "name": "TESCO PLC",
        "registration_number": "00445790",
        "status": "active",
        "type": "Public Limited Company",
        "registered_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, AL7 1GA",
        "risk_level": null,
        "fetch_status": "pending"
      }
    ],
    "pagination": {
      "total": 1,
      "page": 1,
      "per_page": 25
    },
    "search_status": "resolved",
    "search_resolved": true
  },
  "timestamp": 1767225600,
  "created_at": 1767225600
}
```

このコールバックは配信通知として扱ってください。返された `kyb_response_id` を `POST /v3/kyb/select/`、`POST /v3/kyb/shareholders/`、または `POST /v3/kyb/ubo/` で使用して、課金対象となる法人登記プロファイルの取得を実行します。


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