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

# Get Workflow API: Ambil Alur Kerja KYC

> Ambil konfigurasi lengkap alur kerja KYC atau KYB Didit, termasuk fitur, ambang batas, dan dokumen yang diterima. Harga bayar per penggunaan.



Dapatkan Prompt API Alur Kerja
        Salin prompt ke papan klip



      
      

\<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>



      
      

Tempel ke



## OpenAPI

````yaml id/openapi-25.json GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Dapatkan alur kerja
      description: >-
        Ambil konfigurasi lengkap untuk satu versi alur kerja berdasarkan
        `settings_uuid`: toggle fitur, ambang batas, dokumen yang diizinkan,
        graf, kebijakan coba lagi, callback, dan harga.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID per versi dari alur kerja (nilai `uuid` yang dikembalikan oleh
            endpoint daftar). Setiap versi alur kerja memiliki `settings_uuid`
            tersendiri.
      responses:
        '200':
          description: >-
            Konfigurasi alur kerja lengkap. Bentuknya adalah serialisasi mentah
            `VerificationSettings` (~190 kolom: setiap sakelar fitur, ambang
            batas, tindakan peringatan, konfigurasi dokumen yang diizinkan,
            `workflow_graph`, kebijakan coba lagi, callback, dan harga). Contoh
            di bawah ini disingkat. Catatan: `features` adalah string yang
            digabungkan dengan `" + "` (mis. `"OCR + LIVENESS"`), harga berupa
            angka JSON, dan `is_editable` bernilai `true` hanya untuk versi
            `draft`.
          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: >-
            Kunci API tidak ada, memiliki format yang salah, kedaluwarsa, atau
            memiliki cakupan untuk aplikasi yang berbeda.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Tidak ada alur kerja dengan `settings_uuid` ini untuk aplikasi yang
            diautentikasi. UUID mungkin salah atau milik aplikasi lain — Didit
            sengaja tidak membedakan kedua kasus tersebut untuk menghindari
            kebocoran informasi tentang keberadaan data lintas aplikasi.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: Batas laju terlampaui. Coba lagi dengan backoff eksponensial.
        '500':
          description: Terjadi kesalahan server tak terduga. Aman untuk dicoba lagi.
      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: >-
        Kolom di bawah ini memiliki tipe; objek ini juga memuat setiap kolom
        lain dari konfigurasi alur kerja (pengalih fitur, ambang batas, tindakan
        peringatan, dokumen yang diizinkan, callback) sebagai properti tambahan.
        Kolom yang tidak berlaku untuk `workflow_type` bernilai `null`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Pengidentifikasi per versi (`settings_uuid`). Setiap versi alur
            kerja memiliki pengidentifikasi tersendiri.
        workflow_id:
          type: string
          format: uuid
          description: >-
            Pengidentifikasi stabil yang digunakan bersama oleh setiap versi
            alur kerja. Sesi yang dibuat dengannya menggunakan versi terbaru
            yang dipublikasikan.
        workflow_label:
          type: string
          description: Nama tampilan alur kerja.
        workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: >-
            Templat alur kerja. `null` untuk alur kerja graf yang dibuat tanpa
            templat.
        is_default:
          type: boolean
          description: Apakah ini merupakan alur kerja default aplikasi.
        is_archived:
          type: boolean
          description: Alur kerja yang diarsipkan tidak dapat memulai sesi baru.
        version:
          type: integer
          description: Nomor versi dalam alur kerja.
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            Versi draf dapat diedit; versi yang dipublikasikan bersifat tidak
            dapat diubah dan digunakan untuk sesi baru.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: Kapan versi ini dipublikasikan. `null` untuk draf.
        is_simple_workflow:
          type: boolean
          description: '`true` saat alur kerja tidak memiliki `workflow_graph` khusus.'
        is_editable:
          type: boolean
          description: '`true` hanya untuk versi `draft`.'
        workflow_url:
          type: string
          format: uri
          description: URL publik yang memulai sesi dengan alur kerja ini.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Struktur graf alur kerja (node dan edge). `null` untuk alur kerja
            sederhana.
        features:
          type: string
          description: >-
            Fitur yang diaktifkan digabungkan dengan `" + "`, misalnya `"OCR +
            LIVENESS"`.
        total_price:
          type: number
          nullable: true
          description: Harga per sesi; untuk alur kerja graf, merupakan jalur termahal.
        min_price:
          type: number
          nullable: true
          description: Harga jalur termurah melalui alur kerja.
        max_price:
          type: number
          nullable: true
          description: Harga jalur termahal melalui alur kerja.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Harga add-on khusus organisasi, atau `null` jika tidak ada yang
            diatur.
        max_retry_attempts:
          type: integer
          description: Jumlah coba lagi yang diizinkan setelah verifikasi ditolak.
        retry_window_days:
          type: integer
          nullable: true
          description: Jumlah hari selama percobaan ulang diizinkan.
        session_expiration_time:
          type: integer
          description: Detik sebelum sesi yang belum selesai kedaluwarsa.
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: Kuesioner yang dilampirkan pada alur kerja, atau `null`.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Pengaturan verifikasi per peran untuk pihak kunci KYB.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            Tingkat Tanda Tangan Elektronik mana yang dapat digunakan untuk
            menandatangani saat ini. Periksa ini sebelum Anda menyetel
            `signature_level`. Dikembalikan pada alur kerja `kyc`, `kyb`, dan
            graf.
          properties:
            simple:
              type: boolean
              description: Simple selalu tersedia.
            aes:
              type: boolean
              description: >-
                Menentukan apakah Tingkat Lanjut (AES) dapat menandatangani
                sekarang. Saat bernilai `false`, penyimpanan langkah baru pada
                `signature_level: "aes"` ditolak dengan `aes_not_available`.
            qes:
              type: boolean
              description: >-
                Menentukan apakah Berkualifikasi (QES) dapat menandatangani
                sekarang. Nilainya adalah `false` sampai penyedia yang
                berkualifikasi terhubung.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            Menentukan apakah alur kerja KYC atau KYB sederhana menjalankan
            verifikasi Bank. Verifikasi ini berjalan setelah langkah kontak (dan
            verifikasi Lokasi) dan sebelum validasi database, AML, serta
            analisis IP. Verifikasi Bank belum tersedia secara umum:
            mengaktifkannya ditolak di mana pun fitur ini belum diaktifkan.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            Pengaturan verifikasi bank dari alur kerja sederhana, dengan kunci
            yang sama seperti yang diterima node `BANK_VERIFICATION` (misalnya
            `bank_countries` dan `bank_method_order`). Kunci yang tidak dikenal
            akan dibuang. Setiap kunci bersifat opsional dan kunci yang tidak
            ada akan menggunakan nilai default-nya, sehingga `{}` berarti semua
            nilai default. Lihat [Pengaturan verifikasi
            bank](/id/management-api/workflows/feature-configs#verifikasi-bank).
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            Menentukan apakah alur kerja KYC sederhana menjalankan verifikasi
            Lokasi. Verifikasi ini berjalan setelah langkah kontak dan sebelum
            verifikasi Bank serta validasi database. Alur kerja Bisnis (KYB)
            tidak dapat menjalankannya.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            Pengaturan verifikasi lokasi dari alur kerja sederhana, dengan kunci
            yang sama seperti yang diterima node `GEOLOCATION` (misalnya
            `is_geolocation_geofencing_enabled` dan `geolocation_max_attempts`).
            Kunci yang tidak dikenal akan diabaikan. Setiap kunci bersifat
            opsional dan kunci yang tidak ada akan menggunakan nilai
            default-nya, sehingga `{}` berarti semua nilai default.
          example: {}
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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