> ## 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 Get Workflow : récupérer un workflow KYC

> Récupérez la configuration complète d'un workflow KYC ou KYB Didit, y compris les fonctionnalités, seuils et documents acceptés. Tarification à l'usage.



Prompt de l'API Get Workflow
        Copier le prompt dans le presse-papiers



      
      

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



      
      

Coller dans



## OpenAPI

````yaml fr/openapi-25.json GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Obtenir le workflow
      description: >-
        Récupérer la configuration complète d'une version de workflow par
        `settings_uuid` : activations des fonctionnalités, seuils, documents
        autorisés, graphe, politique de réessai, rappels et tarifs.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID par version du workflow (la valeur `uuid` renvoyée par
            l'endpoint de liste). Chaque version d'un workflow possède son
            propre `settings_uuid`.
      responses:
        '200':
          description: "Configuration complète du workflow. Le format correspond à la sérialisation brute de `VerificationSettings` (~190 champs\_: chaque activation de fonctionnalité, seuil, action sur avertissement, configuration des documents autorisés, le `workflow_graph`, la politique de nouvelle tentative, les callbacks et les tarifs). L'exemple ci-dessous est abrégé. Remarques\_: `features` est une chaîne reliée par `\" + \"` (par ex. `\"OCR + LIVENESS\"`), les prix sont des nombres JSON, et `is_editable` est à `true` uniquement pour les versions `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: >-
            Clé API manquante, mal formée, expirée ou limitée à une application
            différente.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Aucun workflow avec ce `settings_uuid` n'existe pour l'application
            authentifiée. Soit l'UUID est incorrect, soit il appartient à une
            autre application — Didit ne fait délibérément pas la distinction
            entre les deux cas afin d'éviter de révéler l'existence
            d'enregistrements inter-applications.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Limite de débit dépassée. Réessayez avec une temporisation
            exponentielle.
        '500':
          description: Erreur serveur inattendue. Peut être réessayé en toute sécurité.
      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: >-
        Les champs ci-dessous sont typés ; l'objet contient également toutes les
        autres colonnes de la configuration du workflow (activation des
        fonctionnalités, seuils, actions d'avertissement, documents autorisés,
        rappels) sous forme de propriétés supplémentaires. Les champs qui ne
        s'appliquent pas au `workflow_type` sont `null`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Identifiant par version (`settings_uuid`). Chaque version d'un
            workflow possède le sien.
        workflow_id:
          type: string
          format: uuid
          description: >-
            Identifiant stable partagé par toutes les versions du workflow. Les
            sessions créées avec celui-ci utilisent la dernière version publiée.
        workflow_label:
          type: string
          description: Nom d'affichage du workflow.
        workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: >-
            Modèle de workflow. `null` pour les workflows sous forme de graphe
            créés sans modèle.
        is_default:
          type: boolean
          description: Indique s'il s'agit du workflow par défaut de l'application.
        is_archived:
          type: boolean
          description: >-
            Les workflows archivés ne peuvent pas démarrer de nouvelles
            sessions.
        version:
          type: integer
          description: Numéro de version au sein du workflow.
        status:
          type: string
          enum:
            - draft
            - published
          description: "Les versions de brouillon sont modifiables\_; les versions publiées sont immuables et utilisées pour les nouvelles sessions."
        published_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Date et heure auxquelles cette version a été publiée. `null` pour
            les brouillons.
        is_simple_workflow:
          type: boolean
          description: >-
            `true` lorsque le workflow ne comporte aucun `workflow_graph`
            personnalisé.
        is_editable:
          type: boolean
          description: '`true` uniquement pour les versions `draft`.'
        workflow_url:
          type: string
          format: uri
          description: URL publique qui démarre une session avec ce workflow.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Structure en graphe du workflow (nœuds et arêtes). `null` pour les
            workflows simples.
        features:
          type: string
          description: >-
            Fonctionnalités activées jointes par `" + "`, par exemple `"OCR +
            LIVENESS"`.
        total_price:
          type: number
          nullable: true
          description: >-
            Prix par session ; pour les workflows de graphe, le parcours le plus
            cher.
        min_price:
          type: number
          nullable: true
          description: Prix du parcours le moins cher dans le workflow.
        max_price:
          type: number
          nullable: true
          description: Prix du parcours le plus cher dans le workflow.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Prix des modules complémentaires spécifiques à l'organisation, ou
            `null` si aucun n'est défini.
        max_retry_attempts:
          type: integer
          description: Réessais autorisés après une vérification refusée.
        retry_window_days:
          type: integer
          nullable: true
          description: >-
            Nombre de jours pendant lesquels les nouvelles tentatives sont
            autorisées.
        session_expiration_time:
          type: integer
          description: Secondes avant l'expiration d'une session inachevée.
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: Le questionnaire associé au workflow, ou `null`.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Paramètres de vérification par rôle pour les personnes clés KYB.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            Quels niveaux de Signature électronique peuvent signer actuellement.
            Vérifiez-le avant de définir `signature_level`. Renvoyé sur les
            workflows `kyc`, `kyb` et de graphe.
          properties:
            simple:
              type: boolean
              description: Simple est toujours disponible.
            aes:
              type: boolean
              description: >-
                Indique si Advanced (AES) peut signer actuellement. Tant que
                cette valeur est `false`, l'enregistrement d'une nouvelle étape
                avec `signature_level: "aes"` est refusé avec
                `aes_not_available`.
            qes:
              type: boolean
              description: >-
                Indique si la signature qualifiée (QES) peut signer
                actuellement. La valeur est `false` jusqu'à ce qu'un fournisseur
                qualifié soit connecté.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            Indique si un workflow KYC ou KYB simple exécute la vérification
            bancaire. Elle s'exécute après les étapes de contact (et la
            vérification de localisation) et avant la validation en base de
            données, le filtrage AML et l'analyse IP. La vérification bancaire
            n'est pas encore disponible pour tous : son activation est refusée
            partout où elle n'est pas activée.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            Paramètres de vérification bancaire d'un workflow simple, avec les
            mêmes clés qu'un nœud `BANK_VERIFICATION` (par exemple
            `bank_countries` et `bank_method_order`). Les clés inconnues sont
            ignorées. Chaque clé est optionnelle et une clé absente conserve sa
            valeur par défaut, `{}` désigne donc toutes les valeurs par défaut.
            Voir [Paramètres de vérification
            bancaire](/fr/management-api/workflows/feature-configs#vérification-bancaire).
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            Indique si un workflow KYC simple exécute la vérification de
            localisation. Elle s'exécute après les étapes de contact et avant la
            vérification bancaire et la validation en base de données. Les
            workflows d'entreprise (KYB) ne peuvent pas l'exécuter.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            Paramètres de vérification de localisation d'un workflow simple,
            avec les mêmes clés qu'un nœud `GEOLOCATION` (par exemple
            `is_geolocation_geofencing_enabled` et `geolocation_max_attempts`).
            Les clés inconnues sont ignorées. Chaque clé est facultative et une
            clé absente conserve sa valeur par défaut, `{}` correspond donc à
            toutes les valeurs par défaut.
          example: {}
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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