> ## 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: 서명된 PDF 재검증

> Didit 전자 서명 단계의 서명 문서를 재검증합니다. 파일 무결성, PAdES 서명, 인증서, 폐기 정보, 타임스탬프를 확인합니다.

단계의 서명된 문서를 다시 확인하고, 결과를 각 서명자의 `validation`에 저장합니다. Didit은 서명된 모든 PDF를 다시 읽고 SHA-256을 확인합니다. 고급(AES) 서명의 경우 PAdES 서명, 인증서, 폐기 정보 및 타임스탬프도 함께 검증합니다. 단순 서명에는 디지털 서명이 없으므로 파일의 무결성만 확인합니다. 다시 서명하지는 않습니다. 콘솔에서는 세션의 **서명** 탭에 있는 **다시 검증** 버튼에 해당합니다.

```bash theme={null}
curl -X POST 'https://verification.didit.me/v3/session/{session_id}/signatures/{node_id}/validate/' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"signature_id": "{signature_id}"}'
```

특정 서명자 한 명만 확인하려면 `signature_id`를 보냅니다. 이를 생략하면 Didit은 단계의 모든 서명자를 확인하며, 서명하지 않은 서명자가 한 명이라도 있으면 `409`와 `signature_not_signed`로 응답합니다. 저장된 서명 PDF가 `sha256_signed`와 더 이상 일치하지 않으면 `400`과 `signature_document_changed`를 반환합니다.

응답은 확인된 서명자를 담은 `{ "signatures": [...] }` 형식입니다. 전체 결과는 `validation.valid`에서, 각 문서의 결과는 `validation.documents[]`에서 확인합니다. 모든 필드는 [서명 다시 검증](https://docs.didit.me/ko/core-technology/electronic-signature/report-electronic-signature.md#서명-다시-검증하기)을 참조하십시오.

## 관련 문서

* [전자 서명 보고서](https://docs.didit.me/ko/core-technology/electronic-signature/report-electronic-signature.md)
* [서명된 문서 다운로드](https://docs.didit.me/ko/sessions-api/electronic-signature/download-signed-document.md)


## OpenAPI

````yaml ko/openapi-25.json POST /v3/session/{sessionId}/signatures/{nodeId}/validate/
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}/signatures/{nodeId}/validate/:
    post:
      tags:
        - Sessions
      summary: 서명 다시 검증
      description: >-
        전자 서명 단계의 서명된 문서를 다시 확인합니다. Didit은 서명된 각 PDF를 다시 읽고, 해당 SHA-256을 확인하며,
        고급(AES) 서명의 경우 PAdES 서명, 인증서, 철회 데이터 및 타임스탬프를 검증한 다음(일반 서명에는 디지털 서명이
        없으므로 파일 무결성만 확인됨) 각 서명자의 `validation`에 결과를 저장하고 업데이트된 항목을 반환합니다. 다시 서명되는
        항목은 없습니다. 한 명의 서명자만 확인하려면 `signature_id`를 전송하세요. 이 값이 없으면 해당 단계의 모든 서명자를
        확인하며, 서명하지 않은 서명자가 있으면 호출이 실패합니다.


        `write:sessions`가 필요하며, API 키로 작동합니다. 콘솔에서는 **Validate again** 버튼입니다.
      operationId: post_v3_session_signature_validate
      parameters:
        - name: sessionId
          in: path
          required: true
          description: 사용자 인증(KYC) 또는 기업 확인(KYB) 세션입니다.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: nodeId
          in: path
          required: true
          description: '전자 서명 단계: `signatures[]` 항목의 `node_id`입니다.'
          schema:
            type: string
            example: feature_signature
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                signature_id:
                  type: string
                  format: uuid
                  description: '`signatures[]` 내 특정 서명자 항목의 `id`입니다.'
            example:
              signature_id: 0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10
      responses:
        '200':
          description: 업데이트된 `validation`을 포함한 확인된 서명자입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  signatures:
                    type: array
                    items:
                      $ref: '#/components/schemas/SignatureResult'
        '400':
          description: 저장된 서명된 PDF가 서명 시 기록된 SHA-256과 더 이상 일치하지 않습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              examples:
                Document changed:
                  summary: 서명된 파일이 해시와 더 이상 일치하지 않습니다.
                  value:
                    code: signature_document_changed
                    detail: signature_document_changed
        '403':
          description: >-
            자격 증명이 누락되었거나, 이 세션을 읽을 수 없는 자격 증명입니다. 키가 누락되면 `403`을 반환하고, 잘못되었거나
            취소되었거나 만료된 키는 `401`을 반환합니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: You do not have permission to perform this action.
        '404':
          description: 일치하는 서명이 없습니다. 세션, 단계 또는 서명자가 존재하지 않거나 삭제되었습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              examples:
                Unknown signer:
                  summary: 이 단계에 해당 서명이 없습니다
                  value:
                    code: signature_not_found
                    detail: signature_not_found
        '409':
          description: 해당 단계의 서명자가 서명하지 않았으므로 검증할 대상이 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              examples:
                Not signed:
                  summary: 서명자가 아직 서명하지 않았습니다.
                  value:
                    code: signature_not_signed
                    detail: signature_not_signed
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.signatures.validate(
                "11111111-2222-3333-4444-555555555555",
                "feature_signature",
                signature_id="0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10",
            )
            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.signatures.validate(
              "11111111-2222-3333-4444-555555555555",
              "feature_signature",
              {
                signature_id: "0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10",
              },
            );
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Signatures.Validate(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", didit.SessionsSignaturesValidateParams{\n\tSignatureID: didit.String(\"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\"),\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.SessionsSignaturesValidateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().signatures().validate("11111111-2222-3333-4444-555555555555",
            "feature_signature", SessionsSignaturesValidateParams.builder()
                    .signatureId("0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10")
                    .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->signatures->validate('11111111-2222-3333-4444-555555555555',
            'feature_signature', [
                'signature_id' => '0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10',
            ]);

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

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

            result = didit.sessions.signatures.validate(
              "11111111-2222-3333-4444-555555555555",
              "feature_signature",
              signature_id: "0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10"
            )
            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.Signatures.ValidateAsync("11111111-2222-3333-4444-555555555555",
            "feature_signature", new SessionsSignaturesValidateParams

            {
                SignatureId = "0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SignatureResult:
      type: object
      description: >-
        하나의 전자 서명 단계에 대한 서명자 1명의 결과입니다. [전자 서명
        보고서](/ko/core-technology/electronic-signature/report-electronic-signature)를
        참조하십시오.
      properties:
        id:
          type: string
          format: uuid
          description: 이 서명자의 증빙을 다운로드하거나 서명을 검증하려면 `signature_id`로 전달하세요.
        node_id:
          type: string
          description: 이를 생성한 워크플로 단계입니다.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: 해당 단계에서 서명자의 진행 위치입니다. `signed`인 경우에만 문서가 서명되었음을 의미합니다.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: 단계의 결과입니다. 경고가 발생하면 해당 규칙을 통해 설정되며, 커스텀 상태 규칙은 그 이후에 적용됩니다.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple`(기본값) 또는 `aes`입니다. `qes`(적격 전자 서명, QES)는 아직 제공되지 않는 부가
            기능입니다.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: Simple 서명의 경우 `pdf`, Advanced(AES)의 경우 `pades`입니다.
        profile:
          type: string
          nullable: true
          description: 고급(AES) 서명이 생성되면 `PAdES-B-LT`, 그렇지 않은 경우 null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                서명자의 성명입니다. 인증된 세션 성명이 없는 Simple 등급(서명자가 직접 입력한 이름이며 인증되지 않음)을
                제외하고는 검증 완료된 성명(승인된 신분증 인증 또는 세션에서 추출)입니다.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: 신고된 주요 인물의 직함입니다.
            roles:
              type: array
              items:
                type: string
              description: 기업에 대해 신고된 주요 인물의 구조화된 역할입니다.
            identity_session_id:
              type: string
              format: uuid
              description: 서명자를 인증한 KYC 세션입니다.
        identity_used:
          type: object
          description: 서명이 기반으로 하는 인증된 신원입니다. 인증된 신원이 없는 Simple 서명의 경우 비어 있습니다.
          properties:
            session_id:
              type: string
              format: uuid
            kyc_id:
              type: string
              format: uuid
              nullable: true
            verified:
              type: boolean
            expected_name:
              type: string
              nullable: true
              description: 서명자가 일치해야 했던 이름입니다.
        certificate:
          type: object
          nullable: true
          description: 문서 서명에 사용된 인증서입니다. 서명되기 전까지는 `null`이며, 단순 서명의 경우 항상 `null`입니다.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: 일련번호(16진수)입니다.
            valid_from:
              type: string
              format: date-time
            valid_until:
              type: string
              format: date-time
        confirmation:
          type: object
          properties:
            channel:
              type: string
              nullable: true
              enum:
                - email
                - sms
              description: 코드가 없는 Simple 서명의 경우 `null`입니다.
            destination:
              type: string
              nullable: true
              description: 코드가 전송된 마스킹된 연락처입니다.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: 입력된 코드(올바른 코드 포함).
        timestamp:
          type: object
          nullable: true
          description: >-
            Didit에서 발급한 서명의 RFC 3161 타임스탬프입니다. 서명 전까지는 `null`이며, 단순 서명의 경우 항상
            `null`입니다.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: AES의 경우 항상 `false`입니다.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: 해당 서명자 사본에 포함된 문서입니다. 서명된 파일을 다운로드하는 데 사용하세요.
              uuid:
                type: string
                format: uuid
                description: '`id`와 동일합니다.'
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: 서명된 문서의 페이지입니다. Word의 경우 변환된 PDF의 페이지입니다.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: 서명자에게 표시된 문서의 SHA-256입니다.
              sha256_signed:
                type: string
                nullable: true
                description: 서명 완료 후 서명된 PDF의 SHA-256입니다.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: '`not_signed`: 열람했으나 서명하지 않았습니다. `not_reached`: 열람한 적이 없습니다.'
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: 해당 단계에서 요구할 때 서명자가 필드가 없는 문서의 끝에 도달한 시점입니다.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: 서명자가 필드가 없는 문서에 동의했거나, 필드가 있는 문서의 필드 작성을 완료한 시점입니다.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  서명 완료된 PDF의 경로입니다. [서명된 문서
                  다운로드](/ko/sessions-api/electronic-signature/download-signed-document)를
                  참고하세요.
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: 필드가 있는 문서의 경우 `fields`, 없는 문서의 경우 `read_and_agree`.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: '`pdf` 또는 Didit에서 PDF로 변환한 Word 문서의 경우 `docx`입니다.'
              conversion:
                type: object
                nullable: true
                description: PDF의 경우 `null`입니다. Word 문서의 경우 원본 파일 및 변환 파일입니다.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: 귀하의 원본 Word 파일 이름입니다.
                  sha256:
                    type: string
                    description: 원본 Word 파일의 SHA-256입니다.
                  size_bytes:
                    type: integer
                    description: 원본 Word 파일 크기입니다.
                  converter:
                    type: string
                    description: PDF를 생성한 변환기의 버전입니다.
              fields:
                type: array
                description: 문서의 필드와 해당 값입니다. 필드가 없는 문서의 경우 비어 있습니다.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: 서명자가 서명 및 이니셜 필드에 적용한 서명과 이니셜입니다. 서명자가 적용하기 전까지는 `null`입니다.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: '`typed`: 필기체 스타일로 작성된 인증된 이름입니다. `drawn`: 손가락이나 마우스로 그린 것입니다.'
            font:
              type: string
              nullable: true
              description: 입력된 서명의 필기체 스타일입니다. 직접 그린 경우 `null`입니다.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: 서명자가 검토 화면에서 문서 전자 서명에 동의한 시점입니다. 문서에 필드가 하나라도 있는 경우 설정됩니다.
        evidence_file:
          type: string
          nullable: true
          description: >-
            서명 완료 후 증빙 PDF의 경로입니다. [서명 증빙
            다운로드](/ko/sessions-api/electronic-signature/download-evidence)를
            참조하세요.
        warnings:
          type: array
          description: >-
            이 서명자에 대해 발생한 경고입니다. [전자 서명
            경고](/ko/core-technology/electronic-signature/warnings-electronic-signature)를
            참고하세요.
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - SIGNATURE_DECLINED
                  - SIGNATURE_OTP_FAILED
                  - SIGNATURE_NAME_MISMATCH
                  - SIGNATURE_IDENTITY_NOT_VERIFIED
                  - SIGNATURE_DOCUMENT_CHANGED
                  - SIGNATURE_FIELD_DATA_MISSING
              node_id:
                type: string
        validation:
          type: object
          nullable: true
          description: >-
            서명된 문서의 마지막 암호학적 검증입니다. 문서가 서명될 때까지 `null`입니다. Didit이 서명 결과를 확인할 수
            없는 경우 `{"valid": null, "reason":
            "signature_provider_outcome_unknown", "checked_at": ...}`이며
            `status`는 `signing`으로 유지됩니다. 서명되지 않은 것으로 처리하십시오.
          properties:
            valid:
              type: boolean
              nullable: true
              description: 모든 문서가 유효한 경우 `true`입니다. 서명 결과를 확인할 수 없는 경우 `null`입니다.
            reason:
              type: string
              description: '`valid`가 `null`일 때 설정됩니다: `signature_provider_outcome_unknown`.'
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: 서명과 타임스탬프가 모두 유효하고 신뢰할 수 있는 경우 `true`입니다.
                  integrity:
                    type: boolean
                    description: 서명 이후 문서가 변경되지 않은 경우 `true`입니다.
                  trusted:
                    type: boolean
                    description: 서명 인증서가 신뢰할 수 있는 루트로 체인되는 경우 `true`입니다.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      EU 신뢰 목록(EU Trusted List) 확인입니다. AES의 경우: `{"status":
                      "not_applicable", "reason": "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      문서 서명에 사용된 인증서입니다. 서명되기 전까지는 `null`이며, 단순 서명의 경우 항상
                      `null`입니다.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: 일련번호(16진수)입니다.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      Didit에서 발급한 서명의 RFC 3161 타임스탬프입니다. 서명 전까지는 `null`이며, 단순
                      서명의 경우 항상 `null`입니다.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: AES의 경우 항상 `false`입니다.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: 서명 링크의 작동이 중단되는 시점입니다.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: 서명자가 코드를 요청했을 때의 IP 주소입니다.
        place:
          type: string
          nullable: true
          description: '수집되지 않음: 항상 `null`입니다.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    SignatureFieldResult:
      type: object
      description: >-
        서명된 문서의 필드이며, 이 서명자 사본에서의 값을 포함합니다.
        [필드](/ko/core-technology/electronic-signature/report-electronic-signature#필드)를
        참조하십시오.
      properties:
        key:
          type: string
          description: '`sign.field_values`에서 사용되는 필드의 키입니다.'
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: 1부터 시작하는 페이지 번호입니다. Word 문서의 경우 변환된 PDF의 페이지입니다.
        x:
          type: number
          description: 페이지 너비의 비율로 표시된 왼쪽 가장자리입니다.
        'y':
          type: number
          description: 페이지 높이 비율 기준 상단 가장자리입니다.
        width:
          type: number
          description: 페이지 너비에 대한 비율로 나타낸 너비입니다.
        height:
          type: number
          description: 페이지 높이에 대한 비율로 나타낸 높이입니다.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            `text`, `email`, `full_name`, `date_signed`, `data`의 경우 문자열,
            `checkbox`의 경우 불리언, 서명 또는 이니셜이 적용된 경우 `true`입니다. 비어 있으면 `null`입니다.
        display_value:
          type: string
          nullable: true
          description: >-
            페이지에 날인된 값입니다. 날짜는 해당 필드의 `date_format` 형식, 체크박스는 `Yes` 또는 `No`, 서명
            또는 이니셜은 `Signed`로 표시됩니다.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            값의 출처: `signer`(서명자가 입력, 체크 또는 적용), `identity`(인증된 신분증),
            `contact`(인증된 이메일 또는 전화번호), `company`(인증된 기업),
            `session`(`vendor_data`), `metadata`, `api`(`sign.field_values`) 또는
            `signing_time`(서명된 날짜).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            서명 및 이니셜 전용: 적용된 이미지의 경로입니다. [서명 이미지
            다운로드](/ko/sessions-api/electronic-signature/download-field-image)를
            참조하세요.
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            사전 입력된 필드가 세션에 값이 없었지만 `signature_field_data_missing_action`을 통해
            서명자가 그대로 서명하도록 허용한 경우 `source_empty`입니다.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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