> ## 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: KYC 워크플로 가져오기

> Didit KYC 또는 KYB 워크플로의 전체 설정(기능 토글, 임계값, 허용 문서 포함)을 조회합니다. 사용량 기반 요금제 적용.



워크플로 조회 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Fetch the full configuration of a single Didit workflow through the Management API.

Endpoint:
GET https://verification.didit.me/v3/workflows/{settings_uuid}/

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Retrieve every editable field on the workflow (feature toggles, score thresholds, documents_allowed per country, KYB role config, retry policy, callback config, etc.).
\- Useful for back-office "view workflow" screens, debugging why a verification declined/routed to review, or verifying a freshly published version.

Path parameter:
\- settings_uuid — the per-version workflow UUID returned by GET /v3/workflows/ or POST /v3/workflows/. Each workflow version has its own settings_uuid; workflow_id is the stable group id shared by every version.

Example call:
curl -X GET "https://verification.didit.me/v3/workflows/{settings_uuid}/" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- workflow_id — stable group id; compare across versions to walk version history.
\- features and the underlying workflow_graph — describes which checks run and in what order.
\- Threshold and action fields per feature — see /management-api/workflows/feature-configs for the full reference.

Failure modes:
\- 401 — missing or malformed x-api-key.
\- 403 — canonical { "detail": "You do not have permission to perform this action." } envelope when the workflow belongs to a different application than the API key.
\- 404 — workflow not found in this application (also returned when settings_uuid is valid in another application).

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳



## OpenAPI

````yaml ko/openapi-25.json GET /v3/workflows/{settings_uuid}/
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/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: 워크플로 가져오기
      description: >-
        `settings_uuid`로 특정 워크플로 버전의 전체 구성(기능 토글, 임계값, 허용된 문서, 그래프, 재시도 정책, 콜백 및
        요금)을 가져옵니다.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            워크플로의 버전별 UUID입니다(목록 endpoint에서 반환되는 `uuid` 값). 워크플로의 각 버전에는 자체
            `settings_uuid`가 있습니다.
      responses:
        '200':
          description: >-
            전체 워크플로 구성입니다. 형태는 원시 `VerificationSettings` 직렬화 결과(~190개 필드: 모든 기능
            토글, 임계값, 경고 작업, 허용 문서 구성, `workflow_graph`, 재시도 정책, 콜백 및 요금)입니다. 아래
            예시는 축약되었습니다. 참고: `features`는 `" + "`로 연결된 문자열(예: `"OCR +
            LIVENESS"`)이고, 가격은 JSON 숫자이며, `is_editable`은 `draft` 버전에 대해서만
            `true`입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowDetail'
              examples:
                KYC workflow with face match (abbreviated):
                  value:
                    uuid: a1b2c3d4-5678-90ab-cdef-111111111111
                    workflow_id: a1b2c3d4-5678-90ab-cdef-111111111111
                    workflow_label: Standard KYC
                    workflow_type: kyc
                    is_default: true
                    is_archived: false
                    is_liveness_enabled: true
                    face_liveness_method: passive
                    face_liveness_score_decline_threshold: 50
                    face_liveness_score_review_threshold: 70
                    is_face_match_enabled: true
                    face_match_score_decline_threshold: 40
                    face_match_score_review_threshold: 60
                    is_aml_enabled: false
                    is_phone_verification_enabled: false
                    is_email_verification_enabled: false
                    is_database_validation_enabled: false
                    is_ip_analysis_enabled: false
                    is_nfc_enabled: false
                    duplicated_user_action: no_action
                    documents_allowed:
                      ESP:
                        P:
                          sides: 1
                          enabled: 1
                          subtypes:
                            - EPASSPORT
                            - PASSPORT_GENERIC
                          preferred_characters: latin
                          expiration_check_mode: strict
                    max_retry_attempts: 3
                    retry_window_days: 7
                    session_expiration_time: 604800
                    version: 2
                    status: published
                    published_at: '2026-04-12T10:30:00Z'
                    is_simple_workflow: false
                    is_editable: false
                    workflow_url: https://verify.didit.me/u/_yljPOx8RWG3UAz5ZRQGVQ
                    total_price: 0.15
                    min_price: 0.15
                    max_price: 0.15
                    features: OCR + LIVENESS + FACE_MATCH
                    created_at: '2025-01-15T10:30:00Z'
                    updated_at: '2026-04-12T10:30:00Z'
        '403':
          description: API 키가 누락되었거나, 형식이 잘못되었거나, 만료되었거나, 다른 애플리케이션으로 범위가 지정되었습니다.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            인증된 애플리케이션에 이 `settings_uuid`를 가진 워크플로가 존재하지 않습니다. UUID가 잘못되었거나 다른
            애플리케이션에 속해 있습니다. Didit은 애플리케이션 간 레코드 존재 여부 유출을 방지하기 위해 두 경우를 의도적으로
            구분하지 않습니다.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: 속도 제한을 초과했습니다. 지수 백오프로 재시도하세요.
        '500':
          description: 예기치 않은 서버 오류가 발생했습니다. 안전하게 재시도할 수 있습니다.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.workflows.retrieve(
                "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.workflows.retrieve("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.Workflows.Retrieve(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.workflows().retrieve("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->workflows->retrieve('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.workflows.retrieve("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.Workflows.RetrieveAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WorkflowDetail:
      type: object
      description: >-
        아래 필드는 타입이 지정되어 있습니다. 또한 이 객체는 워크플로 설정의 다른 모든 열(기능 토글, 임계값, 경고 작업, 허용된
        문서, 콜백)을 추가 속성으로 전달합니다. `workflow_type`에 적용되지 않는 필드는 `null`입니다.
      properties:
        uuid:
          type: string
          format: uuid
          description: 버전별 식별자(`settings_uuid`)입니다. 워크플로의 모든 버전에는 고유한 식별자가 있습니다.
        workflow_id:
          type: string
          format: uuid
          description: 워크플로의 모든 버전에서 공유되는 안정적인 식별자입니다. 이 식별자로 생성된 세션은 게시된 최신 버전을 사용합니다.
        workflow_label:
          type: string
          description: 워크플로의 표시 이름입니다.
        workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: 워크플로 템플릿입니다. 템플릿 없이 생성된 그래프 워크플로의 경우 `null`입니다.
        is_default:
          type: boolean
          description: 이 워크플로가 애플리케이션의 기본 워크플로인지 여부입니다.
        is_archived:
          type: boolean
          description: 보관된 워크플로는 새 세션을 시작할 수 없습니다.
        version:
          type: integer
          description: 워크플로 내의 버전 번호입니다.
        status:
          type: string
          enum:
            - draft
            - published
          description: 초안 버전은 편집할 수 있으며, 게시된 버전은 변경할 수 없고 새 세션에 사용됩니다.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: 이 버전이 게시된 시점입니다. 초안의 경우 `null`입니다.
        is_simple_workflow:
          type: boolean
          description: 워크플로에 사용자 지정 `workflow_graph`가 없는 경우 `true`입니다.
        is_editable:
          type: boolean
          description: '`draft` 버전인 경우에만 `true`입니다.'
        workflow_url:
          type: string
          format: uri
          description: 이 워크플로로 세션을 시작하는 공개 URL입니다.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: 워크플로의 그래프 구조(노드 및 에지)입니다. 단순 워크플로의 경우 `null`입니다.
        features:
          type: string
          description: '`" + "`로 연결된 활성화된 기능입니다(예: `"OCR + LIVENESS"`).'
        total_price:
          type: number
          nullable: true
          description: 세션당 가격입니다. 그래프 워크플로의 경우 가장 비싼 경로의 가격입니다.
        min_price:
          type: number
          nullable: true
          description: 워크플로에서 가장 저렴한 경로의 가격입니다.
        max_price:
          type: number
          nullable: true
          description: 워크플로에서 가장 비싼 경로의 가격입니다.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: 조직별 부가 기능 가격이며, 설정되지 않은 경우 `null`입니다.
        max_retry_attempts:
          type: integer
          description: 거부된 인증 후 허용되는 재시도 횟수입니다.
        retry_window_days:
          type: integer
          nullable: true
          description: 재시도가 허용되는 일수.
        session_expiration_time:
          type: integer
          description: 완료되지 않은 세션이 만료되기까지 남은 시간(초).
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: 워크플로에 연결된 설문지 또는 `null`입니다.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: KYB 주요 인물에 대한 역할별 인증 설정입니다.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            현재 서명 가능한 전자 서명 등급입니다. `signature_level`을 설정하기 전에 확인하십시오. `kyc`,
            `kyb` 및 그래프 워크플로에서 반환됩니다.
          properties:
            simple:
              type: boolean
              description: Simple은 항상 사용할 수 있습니다.
            aes:
              type: boolean
              description: >-
                고급 전자 서명(AES)으로 지금 서명할 수 있는지 여부입니다. `false`인 동안
                `signature_level: "aes"`로 새 단계를 저장하면 `aes_not_available` 오류와 함께
                거부됩니다.
            qes:
              type: boolean
              description: 적격 전자 서명(QES)으로 지금 서명할 수 있는지 여부입니다. 적격 제공업체가 연결될 때까지 `false`입니다.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            단순 KYC 또는 KYB 워크플로가 은행 확인을 실행하는지 여부입니다. 연락처 단계(및 위치 확인) 이후, 데이터베이스
            검증, AML 및 IP 분석 이전에 실행됩니다. 은행 확인은 아직 일반에 공개되지 않았으며, 활성화되지 않은 환경에서
            켜려고 하면 거부됩니다.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            `BANK_VERIFICATION` 노드가 사용하는 것과 동일한 키(예: `bank_countries` 및
            `bank_method_order`)를 사용하는 단순 워크플로의 은행 인증 설정입니다. 알 수 없는 키는 삭제됩니다. 모든
            키는 선택 사항이며 누락된 키는 기본값을 유지하므로 `{}`는 모든 기본값을 의미합니다. [은행 인증
            설정](/ko/management-api/workflows/feature-configs#은행-인증)을 참조하십시오.
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            단순 KYC 워크플로가 위치 확인을 실행하는지 여부입니다. 연락처 단계 이후, 은행 확인 및 데이터베이스 검증 이전에
            실행됩니다. 기업(KYB) 워크플로에서는 실행할 수 없습니다.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            간단한 워크플로의 위치 확인 설정으로, `GEOLOCATION` 노드가 사용하는 것과 동일한 키(예:
            `is_geolocation_geofencing_enabled` 및 `geolocation_max_attempts`)를
            갖습니다. 알 수 없는 키는 삭제됩니다. 모든 키는 선택 사항이며 누락된 키는 기본값을 유지하므로 `{}`는 모든 기본값을
            의미합니다.
          example: {}
      additionalProperties: true
  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.