> ## 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: 대기 중인 단계 오버라이드 삭제

> 사용자가 흐름을 끝내기 전인 단계 상태 오버라이드를 취소하는 방법입니다. Didit에서 취소된 오버라이드는 적용되지 않고 단계 상태가 그대로 유지됩니다.



기능 오버라이드 취소 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Cancel a check (feature) status override on a Didit session that still waits for the person to finish the flow, so it never applies.

Endpoint:
POST https://verification.didit.me/v3/session/{session_id}/features/overrides/{override_id}/cancel/

Authentication:
x-api-key (client API key) or a user-auth token. Privilege: write:sessions. A scoped API key needs write access to decisions.

Path parameters:
\- session_id (UUID): KYC or KYB; Didit resolves it against both session types.
\- override_id (UUID): the id of the override, from the "override" object returned by PATCH /v3/session/{session_id}/features/{node_id}/update-status/ or from GET /v3/session/{session_id}/features/overrides/.

Request body: none.

Only an override whose state is "pending_until_flow_finishes" can be cancelled.

Response (200): the override, with state "cancelled", cancelled_at set and cancel_reason "cancelled_by_reviewer".

Side effects:
\- The check keeps its current status.
\- The cancellation is recorded in the session's activity as FEATURE_OVERRIDE_CANCELLED.
\- No webhook is sent.

curl example:
curl -X POST https://verification.didit.me/v3/session/<SESSION_ID>/features/overrides/<OVERRIDE_ID>/cancel/ \
-H "x-api-key: <API_KEY>"

Failure modes:
\- 401: the scoped API key has expired.
\- 403: missing credentials (a wrong, revoked or expired key gets 401), the caller lacks write:sessions, a scoped key lacks decisions write, or the session belongs to another application ({ "detail": "You do not have permission to perform this action." }).
\- 404: { "detail": "Not found." } when no session with this session_id exists, or { "detail": "Override not found." } when the session has no override with this override_id.
\- 409: { "detail": "This override is no longer pending: it already applied or was cancelled.", "code": "feature_override_not_pending" }.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳

사용자가 아직 플로우를 진행하는 중에 `defer_until_flow_finishes: true`로 단계를 오버라이드하면, 해당 오버라이드는 대기하다가 플로우가 끝나면 적용됩니다.
더 이상 적용하지 않으려면 여기에서 취소하세요.검사는 현재 상태를 유지합니다.
취소 내역은 `FEATURE_OVERRIDE_CANCELLED`로 세션 활동에 기록되며, webhook은 전송되지 않습니다.
응답은 `state: cancelled`와 `cancel_reason: cancelled_by_reviewer`가 포함된 오버라이드입니다.## 오버라이드 ID 찾기[기능 상태 업데이트](https://docs.didit.me/ko/sessions-api/update-feature-status.md)에서 반환된 `override` 객체의 `id`를 사용하거나, [기능 오버라이드 목록 조회](https://docs.didit.me/ko/sessions-api/list-feature-overrides.md)로 세션의 오버라이드를 나열한 뒤 `state`가 `pending_until_flow_finishes`인 항목을 선택하세요.## 취소에 실패하는 경우이미 적용되었거나 취소된 오버라이드에 대해서는 `409`와 함께 `feature_override_not_pending` 코드가 반환됩니다.
오버라이드가 적용된 후 검사를 변경하려면 대신 새로운 [기능 상태 업데이트](https://docs.didit.me/ko/sessions-api/update-feature-status.md) 요청을 보내세요.## 관련 문서- [기능 상태 업데이트](https://docs.didit.me/ko/sessions-api/update-feature-status.md): 단일 단계의 상태를 지금 또는 플로우가 끝난 후에 오버라이드합니다.
- [기능 오버라이드 목록 조회](https://docs.didit.me/ko/sessions-api/list-feature-overrides.md): 세션의 모든 오버라이드와 해당 상태.


## OpenAPI

````yaml ko/openapi-25.json POST /v3/session/{sessionId}/features/overrides/{overrideId}/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/session/{sessionId}/features/overrides/{overrideId}/cancel/:
    post:
      tags:
        - Sessions
      summary: 흐름이 완료되기를 대기 중인 검사 재정의 취소
      description: >-
        아직 `pending_until_flow_finishes` 상태인 기능(단계) 상태의 재정의를 취소하여 적용되지 않도록 합니다.
        검사는 기존 상태를 유지하고, 취소 내역은 세션 활동에 `FEATURE_OVERRIDE_CANCELLED`로 기록되며,
        webhook은 전송되지 않습니다. 응답은 `state: cancelled` 및 `cancel_reason:
        cancelled_by_reviewer`가 포함된 재정의 객체입니다.


        이미 적용되었거나 취소된 재정의는 `feature_override_not_pending` 코드와 함께 `409`를 반환합니다.
        재정의 ID는 `GET /v3/session/{sessionId}/features/overrides/` 또는 기능 상태 업데이트
        시 반환되는 `override`에서 확인할 수 있습니다.


        `write:sessions` 권한이 필요하며, 범위가 지정된 API 키에는 결정에 대한 쓰기 권한이 필요합니다.
      operationId: post_v3_session_feature_override_cancel
      parameters:
        - in: path
          name: sessionId
          required: true
          description: 인증 세션의 UUID입니다. 사용자(KYC) 및 기업(KYB) 세션 ID를 모두 지원합니다.
          schema:
            type: string
            format: uuid
            example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        - in: path
          name: overrideId
          required: true
          description: 취소할 오버라이드의 `id`입니다.
          schema:
            type: string
            format: uuid
            example: 9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3
      responses:
        '200':
          description: 오버라이드가 취소되었으며 앞으로 절대 적용되지 않습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureStatusOverride'
              examples:
                Cancelled:
                  summary: 취소된 재정의
                  value:
                    id: 9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3
                    node_id: feature_liveness_1
                    feature_type: ''
                    feature_model: Face
                    previous_status: Declined
                    new_status: Approved
                    state: cancelled
                    forced: false
                    reason: Liveness retried with a reviewer present.
                    requested_by:
                      email: reviewer@example.com
                      name: Alex Reviewer
                      type: CONSOLE_USER
                    requested_at: '2026-10-13T09:15:00Z'
                    applied_at: null
                    cancelled_at: '2026-10-13T09:20:00Z'
                    cancel_reason: cancelled_by_reviewer
        '401':
          description: 스코프가 지정된 API 키가 만료되었습니다.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: 만료일이 지난 스코프 지정 API 키
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            자격 증명이 누락되었거나, 호출자에게 `write:sessions` 권한이 없거나, 범위 지정 API 키에 이
            endpoint가 필요로 하는 접근 권한이 없거나, `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 세션이 존재하지 않거나, 세션에 이 `overrideId`를 가진
            오버라이드가 없습니다.
          content:
            application/json:
              examples:
                Not Found:
                  summary: 알 수 없는 session_id
                  value:
                    detail: Not found.
                Override Not Found:
                  summary: 세션에 이 id를 가진 재정의가 없습니다
                  value:
                    detail: Override not found.
        '409':
          description: 오버라이드가 이미 적용되었거나 취소되었습니다.
          content:
            application/json:
              examples:
                Not Pending:
                  summary: 대기 중인 오버라이드만 취소할 수 있습니다
                  value:
                    detail: >-
                      This override is no longer pending: it already applied or
                      was cancelled.
                    code: feature_override_not_pending
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3/cancel/ \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.cancel_feature_override(
                "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
            )
            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.cancelFeatureOverride(
              "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
            );
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.CancelFeatureOverride(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\")\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.sessions().cancelFeatureOverride("3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3");

            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->cancelFeatureOverride('3fa85f64-5717-4562-b3fc-2c963f66afa6',
            '9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3');

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

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

            result = didit.sessions.cancel_feature_override(
              "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3"
            )
            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.CancelFeatureOverrideAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FeatureStatusOverride:
      type: object
      description: >-
        `PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/`로 수행된
        검사(기능) 상태의 재정의 항목 하나입니다. 변경 내용, 적용 여부 또는 사용자가 플로우를 완료할 때까지 대기 중인지 여부,
        요청한 주체 및 사유를 포함합니다.
      required:
        - id
        - node_id
        - feature_type
        - feature_model
        - previous_status
        - new_status
        - state
        - forced
        - reason
        - requested_by
        - requested_at
        - applied_at
        - cancelled_at
        - cancel_reason
      properties:
        id:
          type: string
          format: uuid
          description: 재정의 식별자입니다. 취소 endpoint에 전달하십시오.
          example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        node_id:
          type: string
          description: 요청에 지정된 워크플로 노드(노드가 없는 단계의 경우 `default`).
          example: feature_ocr_1
        feature_type:
          type: string
          description: 요청이 전달한 `feature_type`이며, 전달하지 않은 경우 빈 문자열입니다.
          example: ''
        feature_model:
          type: string
          description: '재정의된 검사 종류입니다(예: `KYC`, `Face`, `AML` 또는 `GeolocationCheck`).'
          example: KYC
        previous_status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: 재정의가 요청되었을 때의 검사 상태입니다.
          example: In Review
        new_status:
          type: string
          enum:
            - Approved
            - Declined
            - In Review
          description: 재정의를 통해 설정된 상태입니다.
          example: Approved
        state:
          type: string
          enum:
            - applied
            - pending_until_flow_finishes
            - cancelled
          description: >-
            `applied`: 검사에 새 상태가 적용되었습니다. `pending_until_flow_finishes`: 재지정 사항이
            대기 상태를 유지하다가 사용자가 흐름을 완료하면 적용됩니다. `cancelled`: 대기 상태였으나 적용되지
            않았습니다(`cancel_reason` 참조).
          example: applied
        forced:
          type: boolean
          description: 사용자가 플로우에 머무르는 동안 오버라이드가 즉시 적용된 경우 `true`입니다.
          example: false
        reason:
          type: string
          nullable: true
          description: 요청과 함께 전송된 `comment` 또는 `null`입니다.
          example: Document manually verified by compliance.
        requested_by:
          type: object
          nullable: true
          description: 누가 재정의를 요청했는지 나타내며, 알 수 없는 경우 `null`입니다.
          properties:
            email:
              type: string
              format: email
              nullable: true
              description: 콘솔 사용자의 이메일이며, API 키 및 시스템의 경우 `null`입니다.
              example: reviewer@example.com
            name:
              type: string
              nullable: true
              description: 요청자의 표시 이름 또는 `null`입니다.
              example: Alex Reviewer
            type:
              type: string
              enum:
                - CONSOLE_USER
                - API_KEY
                - SYSTEM
              description: '요청을 보낸 주체: 콘솔 사용자, API 키 또는 Didit 자체입니다.'
              example: CONSOLE_USER
        requested_at:
          type: string
          format: date-time
          description: 재정의가 요청된 시점입니다.
          example: '2026-10-13T09:15:00Z'
        applied_at:
          type: string
          format: date-time
          nullable: true
          description: 검사가 새 상태로 변경된 시점이며, 대기 중이거나 취소된 후에는 `null`입니다.
          example: '2026-10-13T09:15:00Z'
        cancelled_at:
          type: string
          format: date-time
          nullable: true
          description: 대기 중인 오버라이드가 취소된 시점 또는 `null`입니다.
          example: null
        cancel_reason:
          type: string
          nullable: true
          enum:
            - cancelled_by_reviewer
            - replaced
            - check_changed
            - session_closed
            - null
          description: >-
            대기 중인 오버라이드가 적용되지 않은 이유 또는 `null`입니다. `cancelled_by_reviewer`: 취소
            endpoint로 취소됨. `replaced`: 동일한 검사에 대한 최신 오버라이드로 대체됨.
            `check_changed`: 사용자가 흐름을 완료하기 전에 검사를 다시 수행함. `session_closed`: 사용자가
            흐름을 완료하기 전에 세션을 벗어남(중단됨, 만료됨 또는 흐름 도중 결정됨).
          example: null
  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.