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

# 再提出依頼メールのプレビュー

> Diditで再提出をリクエストする前に、受信者、送信者、ローカライズされたメッセージ、認証リンクをプレビューで確認できます。

プレビューを実行しても、セッションは変更されず、メールも送信されません。
レスポンスを確認したら、[セッションステータスの更新](https://docs.didit.me/ja/sessions-api/update-status.md)で確定し、返された`preview_token`を`email_preview_token`として渡します。
このレシートの有効期限は15分です。
変更された、または期限切れのレシートを渡すと、セッションが変更されたりメールが送信されたりする前に`409`が返されます。
競合が発生した場合は、新しいプレビューを生成してください。
既存のAPI連携ではレシートを省略できます。コンソールは、プレビューを確定する際にレシートを渡します。

送信者とブランディングは、既存の[ホワイトラベル設定](https://docs.didit.me/ja/console/white-label.md)に従います。
メッセージの内容は翻訳済みの認証テンプレートから生成されます。任意の件名、本文、アクションURLをテンプレートの入力として指定することはできません。

## メールの受信者

`email_address`は省略可能です。
指定しない場合、メールは本人のアドレスに送信されます。フローのメールアドレス認証ステップで本人が認証したアドレスがあればそのアドレス、なければセッション作成時に`contact_details`で指定されたアドレスです。
`email_address`でアドレスを渡した場合は、そのアドレスが優先されます。

`recipient_source`は、どのアドレスが適用されるかを示します。

| `recipient_source` | `recipient`の取得元 |
| - | - |
| `email_verification` | フローで本人が認証したアドレス |
| `contact_details` | セッション作成時に`contact_details`で指定されたアドレス |
| `request` | 渡した`email_address` |
| `""`(空) | 既知のアドレスがありません。`recipient`と`preview_token`は空になり、メールは送信できません |

## メールが送信されるかどうか

`will_be_sent`は、`send_email: true`を指定して再提出を確定したときにメールが送信される場合に`true`になります。
`false`の場合は、`not_sent_reason`にその理由が示されます。

| `not_sent_reason` | 意味 |
| - | - |
| `no_user_action` | 選択したすべてのステップが本人の操作なしで実行される(例: AMLやデータベース検証)ため、再提出は自動的に完了し、メールは送信されません。`requires_user_action`も`false`になります。 |
| `no_recipient` | 本人のメールアドレスが不明で、メールアドレスも指定されていません。 |
| `sandbox` | セッションがサンドボックスセッションであり、受信者がサンドボックスでのメール配信にオプトインしていないため、メールの送信はシミュレーションのみとなります。[メールのオプトイン](https://docs.didit.me/ja/integration/sandbox-testing.md#otpコードとメールのオプトイン)を参照してください。 |

## 再提出の確定

以下のフィールドを指定して[セッションステータスの更新](https://docs.didit.me/ja/sessions-api/update-status.md)を呼び出します。

| セッションステータスの更新のフィールド | 値 |
| - | - |
| `new_status` | `Resubmitted` |
| `nodes_to_resubmit` | プレビューしたものと同じ選択内容（プレビューで省略した場合は、このフィールドも省略します） |
| `send_email` | `true` |
| `email_address` | プレビューの`recipient` |
| `email_language` | プレビューに送信したものと同じ`email_language` |
| `email_preview_token` | プレビューの`preview_token` |

レスポンスの`language`は、メールの言語です。指定した言語が提供されていない場合は英語になります。

## バックエンドのみで繰り返し再提出する場合

再提出するすべてのステップが本人の操作なしで実行される場合(AML、データベース検証、IP分析)、その人のセッションを再提出できるのは30秒に1回までです。
この期間内は、セッションステータスの更新と同様にプレビューも`429`を返し、待機時間は`Retry-After`ヘッダーに示されます。

## 関連情報

* [セッションステータスの更新](https://docs.didit.me/ja/sessions-api/update-status.md): 再提出を確定します。
* [判定メールのプレビュー](https://docs.didit.me/ja/sessions-api/preview-decision-email.md): 代わりに承認済みまたは却下のメールをプレビューします。
* [ホワイトラベル](https://docs.didit.me/ja/console/white-label.md): メールで使用される送信者とブランディング。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/session/{sessionId}/resubmission-preview/
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/session/{sessionId}/resubmission-preview/:
    post:
      tags:
        - Sessions
      summary: 再提出メールをプレビューする
      description: >-
        KYCまたはKYBの再提出時に送信されるメールを、セッションを変更せずに生成します。チェックのリセット、有効期限の延長、チェックの実行、メールの送信は行いません。`write:sessions`権限(スコープ付きAPIキーの場合は判定への書き込みアクセス)と、ステータスが`Approved`、`Declined`、`In
        Review`、`Kyc
        Expired`、`Abandoned`のいずれかであるセッションが必要です。サーバーは選択されたワークフローのステップを検証し、適用される検証済みのホワイトラベル送信者とブランディングを使って、翻訳済みの固定テンプレートをレンダリングします。リクエストで件名、メッセージ本文、アクションURLを設定することはできません。


        `email_address`は任意です。指定しない場合、メールは本人のアドレスに送信されます。フロー内のメールアドレス認証ステップで本人が認証したアドレスが使われ、それがない場合はセッション作成時に`contact_details`で指定されたアドレスが使われます。指定したアドレスが優先されます(`recipient_source:
        request`)。アドレスが不明で、かつ指定もしない場合、`recipient`と`preview_token`は空文字列となり、メールは送信できません。


        レスポンスには、受信者とその取得元、送信者、件名、HTML、言語、解決されたステップ、確定時にメールが送信されるかどうか(`will_be_sent`、`not_sent_reason`)、署名付きの`preview_token`が含まれます。選択されたすべてのステップが本人の操作なしで実行される場合、`requires_user_action`は`false`になります。この場合、再提出は自動的に完了し、メールは送信されません(`not_sent_reason:
        no_user_action`)。


        このプレビューは、セッションの状態を確保するものでも、配信を許可するものでもありません。内容を確認した後、[セッションステータスの更新](/ja/sessions-api/update-status)を呼び出し、`new_status:
        Resubmitted`、プレビューしたものと同じ`nodes_to_resubmit`と`email_language`、`send_email:
        true`、`recipient`の値を設定した`email_address`、`preview_token`の値を設定した`email_preview_token`を指定してください。このレシートの有効期限は15分です。レシートを指定した場合、入力、メッセージ内容、送信者、セッションの状態のいずれかが変更されていると、変更や送信が行われる前に`409`が返されます。既存の連携ではレシートを省略できます。競合が発生した場合は、プレビューを再生成してください。レスポンスは機密性の高い認証コンテンツとして扱ってください。レスポンスには`Cache-Control:
        no-store`が付与されます。HTMLはサンドボックス化されたフレーム内でレンダリングし、アプリケーションのDOMに直接レンダリングしないでください。
      operationId: post_v3_session_resubmission_preview
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            更新する検証セッションのUUID。ユーザー(KYC)と企業(KYB)の両方のセッションIDを受け付けます。サービスは両方のセッションタイプにわたってIDを解決します。
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nodes_to_resubmit:
                  type: array
                  description: >-
                    プレビューするステップ。再提出と同じ検証、選択、ワークフローの順序が使われます。省略すると、再提出が必要な記録済みの試行が自動的に選択されます。
                  items:
                    type: object
                    required:
                      - node_id
                      - feature
                    properties:
                      node_id:
                        type: string
                        description: >-
                          セッションのワークフロー定義に記載されているノード識別子(例:`feature_ocr`、`feature_liveness`)。
                        example: feature_ocr
                      feature:
                        type: string
                        description: >-
                          ノードの機能タイプです。エイリアス`ID_VERIFICATION`、`POA`、`PHONE`、`EMAIL`は、サーバー側でそれぞれ`OCR`、`PROOF_OF_ADDRESS`、`PHONE_VERIFICATION`、`EMAIL_VERIFICATION`に正規化されます。`KYB_REGISTRY`、`KYB_KEY_PEOPLE`、`KYB`はスキーマ検証を通過しますが、例に示すビジネスルール上の`400`で常に拒否されます。
                        enum:
                          - OCR
                          - OCR_BACK
                          - NFC
                          - AML
                          - FACE
                          - LIVENESS
                          - FACE_MATCH
                          - IP_ANALYSIS
                          - AGE_ESTIMATION
                          - PROOF_OF_ADDRESS
                          - PHONE_VERIFICATION
                          - EMAIL_VERIFICATION
                          - FACE_SEARCH
                          - DATABASE_VALIDATION
                          - QUESTIONNAIRE
                          - DOCUMENT_AI
                          - KYB_DOCUMENTS
                          - ID_VERIFICATION
                          - POA
                          - PHONE
                          - EMAIL
                          - KYB_REGISTRY
                          - KYB_KEY_PEOPLE
                          - KYB
                          - GEOLOCATION
                        example: OCR
                email_address:
                  type: string
                  format: email
                  description: >-
                    任意。本人のアドレスではなく、このアドレスにメールを送信します。指定しない場合、受信者はフロー内で本人が認証したアドレス、それがなければ`contact_details`で指定されたアドレスになります。この呼び出しではメールは送信されません。
                  example: user@example.com
                email_language:
                  type: string
                  description: >-
                    通知メールの言語。スキーマ上は任意の文字列を受け付けますが、対応していないコードは通知なく英語(`en`)にフォールバックします。
                  default: en
                  example: en
            examples:
              Person's Own Address:
                summary: 本人の住所に対する住所証明の再提出をプレビューする
                value:
                  nodes_to_resubmit:
                    - node_id: feature_poa_1
                      feature: POA
                  email_language: en
              Named Recipient:
                summary: 指定したアドレス宛てのメールをプレビューする
                value:
                  nodes_to_resubmit:
                    - node_id: feature_ocr
                      feature: OCR
                  email_address: person@example.com
                  email_language: en
      responses:
        '200':
          description: プレビューのみです。セッションは変更されず、メールも送信されません。
          content:
            application/json:
              schema:
                type: object
                required:
                  - recipient
                  - recipient_source
                  - sender
                  - sender_name
                  - sender_email
                  - sender_kind
                  - subject
                  - html
                  - text
                  - language
                  - will_be_sent
                  - not_sent_reason
                  - preview_token
                  - nodes_to_resubmit
                  - requires_user_action
                properties:
                  recipient:
                    type: string
                    description: >-
                      メールの送信先アドレス。その人物のアドレスが不明な場合は空文字列です。その場合はメールを送信できず、`preview_token`も空になります。確認時に`email_address`として渡してください。
                    example: person@example.com
                  recipient_source:
                    type: string
                    enum:
                      - email_verification
                      - contact_details
                      - request
                      - ''
                    description: >-
                      `recipient`の取得元。`request`：指定した`email_address`。`email_verification`：フローのメールアドレス認証ステップで本人が認証したアドレス。`contact_details`：セッション作成時に`contact_details`で指定されたアドレス。アドレスがない場合は空文字列です。
                    example: email_verification
                  sender:
                    type: string
                    description: メールの送信時に使われる`From`ヘッダーです。
                    example: Example App <no-reply@mail.example.com>
                  sender_name:
                    type: string
                    description: '`sender`の表示名の部分です。'
                    example: Example App
                  sender_email:
                    type: string
                    format: email
                    description: '`sender`のアドレス部分。'
                    example: no-reply@mail.example.com
                  sender_kind:
                    type: string
                    enum:
                      - customer
                      - didit
                    description: >-
                      `customer`:
                      メールはアプリケーションの検証済み送信元ドメインから送信されます（ホワイトラベル）。`didit`:
                      メールはDidit独自の送信元から送信されます。
                    example: customer
                  subject:
                    type: string
                    description: 送信されたとおりの件名。
                    example: 'Action Required: Complete your verification in Example App'
                  html:
                    type: string
                    description: >-
                      送信されるとおりのメールのHTMLで、ロゴはデータURLとして埋め込まれています。サンドボックス化されたフレーム内でレンダリングし、アプリケーションのDOMに直接レンダリングしないでください。
                    example: <!DOCTYPE html><html><body>...</body></html>
                  text:
                    type: string
                    description: >-
                      コンパクトなプレビュー用の、メール本文のプレーンテキストです。本人のメッセージスレッドに保存されている内容と同じです（本人が受け取るメールはHTMLのままです）。
                    example: |-
                      Almost there

                      Some steps need to be completed again.
                      Here’s what to fix:

                      https://verify.didit.me/session/abc123
                  language:
                    type: string
                    description: メールの記述言語です。指定した`email_language`が提供されていない場合は英語(`en`)です。
                    example: en
                  will_be_sent:
                    type: boolean
                    description: >-
                      `send_email:
                      true`で変更を確定したときにこのメールが送信されるかどうかです。`not_sent_reason`が設定されている場合は`false`です。
                    example: true
                  not_sent_reason:
                    type: string
                    nullable: true
                    enum:
                      - no_user_action
                      - no_recipient
                      - sandbox
                      - null
                    description: >-
                      確定してもメールが送信されない理由、または送信される場合は`null`。`no_user_action`：選択されたすべてのステップが本人の操作なしで実行されるため、再提出は自動的に完了し、メールは送信されません。`no_recipient`：本人のアドレスが不明で、あなたも指定していません。`sandbox`：受信者がサンドボックスでのメール配信をオプトインしていないサンドボックスセッションのため、送信はシミュレーションのみです。
                    example: null
                  nodes_to_resubmit:
                    type: array
                    items:
                      type: object
                      required:
                        - node_id
                        - feature
                      properties:
                        node_id:
                          type: string
                          description: >-
                            セッションのワークフロー定義に記載されているノード識別子(例:`feature_ocr`、`feature_liveness`)。
                          example: feature_ocr
                        feature:
                          type: string
                          description: >-
                            ノードの機能タイプです。エイリアス`ID_VERIFICATION`、`POA`、`PHONE`、`EMAIL`は、サーバー側でそれぞれ`OCR`、`PROOF_OF_ADDRESS`、`PHONE_VERIFICATION`、`EMAIL_VERIFICATION`に正規化されます。`KYB_REGISTRY`、`KYB_KEY_PEOPLE`、`KYB`はスキーマ検証を通過しますが、例に示すビジネスルール上の`400`で常に拒否されます。
                          enum:
                            - OCR
                            - OCR_BACK
                            - NFC
                            - AML
                            - FACE
                            - LIVENESS
                            - FACE_MATCH
                            - IP_ANALYSIS
                            - AGE_ESTIMATION
                            - PROOF_OF_ADDRESS
                            - PHONE_VERIFICATION
                            - EMAIL_VERIFICATION
                            - FACE_SEARCH
                            - DATABASE_VALIDATION
                            - QUESTIONNAIRE
                            - DOCUMENT_AI
                            - KYB_DOCUMENTS
                            - ID_VERIFICATION
                            - POA
                            - PHONE
                            - EMAIL
                            - KYB_REGISTRY
                            - KYB_KEY_PEOPLE
                            - KYB
                            - GEOLOCATION
                          example: OCR
                  requires_user_action:
                    type: boolean
                    description: >-
                      選択したチェックのうち少なくとも1つがユーザーの操作を必要とするかどうかです。ワークフローの最終結果を予測するものではありません。
                  preview_token:
                    type: string
                    description: >-
                      このメールに対する署名付きレシートで、有効期間は15分です。[セッションステータスを更新](/ja/sessions-api/update-status)に`email_preview_token`として渡してください。受信者がいない場合は空文字列です。
                    example: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
              examples:
                Will Be Sent:
                  summary: デフォルトの受信者：フロー内で検証されたアドレス
                  value:
                    recipient: person@example.com
                    recipient_source: email_verification
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: true
                    not_sent_reason: null
                    nodes_to_resubmit:
                      - node_id: feature_poa_1
                        feature: PROOF_OF_ADDRESS
                    requires_user_action: true
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
                No User Action:
                  summary: バックエンドステップのみが選択されるため、メールは送信されません
                  value:
                    recipient: person@example.com
                    recipient_source: contact_details
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: false
                    not_sent_reason: no_user_action
                    nodes_to_resubmit:
                      - node_id: feature_aml
                        feature: AML
                    requires_user_action: false
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
          headers:
            Cache-Control:
              description: 常に`no-store`です。プレビューには認証内容が含まれるため、キャッシュしてはなりません。
              schema:
                type: string
                example: no-store
        '400':
          description: >-
            セッションがこのエンドポイントで受け付けるステータスではない、すでに`Resubmitted`である、選択したステップを再提出できない、またはフィールドが無効です。
          content:
            application/json:
              examples:
                Wrong Current Status:
                  summary: セッションが、このエンドポイントで受け付けるステータスではありません
                  value:
                    detail: >-
                      Only sessions with status Approved, Declined, In Review,
                      Kyc Expired, Abandoned, Resubmitted can be updated.
                      Current status: In Progress
                Already Resubmitted:
                  summary: セッションはすでにResubmittedです
                  value:
                    - The new status is the same as the current status.
                Nothing To Resubmit:
                  summary: 自動選択で再提出が必要なステップが見つかりませんでした
                  value:
                    nodes_to_resubmit: >-
                      No features found that need resubmission. All features are
                      already approved.
                Invalid Email:
                  summary: email_addressがメールアドレスではありません
                  value:
                    email_address:
                      - Enter a valid email address.
        '401':
          description: スコープ付きAPIキーの有効期限が切れています。
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: 有効期限を過ぎたスコープ付きAPIキー
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            認証情報がない、呼び出し元に`write:sessions`権限がない、スコープ付きAPIキーにこのエンドポイントに必要なアクセス権がない、または`session_id`が別のアプリケーションに属しています。
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-keyがないか無効です
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: 呼び出し元にwrite:sessions権限がありません
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: このアクセス権を持たないスコープ付きAPIキー
                  value:
                    detail: This API key has no write access to decisions.
        '404':
          description: この`session_id`を持つKYCまたはKYBセッションが存在しません。
          content:
            application/json:
              examples:
                Not Found:
                  summary: 不明なsession_id
                  value:
                    detail: Not found.
        '429':
          description: >-
            再提出するステップがすべてバックエンドのみのステップ（AML、DATABASE_VALIDATION、IP_ANALYSIS）であり、このセッションは過去30秒以内にバックエンドのみのステップですでに再提出されているため、Update
            Session Statusは再提出を拒否します。`Retry-After`の間隔が経過してから再試行してください。
          content:
            application/json:
              examples:
                Backend-only resubmit throttled:
                  value:
                    detail: >-
                      This session was already resubmitted for backend-only
                      features within the last 30 seconds; repeating it cannot
                      change the outcome. Wait before resubmitting again.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.preview_resubmission(
                "11111111-2222-3333-4444-555555555555",
                nodes_to_resubmit=[{
                    "node_id": "feature_poa_1",
                    "feature": "POA",
                }],
                email_language="en",
            )
            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.sessions.previewResubmission("11111111-2222-3333-4444-555555555555",
            {
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.PreviewResubmission(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsPreviewResubmissionParams{\n\tNodesToResubmit: didit.Some([]didit.SessionsPreviewResubmissionParamsNodesToResubmit{{\n\t\tNodeID:  \"feature_poa_1\",\n\t\tFeature: \"POA\",\n\t}}),\n\tEmailLanguage: didit.String(\"en\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.SessionsPreviewResubmissionParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().previewResubmission("11111111-2222-3333-4444-555555555555",
            SessionsPreviewResubmissionParams.builder()
                    .nodesToResubmit(List.of(SessionsPreviewResubmissionParams.NodesToResubmit.builder()
                            .nodeId("feature_poa_1")
                            .feature(SessionsPreviewResubmissionParams.NodesToResubmit.Feature.of("POA"))
                            .build()))
                    .emailLanguage("en")
                    .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->sessions->previewResubmission('11111111-2222-3333-4444-555555555555',
            [
                'nodes_to_resubmit' => [[
                    'node_id' => 'feature_poa_1',
                    'feature' => 'POA',
                ]],
                'email_language' => 'en',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.preview_resubmission(
              "11111111-2222-3333-4444-555555555555",
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en"
            )
            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.Sessions.PreviewResubmissionAsync("11111111-2222-3333-4444-555555555555",
            new SessionsPreviewResubmissionParams

            {
                NodesToResubmit = new SessionsPreviewResubmissionParamsNodesToResubmit[]
                {
                    new()
                    {
                        NodeId = "feature_poa_1",
                        Feature = "POA",
                    },
                },
                EmailLanguage = "en",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  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.