> ## 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 ar/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 لكل إصدار من سير العمل (قيمة `uuid` التي يرجعها endpoint
            القائمة). لكل إصدار من سير العمل `settings_uuid` خاص به.
      responses:
        '200':
          description: >-
            تكوين سير العمل الكامل. التنسيق هو تسلسل `VerificationSettings`
            الخام (نحو 190 حقلاً: كل خيار تفعيل ميزة، وحد، وإجراء تحذير، وتكوين
            المستندات المسموح بها، و`workflow_graph`، وسياسة إعادة المحاولة،
            وعمليات الاستدعاء، والأسعار). المثال أدناه مختصر. ملاحظات:
            `features` عبارة عن سلسلة نصية مجمعة بـ `" + "` (مثل `"OCR +
            LIVENESS"`)، والأسعار هي أرقام بتنسيق JSON، وتكون قيمة `is_editable`
            هي `true` فقط لإصدارات `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: مفتاح 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: >-
        الحقول أدناه ذات أنواع محددة (typed)؛ ويحمل الكائن أيضاً كل عمود آخر من
        تكوين سير العمل (مفاتيح تبديل الميزات، والحدود، وإجراءات التحذير،
        والمستندات المسموح بها، وعمليات الاستدعاء) كخصائص إضافية. الحقول التي لا
        تنطبق على `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: تكون `true` عندما لا يحتوي سير العمل على `workflow_graph` مخصص.
        is_editable:
          type: boolean
          description: تكون القيمة `true` فقط لإصدارات `draft`.
        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`). يتم تجاهل المفاتيح غير المعروفة. كل مفتاح
            اختياري والمفتاح الغائب يحتفظ بقيمته الافتراضية، لذا يعني `{}` تطبيق
            جميع القيم الافتراضية. راجع [إعدادات التحقق
            البنكي](/ar/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: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

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