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

# 디지털 ID 지갑 인증 취소

> Didit에서 대기 중인 독립형 디지털 ID 지갑 인증(standalone digital ID wallet verification)을 취소합니다.

이 엔드포인트는 사용자가 애플리케이션에서 대기 중인 지갑 인증을 중단할 때 호출합니다.
인증을 시작한 애플리케이션에 속한 API 키로 인증합니다.

취소가 완료된 인증과 경합에서 이겼다고 가정하지 말고, 반환된 결과를 확인합니다.
취소는 이미 완료된 신원 인증을 되돌리는 방법이 아닙니다.

전체 연동 절차는 [Digital ID wallet APIs](https://docs.didit.me/ko/standalone-apis/digital-id-wallets.md)를 참고하십시오.


## OpenAPI

````yaml ko/openapi-25.json POST /v3/id-verification/wallets/verifications/{request_id}/cancel/
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/id-verification/wallets/verifications/{request_id}/cancel/:
    post:
      tags:
        - Digital ID wallets
      summary: 지갑 인증 취소
      description: >-
        대기 중인 인증을 철회합니다: 취소됨으로 거부되며 결제되지 않습니다. 이미 결정된 인증은 변경 없이 반환됩니다. Smart-ID
        및 Mobile-ID: 로그인을 폴링으로 확인하는 중에 취소 요청이 도착하면 해당 폴링을 몇 초 동안 기다린 후 거부하거나,
        사용자가 이미 확인한 경우에는 인증됨으로 반환합니다. 사용자가 지금 완료 중인 인증은 취소할 수 없습니다(Retry-After가
        포함된 409 verification_in_progress). 해당 시간(초)이 지난 후 재시도하여 결과를 확인하세요.
      operationId: cancel_wallet_verification
      parameters:
        - in: path
          name: request_id
          schema:
            type: string
            format: uuid
          description: start endpoint가 반환한 request_id입니다.
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DigitalIdWalletApiWalletVerificationResponse
              example:
                request_id: 00000000-0000-4000-8000-000000000001
                wallet_verification:
                  wallet:
                    id: ftn
                    name: Finnish Trust Network
                    issuing_authority: Finnish banks and mobile operators (FTN)
                  country: FIN
                  status: Declined
                  outcome: cancelled
                  error: cancelled_by_customer
                  interaction: redirect
                  simulated: false
                  expires_at: '2026-01-01T10:10:00Z'
                  next_action: null
                  identity: null
                  attributes: null
                  level_of_assurance: null
                  verified_at: null
                  signature_valid: null
                  credential_type: person_identification
                vendor_data: your-customer-reference
                metadata:
                  reference: example
                created_at: '2026-01-01T10:00:00Z'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage
          description: '자격 증명(x-api-key 또는 Authorization: Bearer)이 누락되었습니다.'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DigitalIdWalletApiWalletVerificationError'
          description: '오류 not_found: 이 애플리케이션의 어떤 지갑 인증에도 이 request_id가 없습니다.'
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DigitalIdWalletApiWalletVerificationError'
          description: >-
            오류 verification_in_progress: 사용자가 현재 이 로그인을 완료하고 있습니다. Retry-After
            헤더는 재시도 시점을 나타냅니다. 재시도 시 결정된 인증이 반환됩니다.
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request POST \
              --url https://verification.didit.me/v3/id-verification/wallets/verifications/REQUEST_ID/cancel/ \
              --header 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.id_wallets.cancel_verification(
                "11111111-2222-3333-4444-555555555555",
            )
            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.idWallets.cancelVerification("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.CancelVerification(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.idWallets().cancelVerification("11111111-2222-3333-4444-555555555555");

            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->idWallets->cancelVerification('11111111-2222-3333-4444-555555555555');

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


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.id_wallets.cancel_verification("11111111-2222-3333-4444-555555555555")

            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.IdWallets.CancelVerificationAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    DigitalIdWalletApiWalletVerificationResponse:
      type: object
      description: 모든 지갑 endpoint가 응답하는 단일 독립형 지갑 검증입니다.
      properties:
        request_id:
          type: string
          format: uuid
        wallet_verification:
          $ref: '#/components/schemas/DigitalIdWalletApiWalletVerificationResult'
        vendor_data:
          type: string
          nullable: true
        metadata:
          type: object
          additionalProperties: {}
          nullable: true
          description: 시작 시 전송된 메타데이터 객체 또는 null입니다.
        created_at:
          type: string
          format: date-time
      required:
        - created_at
        - metadata
        - request_id
        - vendor_data
        - wallet_verification
    DigitalIdWalletApiClientCredentialsForbiddenErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: Forbidden - User doesn't have permission
    DigitalIdWalletApiWalletVerificationError:
      type: object
      properties:
        error:
          type: string
          description: '기계 판독 가능한 고정 코드입니다(예: wallet_unavailable).'
        detail:
          type: string
      required:
        - detail
        - error
    DigitalIdWalletApiWalletVerificationResult:
      type: object
      properties:
        wallet:
          allOf:
            - $ref: '#/components/schemas/DigitalIdWalletApiWallet'
          readOnly: true
        country:
          type: string
        status:
          type: string
          description: 보류 중인 동안에는 완료되지 않음, 이후 승인됨(인증됨) 또는 거부됨.
        outcome:
          $ref: >-
            #/components/schemas/DigitalIdWalletApiWalletVerificationResultOutcomeEnum
        error:
          type: string
          nullable: true
          readOnly: true
        interaction:
          allOf:
            - $ref: '#/components/schemas/DigitalIdWalletApiInteractionEnum'
          readOnly: true
        simulated:
          type: boolean
          readOnly: true
        expires_at:
          type: string
          format: date-time
        next_action:
          allOf:
            - $ref: '#/components/schemas/DigitalIdWalletApiWalletNextAction'
          nullable: true
          readOnly: true
        identity:
          allOf:
            - $ref: '#/components/schemas/DigitalIdWalletApiWalletIdentity'
          nullable: true
          readOnly: true
        attributes:
          type: object
          additionalProperties: {}
          nullable: true
          readOnly: true
        level_of_assurance:
          type: string
          nullable: true
        verified_at:
          type: string
          format: date-time
          nullable: true
        signature_valid:
          type: boolean
          nullable: true
          description: 자격 증명의 서명이 검증되면 true이고, 시뮬레이션된 자격 증명의 경우 null입니다.
        credential_type:
          type: string
          nullable: true
      required:
        - attributes
        - country
        - credential_type
        - error
        - expires_at
        - identity
        - interaction
        - level_of_assurance
        - next_action
        - outcome
        - signature_valid
        - simulated
        - status
        - verified_at
        - wallet
    DigitalIdWalletApiWallet:
      type: object
      properties:
        id:
          type: string
          description: '지갑의 카탈로그 id(예: bankid_se).'
        name:
          type: string
        issuing_authority:
          type: string
          nullable: true
      required:
        - id
        - issuing_authority
        - name
    DigitalIdWalletApiWalletVerificationResultOutcomeEnum:
      enum:
        - pending
        - verified
        - cancelled
        - timeout
        - failed
      type: string
      description: |-
        * `pending` - 대기 중
        * `verified` - 확인됨
        * `cancelled` - 사용자에 의해 취소됨
        * `timeout` - 시간 초과
        * `failed` - 실패함
    DigitalIdWalletApiInteractionEnum:
      enum:
        - redirect
        - in_app
        - digital_credentials
      type: string
      description: |-
        * `redirect` - redirect
        * `in_app` - in_app
        * `digital_credentials` - digital_credentials
    DigitalIdWalletApiWalletNextAction:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/DigitalIdWalletApiWalletNextActionTypeEnum'
          description: >-
            redirect: 사용자의 브라우저를 url로 이동시킵니다. confirm_in_app: 사용자에게
            verification_code를 표시하고 사용자가 지갑 앱의 코드와 일치하는지 확인한 후 승인하면 폴링합니다.
            request_digital_credential: 시작했던 origin에서 사용자 제스처를 통해
            digital_credentials.request로 지갑에 요청한 후 반환된 값을 POST
            .../verifications/{request_id}/response/로 전송합니다.


            * `redirect` - redirect

            * `confirm_in_app` - confirm_in_app

            * `request_digital_credential` - request_digital_credential
        url:
          type: string
          format: uri
          description: 'redirect 전용: 사용자가 지갑으로 로그인하는 위치입니다.'
        digital_credentials:
          allOf:
            - $ref: >-
                #/components/schemas/DigitalIdWalletApiWalletDigitalCredentialsRequest
          description: 'request_digital_credential 전용: 지갑에 전달할 요청입니다.'
        verification_code:
          type: string
          description: 'confirm_in_app 전용: 지갑 앱에도 표시되는 4자리 비교 코드입니다.'
        poll_interval_seconds:
          type: integer
          description: >-
            confirm_in_app 전용: 즉각적인 피드백을 위해 POST
            .../verifications/{request_id}/poll/을 호출하는 주기입니다. Didit은 백그라운드에서도 대기
            중인 로그인을 폴링하므로 사용자가 폴링하지 않더라도 webhook이 결과를 보고합니다.
      required:
        - type
    DigitalIdWalletApiWalletIdentity:
      type: object
      properties:
        full_name:
          type: string
          nullable: true
        first_name:
          type: string
          nullable: true
        last_name:
          type: string
          nullable: true
        date_of_birth:
          type: string
          format: date
          nullable: true
        nationality:
          type: string
          nullable: true
          description: 지갑이 국적을 명시한 경우에만 제공되는 ISO3 국적입니다(절대 유추되지 않음).
        issuing_state:
          type: string
          description: 신원을 발급한 체계의 ISO3 국가입니다.
      required:
        - date_of_birth
        - first_name
        - full_name
        - issuing_state
        - last_name
        - nationality
    DigitalIdWalletApiWalletNextActionTypeEnum:
      enum:
        - redirect
        - confirm_in_app
        - request_digital_credential
      type: string
      description: |-
        * `redirect` - redirect
        * `confirm_in_app` - confirm_in_app
        * `request_digital_credential` - request_digital_credential
    DigitalIdWalletApiWalletDigitalCredentialsRequest:
      type: object
      properties:
        protocol:
          type: string
          description: openid4vp-v1-signed.
        request:
          type: object
          additionalProperties: {}
          description: >-
            그대로 전달하세요. 브라우저에서는 navigator.credentials.get({digital: request}),
            Android에서는 GetDigitalCredentialOption의 requestJson으로
            JSON.stringify(request)를 사용합니다. 귀하의 애플리케이션을 위해 Didit이 서명했습니다.
      required:
        - protocol
        - request
  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 를 참고하십시오.
    BearerAuth:
      type: http
      scheme: bearer
      description: 애플리케이션의 클라이언트 자격 증명 액세스 token입니다.

````

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