> ## 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：POA認証とOCRによる住所抽出

> DiditのPOST /v3/poa/で、公共料金の請求書、銀行取引明細書、賃貸契約書を検証できます。OCRで住所を抽出し、真正性もチェックします。従量課金制で契約は不要です。



## OpenAPI

````yaml ja/openapi-25.json POST /v3/poa/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 本人確認API。x-api-keyヘッダーで認証します。
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/poa/:
    post:
      tags:
        - Standalone APIs
      summary: 住所証明(書類のOCRと住所チェック)
      description: >-
        公共料金の請求書、銀行取引明細書、政府発行書類などの住所証明書類を、1回の呼び出しで抽出・検証します。発行元、発行日/有効期限、名義人の氏名、未加工の住所と解析・ジオコーディング済みの住所、`Approved`/`Declined`の`status`、検出されたすべての問題を説明する`warnings`リストを返します。


        **レイテンシ。**
        抽出はLLMベースで行われるため、通常の呼び出しには**5〜15秒**、複数ページのPDFでは最大**約30秒**かかります。クライアントのタイムアウトは**45秒以上**に設定し、呼び出しが完了する前に再試行しないでください。


        **仕組み。**
        書類(画像またはPDF、最大15MB。暗号化されたPDFには`document_password`が必要)は書類タイプとサブタイプ(例:
        `UTILITY_BILL` /
        `WATER_BILL`)に分類されます。発行元、日付、名義人の氏名、住所はLLMベースの抽出で取り出されます。住所は解析・ジオコーディングされ、`poa_parsed_address`に格納されます。PDF/EXIFのフォレンジックで改ざんを検査し(デジタル署名後の変更、既知のPDF編集ツール、オーバーレイテキストによる改ざん、不審な再エクスポート)、`SUSPECTED_DOCUMENT_MANIPULATION`または`DOCUMENT_METADATA_MISMATCH`として検出します。書類の経過期間は`poa_document_age_months`に、言語は`poa_languages_allowed`に照らして検証されます。`expected_address`、`expected_country`、または`expected_first_name`/`expected_last_name`を渡すと、抽出された値と照合され、不一致があればフラグが立てられます。


        **判定ロジック。**
        却下に該当する警告が1つもない限り、`status`は`Approved`になります。重大な不合格項目は常に却下となります。対象は`MISSING_ADDRESS_INFORMATION`、`POA_DOCUMENT_EXPIRED`、`INVALID_DOCUMENT_TYPE`、`UNABLE_TO_VALIDATE_DOCUMENT_AGE`に加え、`UNABLE_TO_EXTRACT_ISSUE_DATE`と`POA_NAME_NOT_DETECTED`です(このエンドポイントでは設定できません)。5つのリスクグループは、`poa_*_action`オプション(`DECLINE`または`NO_ACTION`、デフォルトはいずれも`DECLINE`)でリクエストごとに設定できます。このエンドポイントでは、`POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`と`UNPARSABLE_OR_INVALID_ADDRESS`は情報提供のみを目的としており、却下になることはありません。まったく処理できない書類には`400`が返されます。読み取りは可能でも問題のある書類には、`status:
        "Declined"`とともに`200`が返されます。HTTPコードだけでなく、必ず`poa.status`と`poa.warnings`を確認してください。


        **請求。**
        `200`レスポンスごとに住所証明APIクレジットを1つ消費します(プランのクレジットまたはチャージ残高から支払われます)。組織の残高で呼び出しの費用を賄えない場合、エンドポイントは書類を処理する前に、クレジット不足エラーとともに`403`を返します。


        **セッションの保存(`save_api_request`、デフォルトは`true`)。**
        `true`の場合、呼び出しはAPIタイプのセッションとして保存されます。セッションはBusiness
        Consoleに表示され、アップロードされた書類は保存されます。返される`request_id`は、`GET
        /v3/session/{sessionId}/decision/`に渡せる実際のセッションIDです(判定では、このレスポンスに含まれない`document_file`と`document_metadata`のフォレンジック情報も公開されます)。また、`status.updated`のWebhookが送信されます。`false`の場合は何も保存されず、`request_id`は後から照会できない一回限りの相関用UUIDになります。


        **サンドボックス。**
        サンドボックスのAPIキーでは、処理と請求がすべてスキップされます。リクエストの検証後(不正な形式の入力には引き続き`400`が返されます)、エンドポイントは固定の`Approved`モックペイロード(架空の「Sandbox
        Power Co.」の電気料金請求書)を返します。セッションは保存されず、クレジットも消費されません。


        **認証。**
        アプリケーションのAPIキーを`x-api-key`ヘッダーで送信してください。認証情報がないか無効な場合は`403`(`{"detail":
        "You do not have permission to perform this
        action."}`)が返されます。このAPIが`401`を返すことはありません。


        **レート制限。**
        すべてのPOST/PATCH/DELETEエンドポイントで共有される書き込み枠として、APIキーごとに1分あたり300リクエストまでです。超過すると`429`が返されます。


        注:
        `FUTURE_ISSUE_DATE`と`POOR_DOCUMENT_QUALITY`はワークフローのセッションには存在しますが、このスタンドアロンのエンドポイントで生成されることはありません。そのため、このエンドポイントでは発行日が未来の書類も自動的には却下されません。
      operationId: post_v3poa
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - document
              properties:
                document:
                  type: string
                  format: binary
                  description: >-
                    住所証明の書類です。使用できる拡張子：`tiff`、`jpg`、`jpeg`、`png`、`pdf`、`webp`。最大アップロードサイズ：**15
                    MB**（これを超えるファイルは`400`で拒否されます）。複数ページのPDFに対応しています（レイテンシは長くなります）。暗号化されたPDFには`document_password`が必要です。画像は処理前に自動的に圧縮されます。
                document_password:
                  type: string
                  description: >-
                    `document`が暗号化されたPDFの場合に復号するためのパスワード。暗号化されたPDFをパスワードなし（または誤ったパスワード）で送信すると`400`が返ります。
                  writeOnly: true
                expected_address:
                  type: string
                  description: >-
                    書類と照合する住所です。ジオコーディングされたうえで、抽出された住所と比較されます。一致しない場合（または想定住所をジオコーディング・検証できない場合）は`ADDRESS_MISMATCH_WITH_PROVIDED`が追加され、その扱いは`poa_address_mismatch_action`で制御されます。ジオコーディング後の形式は`expected_details_formatted_address`
                    / `expected_details_parsed_address`で返されます。
                  example: Av. Monseñor Tavella 1291, Salta, Argentina
                expected_country:
                  type: string
                  description: >-
                    書類と照合する国（ISO 3166-1コード、例:
                    `ARG`または`AR`）。書類の国と一致しない場合は`POA_COUNTRY_MISMATCH_WITH_PROVIDED`が追加され、その扱いは`poa_address_mismatch_action`で制御されます。
                  example: ARG
                expected_first_name:
                  type: string
                  description: >-
                    `name_on_document`と照合する名です（音訳を考慮したあいまい一致）。スコアが一致しきい値を下回ると`NAME_MISMATCH_WITH_PROVIDED`が追加され、`poa_address_mismatch_action`に従って処理されます。
                  example: Sophia
                expected_last_name:
                  type: string
                  description: >-
                    `name_on_document`と照合する姓。`expected_first_name`と組み合わせて一致スコアを算出します。
                  example: Martinez
                poa_languages_allowed:
                  type: string
                  description: >-
                    受け付ける書類の言語をISO
                    639-1コードで指定するカンマ区切りのリスト(例:`en,es,fr`)。省略した場合または空欄の場合は、**サポートされている51言語すべて**を受け付けます。リストに含まれない言語の書類には`UNSUPPORTED_DOCUMENT_LANGUAGE`が付与されます(`poa_unsupported_language_action`で制御)。リストに不明なコードが含まれている場合は、サポートされているコードの一覧とともに`400`が返されます。
                  example: en,es
                poa_document_age_months:
                  type: string
                  description: >-
                    書類の種類ごとに書類の最大経過月数を設定する、カンマ区切りの`key:value`ペア。キー:
                    `utility_bill`、`bank_statement`、`government_issued_document`、`other_poa_document`。値:
                    `1`～`120`、または無制限（経過期間チェックなし）の場合は`-1`。省略時のデフォルト:
                    `utility_bill:3,bank_statement:3,government_issued_document:12,other_poa_document:12`。上限より古い書類は`POA_DOCUMENT_EXPIRED`で却下されます。**注意:**
                    このフィールドを指定する場合は、受け付ける*すべての*種類を列挙してください。省略した種類は受け付けないものとして扱われ（情報コード`POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`）、その経過期間チェックはスキップされます。
                  example: utility_bill:3,bank_statement:6
                poa_name_mismatch_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    受け付けられますが、**現在適用されていません**。名前不一致の警告（`NAME_MISMATCH_WITH_PROVIDED`）は、代わりに`poa_address_mismatch_action`に従います。名前と住所の両方の不一致時の動作を制御するには、`poa_address_mismatch_action`を設定してください。
                poa_document_issues_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    ファイルの完全性に問題がある場合の処理です。実際には、このエンドポイントで生成されるのは`DOCUMENT_METADATA_MISMATCH`のみです。
                poa_document_authenticity_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    書類の改ざんが疑われる場合の処理です（`SUSPECTED_DOCUMENT_MANIPULATION`）。たとえば、PDFがデジタル署名後に変更された、既知のPDF編集ソフトで処理された、オーバーレイテキストによる改ざんが見られる、EXIFの日付に矛盾がある、といったケースです。
                poa_unsupported_language_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    書類の言語が`poa_languages_allowed`に含まれない場合の処理です（`UNSUPPORTED_DOCUMENT_LANGUAGE`）。
                poa_address_mismatch_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    抽出した情報が`expected_*`フィールドと一致しない場合の対応です。`ADDRESS_MISMATCH_WITH_PROVIDED`、`NAME_MISMATCH_WITH_PROVIDED`、`POA_COUNTRY_MISMATCH_WITH_PROVIDED`はいずれもこのアクションに従います。
                poa_issuer_not_identified_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: 書類上で発行元の会社または組織を特定できない場合の処理です（`ISSUER_NOT_IDENTIFIED`）。
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    `true`（デフォルト）の場合、呼び出しはAPIタイプのセッションとして保存されます。このセッションはBusiness
                    Consoleに表示され、返された`request_id`を使って`GET
                    /v3/session/{sessionId}/decision/`で取得でき、`status.updated`Webhookで通知され、アップロードされた書類が保存されます。`false`の場合、何も保存されず、`request_id`はレスポンスの照合専用の一時的なUUIDになります。
                  example: true
                vendor_data:
                  type: string
                  description: >-
                    任意の不透明な文字列（社内のユーザーID、メールアドレス、UUIDなど）です。保存されたセッションに格納され、レスポンスでそのまま返されます。API呼び出しを自社の記録と関連付けたり、後でセッションを絞り込んだりするために使用します。
                  example: user-123
                metadata:
                  type: object
                  additionalProperties: true
                  description: >-
                    セッションとともに保存され（`save_api_request=true`の場合）、レスポンスでそのまま返される任意のJSONオブジェクトです。マルチパートリクエストでは、JSONエンコードされた文字列フィールドとして送信してください（例:
                    `metadata={"flow":"onboarding"}`）。オブジェクトとして解析されます。
                  example:
                    flow: onboarding
            example:
              document: (binary JPEG/PNG/PDF of the utility bill or bank statement)
              expected_address: Av. Monseñor Tavella 1291, Salta, Argentina
              expected_country: ARG
              expected_first_name: Sophia
              expected_last_name: Martinez
              poa_languages_allowed: en,es
              save_api_request: true
              vendor_data: user-123
      responses:
        '200':
          description: >-
            書類が処理されました。`poa.status`は`Approved`または`Declined`で、検出されたすべての問題は`poa.warnings`に個別に列挙されます。期限切れ、不一致、または不審な書類でも`status:
            "Declined"`とともに`200`が返されるため、HTTPコードだけでなくボディを確認してください。`save_api_request=true`の場合、`request_id`は永続化されたセッションIDです。
          content:
            application/json:
              examples:
                Approved:
                  summary: 公共料金の請求書を問題なく読み取れました。想定される詳細情報のチェックはありません
                  value:
                    request_id: 4b523a8d-ed32-45e4-8aa8-a89eda459d88
                    poa:
                      issuing_state: ARG
                      document_type: UTILITY_BILL
                      document_subtype: WATER_BILL
                      document_language: es
                      issuer: Aguas del Norte
                      issue_date: '2026-04-10'
                      expiration_date: null
                      poa_address: >-
                        AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP:
                        4400, CAPITAL - SALTA
                      poa_formatted_address: Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina
                      poa_parsed_address:
                        street_1: Avenida Monseñor Tavella 1291
                        street_2: b
                        city: Salta
                        region: Salta
                        country: AR
                        postal_code: A4400
                        document_location:
                          latitude: -24.8208682
                          longitude: -65.4130954
                      expected_details_address: null
                      expected_details_formatted_address: null
                      expected_details_parsed_address: null
                      name_on_document: OESTE EMBOTELLADORA S.A.
                      extra_fields:
                        bank_account_number: null
                        bank_iban: null
                        bank_sort_code: null
                        bank_routing_number: null
                        bank_swift_bic: null
                        bank_branch_name: null
                        bank_branch_address: null
                        document_phone_number: null
                        additional_names:
                          - LA EMBOTELLADORA DEL NORTE SA
                      detected_codes:
                        - type: QR_CODE
                          page_number: 1
                          position:
                            - - 820
                              - 1120
                            - - 1002
                              - 1120
                            - - 1002
                              - 1302
                            - - 820
                              - 1302
                          x: 820
                          'y': 1120
                          width: 182
                          height: 182
                          page_width: 1190
                          page_height: 1684
                          raw_payload: >-
                            aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==
                          parsed_payload: https://aguasdelnorte.com/factura/998811
                        - type: CODE_128
                          page_number: 1
                          position:
                            - - 112
                              - 1480
                            - - 560
                              - 1480
                            - - 560
                              - 1540
                            - - 112
                              - 1540
                          x: 112
                          'y': 1480
                          width: 448
                          height: 60
                          page_width: 1190
                          page_height: 1684
                          raw_payload: MDA5OTg4MTEwMDA0Mg==
                          parsed_payload: '0099881100042'
                      status: Approved
                      warnings: []
                    vendor_data: user-123
                    metadata: null
                    created_at: '2026-06-12T02:29:02.439655+00:00'
                Declined - document too old:
                  summary: 発行日が許可された`poa_document_age_months`より古い
                  value:
                    request_id: f61681b8-9422-4378-ac3e-04c6a247fb45
                    poa:
                      issuing_state: ARG
                      document_type: UTILITY_BILL
                      document_subtype: WATER_BILL
                      document_language: es
                      issuer: Aguas del Norte
                      issue_date: '2021-02-10'
                      expiration_date: null
                      poa_address: >-
                        AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP:
                        4400, CAPITAL - SALTA
                      poa_formatted_address: Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina
                      poa_parsed_address:
                        street_1: Avenida Monseñor Tavella 1291
                        street_2: b
                        city: Salta
                        region: Salta
                        country: AR
                        postal_code: A4400
                        document_location:
                          latitude: -24.8208682
                          longitude: -65.4130954
                      expected_details_address: null
                      expected_details_formatted_address: null
                      expected_details_parsed_address: null
                      name_on_document: OESTE EMBOTELLADORA S.A.
                      extra_fields:
                        bank_account_number: null
                        bank_iban: null
                        bank_sort_code: null
                        bank_routing_number: null
                        bank_swift_bic: null
                        bank_branch_name: null
                        bank_branch_address: null
                        document_phone_number: null
                        additional_names:
                          - LA EMBOTELLADORA DEL NORTE SA
                      status: Declined
                      warnings:
                        - risk: POA_DOCUMENT_EXPIRED
                          feature: PROOF_OF_ADDRESS
                          additional_data:
                            expiration_reason: age_window
                            max_age_months: 3
                            document_subtype: WATER_BILL
                            document_type: UTILITY_BILL
                            issue_date: '2021-02-10'
                          log_type: error
                          short_description: Document expired
                          long_description: >-
                            The submitted document is older than the maximum
                            accepted age of 3 months from its issue date, which
                            exceeds the acceptable time period for validity.
                    vendor_data: user-123
                    metadata: null
                    created_at: '2026-06-12T02:23:02.165493+00:00'
                Declined - name mismatch:
                  summary: >-
                    `expected_first_name`/`expected_last_name`が`name_on_document`と一致しません
                  value:
                    request_id: 0a7f2f9c-58f1-4b8e-b1e3-2f6f9d4f7a21
                    poa:
                      issuing_state: ARG
                      document_type: UTILITY_BILL
                      document_subtype: WATER_BILL
                      document_language: es
                      issuer: Aguas del Norte
                      issue_date: '2021-02-10'
                      expiration_date: null
                      poa_address: >-
                        AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP:
                        4400, CAPITAL - SALTA
                      poa_formatted_address: Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina
                      poa_parsed_address:
                        street_1: Avenida Monseñor Tavella 1291
                        street_2: b
                        city: Salta
                        region: Salta
                        country: AR
                        postal_code: A4400
                        document_location:
                          latitude: -24.8208682
                          longitude: -65.4130954
                      expected_details_address: null
                      expected_details_formatted_address: null
                      expected_details_parsed_address: null
                      name_on_document: OESTE EMBOTELLADORA S.A.
                      extra_fields:
                        bank_account_number: null
                        bank_iban: null
                        bank_sort_code: null
                        bank_routing_number: null
                        bank_swift_bic: null
                        bank_branch_name: null
                        bank_branch_address: null
                        document_phone_number: null
                        additional_names:
                          - LA EMBOTELLADORA DEL NORTE SA
                      status: Declined
                      warnings:
                        - risk: NAME_MISMATCH_WITH_PROVIDED
                          feature: PROOF_OF_ADDRESS
                          additional_data: null
                          log_type: error
                          short_description: Name mismatch with provided information
                          long_description: >-
                            The full name on the document does not match the
                            name from the user's verified identity documents, or
                            the full name sent by API.
                    vendor_data: user-123
                    metadata: null
                    created_at: '2026-06-12T02:27:21.330172+00:00'
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      `save_api_request=true`の場合は保存されたセッションID(`GET
                      /v3/session/{sessionId}/decision/`で使用可能)、それ以外の場合は一時的な相関UUIDです。
                  poa:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - Declined
                        description: >-
                          却下に該当する警告がない場合は`Approved`、それ以外の場合は`Declined`になります。理由は`warnings`リストで確認できます。
                      issuing_state:
                        type: string
                        nullable: true
                        description: '書類から抽出された書類の発行国。通常はISO 3166-1 alpha-3です（例: `ARG`）。'
                        example: ARG
                      document_type:
                        type: string
                        enum:
                          - UTILITY_BILL
                          - BANK_STATEMENT
                          - GOVERNMENT_ISSUED_DOCUMENT
                          - OTHER_POA_DOCUMENT
                          - UNKNOWN
                        description: >-
                          検出された書類のカテゴリー。`UNKNOWN`は、書類を有効な住所証明として分類できなかったことを意味し、`INVALID_DOCUMENT_TYPE`で自動的に却下されます。nullになることはなく、分類に失敗した場合は`UNKNOWN`になります。
                      document_subtype:
                        type: string
                        description: >-
                          `document_type`内のより詳細な分類です。例：`ELECTRICITY_BILL`、`WATER_BILL`、`GAS_BILL`、`INTERNET_BILL`、`PHONE_BILL`（公共料金の請求書）、`ACCOUNT_STATEMENT`、`CREDIT_CARD_STATEMENT`（銀行取引明細書）、`TAX_ASSESSMENT`、`RESIDENCY_CERTIFICATE`（政府発行書類）。サブタイプを判定できなかった場合は`UNKNOWN`になります。nullになることはなく、分類に失敗した場合は`UNKNOWN`にフォールバックします。
                        example: WATER_BILL
                      document_language:
                        type: string
                        nullable: true
                        description: 検出された書類の言語（ISO 639-1）。
                        example: es
                      issuer:
                        type: string
                        nullable: true
                        description: >-
                          書類を発行した企業または組織。`null`の場合は`ISSUER_NOT_IDENTIFIED`が追加されます。
                        example: Aguas del Norte
                      issue_date:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          書類の発行日(`YYYY-MM-DD`)。抽出できなかった場合は`null`となり、このエンドポイントでは`UNABLE_TO_EXTRACT_ISSUE_DATE`で却下されます。
                        example: '2021-02-10'
                      expiration_date:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          書類に記載されている明示的な有効期限または有効期日です（記載がある場合）。`poa_document_age_months`による経過期間のチェックとは独立しています。
                      poa_address:
                        type: string
                        nullable: true
                        description: >-
                          書類に記載されているとおりの住所。`null`の場合は`MISSING_ADDRESS_INFORMATION`で自動的に却下されます。
                      poa_formatted_address:
                        type: string
                        nullable: true
                        description: '`poa_address`をジオコーディングして正規化したもの。'
                        example: Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina
                      poa_parsed_address:
                        type: object
                        nullable: true
                        description: 書類の住所を構造化し、ジオコーディングした内訳。住所を解析できなかった場合は`null`です。
                        properties:
                          street_1:
                            type: string
                            nullable: true
                            example: Avenida Monseñor Tavella 1291
                          street_2:
                            type: string
                            nullable: true
                          city:
                            type: string
                            nullable: true
                            example: Salta
                          region:
                            type: string
                            nullable: true
                            example: Salta
                          country:
                            type: string
                            nullable: true
                            description: ISO 3166-1 alpha-2国コード。
                            example: AR
                          postal_code:
                            type: string
                            nullable: true
                            example: A4400
                          document_location:
                            type: object
                            nullable: true
                            properties:
                              latitude:
                                type: number
                              longitude:
                                type: number
                            description: 書類の住所をジオコーディングした座標。
                      expected_details_address:
                        type: string
                        nullable: true
                        description: 送信した`expected_address`のエコー、または`null`。
                      expected_details_formatted_address:
                        type: string
                        nullable: true
                        description: >-
                          `expected_address`をジオコーディングして正規化したもの。指定されていない場合、またはジオコーディングできない場合は`null`です。
                      expected_details_parsed_address:
                        type: object
                        nullable: true
                        additionalProperties: true
                        description: >-
                          `expected_address`の完全なジオコーディング結果（番地・市区町村・地域・国・郵便番号に加え、ジオコーダーの生の出力と`is_verified`フラグ）。`expected_address`が指定されていない場合は`null`です。
                      name_on_document:
                        type: string
                        nullable: true
                        description: >-
                          書類から抽出された主たる名義人の氏名。指定されている場合は`expected_first_name`/`expected_last_name`と照合されます。このエンドポイントでは、`null`の場合は`POA_NAME_NOT_DETECTED`で却下されます。
                        example: OESTE EMBOTELLADORA S.A.
                      extra_fields:
                        type: object
                        description: >-
                          書類固有の追加情報です。銀行関連のフィールドは、銀行取引明細書に記載されている場合に入力されます。それ以外の場合は`null`です。
                        properties:
                          bank_account_number:
                            type: string
                            nullable: true
                          bank_iban:
                            type: string
                            nullable: true
                          bank_sort_code:
                            type: string
                            nullable: true
                          bank_routing_number:
                            type: string
                            nullable: true
                          bank_swift_bic:
                            type: string
                            nullable: true
                          bank_branch_name:
                            type: string
                            nullable: true
                          bank_branch_address:
                            type: string
                            nullable: true
                          document_phone_number:
                            type: string
                            nullable: true
                            description: 書類に記載された連絡先電話番号。
                          additional_names:
                            type: array
                            items:
                              type: string
                            description: 書類に記載されているその他の名義人の氏名です（例：共同口座名義人、以前の口座名義）。
                      warnings:
                        type: array
                        description: >-
                          問題なく承認された場合は空です。各エントリは検出されたリスク1件を説明します。`log_type:
                          "error"`のエントリは`status`を`Declined`に設定します。
                        items:
                          type: object
                          properties:
                            risk:
                              type: string
                              description: >-
                                機械可読なリスクコードです。常に却下となるリスク：`MISSING_ADDRESS_INFORMATION`、`POA_DOCUMENT_EXPIRED`、`INVALID_DOCUMENT_TYPE`、`UNABLE_TO_VALIDATE_DOCUMENT_AGE`、および`UNABLE_TO_EXTRACT_ISSUE_DATE`と`POA_NAME_NOT_DETECTED`（このエンドポイントでは却下に固定）。リクエストオプションで制御されるリスク：`NAME_MISMATCH_WITH_PROVIDED`
                                / `ADDRESS_MISMATCH_WITH_PROVIDED` /
                                `POA_COUNTRY_MISMATCH_WITH_PROVIDED`（`poa_address_mismatch_action`）、`POOR_DOCUMENT_QUALITY`（このエンドポイントでは発生しません）
                                /
                                `DOCUMENT_METADATA_MISMATCH`（`poa_document_issues_action`）、`SUSPECTED_DOCUMENT_MANIPULATION`（`poa_document_authenticity_action`）、`UNSUPPORTED_DOCUMENT_LANGUAGE`（`poa_unsupported_language_action`）、`ISSUER_NOT_IDENTIFIED`（`poa_issuer_not_identified_action`）。このエンドポイントで情報提供のみのリスク：`POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`、`UNPARSABLE_OR_INVALID_ADDRESS`。
                              example: POA_DOCUMENT_EXPIRED
                            feature:
                              type: string
                              enum:
                                - PROOF_OF_ADDRESS
                              description: 警告を発生させた機能。このエンドポイントでは常に`PROOF_OF_ADDRESS`です。
                            additional_data:
                              type: object
                              nullable: true
                              additionalProperties: true
                              description: >-
                                一部のリスクに関する追加情報です。例えば`POA_DOCUMENT_EXPIRED`には`expiration_reason`（`printed_expiration`または`age_window`）、`document_type`、`document_subtype`、`issue_date`が含まれ、さらに`printed_expiration`の場合は`expiration_date`、`age_window`の場合は`max_age_months`が含まれます。`SUSPECTED_DOCUMENT_MANIPULATION`には`reason`と`detection_method`が含まれます。ほとんどのリスクでは`null`です。
                            log_type:
                              type: string
                              enum:
                                - error
                                - information
                              description: >-
                                重大度。`error`の警告は`status`を`Declined`にします。`information`のエントリは参考情報であり、それ単独で却下となることはありません。（このエンドポイントは`warning`を生成しません。オプションが`DECLINE`または`NO_ACTION`のみを受け付けるためです。）
                            short_description:
                              type: string
                              description: リスクを人が読める形で1行にまとめた要約。
                            long_description:
                              type: string
                              description: リスクを人が読める形で説明したもの。
                      detected_codes:
                        type: array
                        description: >-
                          書類の処理済みのすべてのページで検出されたQRコードとバーコード。見つからない場合は空です。位置は特定できたもののデコードできないQRコードは`parsed_payload:
                          null`となります。
                        items:
                          $ref: '#/components/schemas/DocumentAIDetectedCode'
                  vendor_data:
                    type: string
                    nullable: true
                    description: 送信した`vendor_data`のエコー、または`null`。
                  metadata:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: 送信した`metadata`オブジェクトのエコー、または`null`。
                  created_at:
                    type: string
                    format: date-time
                    description: レスポンスが生成された日時を示すISO 8601タイムスタンプ（UTC）。
        '400':
          description: >-
            バリデーションまたは処理のエラーです。フィールド単位の問題は、DRFの標準エンベロープ(問題のあるフィールドごとにメッセージの配列が1つ)で返されます。暗号化されたPDFの問題は`{"detail":
            ...}`を返します。抽出パイプラインで処理できない書類は`{"error": ["Error extracting POA
            information"]}`を返します。
          content:
            application/json:
              examples:
                Missing document:
                  summary: フォームデータに`document`が含まれていません
                  value:
                    document:
                      - No file was submitted.
                Unsupported file extension:
                  summary: ファイル拡張子がtiff/jpg/jpeg/png/pdf/webp以外
                  value:
                    document:
                      - >-
                        File extension “txt” is not allowed. Allowed extensions
                        are: tiff, jpg, jpeg, png, pdf, webp.
                File too large:
                  summary: アップロードが15MBの上限を超えています
                  value:
                    document:
                      - File size should not exceed 15 MB
                Encrypted PDF:
                  summary: 必要なパスワードなしでPDFがアップロードされました
                  value:
                    detail: >-
                      The PDF is encrypted. Please upload a decrypted PDF or a
                      photo instead.
                Wrong PDF password:
                  summary: '`document_password`でPDFを復号できません'
                  value:
                    detail: >-
                      The PDF password is incorrect. Please provide the correct
                      password.
                Invalid language code:
                  summary: '`poa_languages_allowed`にサポートされていないコードが含まれている'
                  value:
                    poa_languages_allowed:
                      - >-
                        Invalid language code: 'xx'. Must be one of the
                        supported languages: ['ar', 'bn', 'hy', 'bg', 'bs',
                        'ca', 'cnr', 'sq', 'zh', 'hr', 'cs', 'da', 'nl', 'en',
                        'et', 'fi', 'fr', 'ka', 'kk', 'de', 'el', 'he', 'hi',
                        'hu', 'id', 'it', 'ja', 'ko', 'ky', 'lv', 'lt', 'mk',
                        'mn', 'ms', 'no', 'fa', 'pl', 'pt', 'ro', 'ru', 'sr',
                        'sk', 'sl', 'so', 'es', 'sv', 'th', 'tr', 'uk', 'uz',
                        'vi'].
                Invalid document age value:
                  summary: '`poa_document_age_months`の値が1〜120 / -1の範囲外'
                  value:
                    poa_document_age_months:
                      - >-
                        Invalid integer value for 'utility_bill': '999'. Must be
                        -1 (unlimited) or a positive integer between 1 and 120.
                Extraction failure:
                  summary: 抽出パイプラインで書類を処理できませんでした
                  value:
                    error:
                      - Error extracting POA information
        '403':
          description: >-
            権限がありません。`x-api-key`ヘッダーがない場合に加え、呼び出し元の組織の残高が呼び出しを賄えない場合にも返されます。誤った、取り消された、または期限切れのキーの場合は`401`が返されます。キーがない場合は`{"detail":
            ...}`とともに`403`が返され、誤った、取り消された、または期限切れのキーの場合は`401`が返されます。クレジット不足の場合は、書類の処理が行われる前に`{"error":
            ...}`とともに`403`が返されます。
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: '`x-api-key`ヘッダーがないか、キーが無効または失効しています'
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: 組織の残高でこの呼び出しの料金を賄えません
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            レート制限を超過しました。すべてのPOST/PATCH/DELETEエンドポイントは、APIキーごとに1分あたり300件の書き込みリクエストという共通の上限を共有します。レスポンスには`X-RateLimit-Limit`、`X-RateLimit-Remaining`、`X-RateLimit-Reset`、`Retry-After`ヘッダーが含まれます。
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: 現在の1分間に300件を超える書き込みリクエスト
                  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/poa/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -F 'document=@./utility-bill.pdf' \
              -F 'expected_address=Av. Monseñor Tavella 1291, Salta, Argentina' \
              -F 'expected_country=ARG' \
              -F 'expected_first_name=Sophia' \
              -F 'expected_last_name=Martinez' \
              -F 'poa_languages_allowed=en,es' \
              -F 'vendor_data=user-123' \
              --max-time 45
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.proof_of_address.verify(
                document=open("document.pdf", "rb"),
                expected_address="Av. Monseñor Tavella 1291, Salta, Argentina",
                expected_country="ARG",
                expected_first_name="Sophia",
                expected_last_name="Martinez",
                poa_languages_allowed="en,es",
                save_api_request=True,
                vendor_data="user-123",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit, { fileFromPath } from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.proofOfAddress.verify({
              document: await fileFromPath("document.pdf"),
              expected_address: "Av. Monseñor Tavella 1291, Salta, Argentina",
              expected_country: "ARG",
              expected_first_name: "Sophia",
              expected_last_name: "Martinez",
              poa_languages_allowed: "en,es",
              save_api_request: true,
              vendor_data: "user-123",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.ProofOfAddress.Verify(ctx, didit.ProofOfAddressVerifyParams{\n\tDocument:            didit.FileFromPath(\"document.pdf\"),\n\tExpectedAddress:     didit.String(\"Av. Monseñor Tavella 1291, Salta, Argentina\"),\n\tExpectedCountry:     didit.String(\"ARG\"),\n\tExpectedFirstName:   didit.String(\"Sophia\"),\n\tExpectedLastName:    didit.String(\"Martinez\"),\n\tPOALanguagesAllowed: didit.String(\"en,es\"),\n\tSaveAPIRequest:      didit.Bool(true),\n\tVendorData:          didit.String(\"user-123\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import me.didit.Didit;

            import me.didit.types.ProofOfAddressVerifyParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.proofOfAddress().verify(ProofOfAddressVerifyParams.builder()
                    .document(Path.of("document.pdf"))
                    .expectedAddress("Av. Monseñor Tavella 1291, Salta, Argentina")
                    .expectedCountry("ARG")
                    .expectedFirstName("Sophia")
                    .expectedLastName("Martinez")
                    .poaLanguagesAllowed("en,es")
                    .saveApiRequest(true)
                    .vendorData("user-123")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;
            use Didit\File;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->proofOfAddress->verify([
                'document' => File::fromPath('document.pdf'),
                'expected_address' => 'Av. Monseñor Tavella 1291, Salta, Argentina',
                'expected_country' => 'ARG',
                'expected_first_name' => 'Sophia',
                'expected_last_name' => 'Martinez',
                'poa_languages_allowed' => 'en,es',
                'save_api_request' => true,
                'vendor_data' => 'user-123',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.proof_of_address.verify(
              document: Pathname("document.pdf"),
              expected_address: "Av. Monseñor Tavella 1291, Salta, Argentina",
              expected_country: "ARG",
              expected_first_name: "Sophia",
              expected_last_name: "Martinez",
              poa_languages_allowed: "en,es",
              save_api_request: true,
              vendor_data: "user-123"
            )
            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.ProofOfAddress.VerifyAsync(new
            ProofOfAddressVerifyParams

            {
                Document = FileUpload.FromPath("document.pdf"),
                ExpectedAddress = "Av. Monseñor Tavella 1291, Salta, Argentina",
                ExpectedCountry = "ARG",
                ExpectedFirstName = "Sophia",
                ExpectedLastName = "Martinez",
                PoaLanguagesAllowed = "en,es",
                SaveApiRequest = true,
                VendorData = "user-123",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: 検出されたシンボロジー。例：`QR_CODE`、`CODE_128`、`EAN_13`、`DATA_MATRIX`、`PDF_417`。
        page_number:
          type: integer
          minimum: 1
          description: ページ番号（1始まり）。
        position:
          type: array
          nullable: true
          description: レンダリングされたページのピクセル座標で表した、検出されたポリゴン。信頼できる位置が得られない場合は`null`です。
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: バウンディングボックスの左端。レンダリングされたページのピクセル単位で表します。
        'y':
          type: integer
          nullable: true
          description: レンダリングされたページのピクセル単位で表した、バウンディングボックスの上端。
        width:
          type: integer
          nullable: true
          description: レンダリングされたページのピクセル単位でのバウンディングボックスの幅。
        height:
          type: integer
          nullable: true
          description: レンダリングされたページのピクセル単位でのバウンディングボックスの高さ。
        page_width:
          type: integer
          description: レンダリングされたページの幅(ピクセル)。
        page_height:
          type: integer
          description: レンダリングされたページの高さ(ピクセル)。
        raw_payload:
          type: string
          description: 利用可能な場合はデコーダーの生のペイロードをBase64文字列で返し、それ以外の場合は空文字列を返します。
        parsed_payload:
          nullable: true
          description: デコードされた文字列または構造化された値。コードの位置は特定できたもののデコードできなかった場合は`null`です。
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys

````

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