> ## 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 para obtener un workflow: consultar flujo KYC

> Obtén la configuración completa de un flujo KYC o KYB de Didit: funciones activadas, umbrales y documentos aceptados. Precio por uso.



Prompt para la API de obtener flujo de verificación
        Copiar el prompt al portapapeles



      
      

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



      
      

Pegar en



## OpenAPI

````yaml es/openapi-25.json GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Obtener flujo de verificación
      description: >-
        Obtiene la configuración completa de una versión de flujo por
        `settings_uuid`: activación de funciones, umbrales, documentos
        permitidos, grafo, política de reintentos, callbacks y precios.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID por versión del flujo (el valor `uuid` que devuelve el endpoint
            de listado). Cada versión de un flujo tiene su propio
            `settings_uuid`.
      responses:
        '200':
          description: >-
            Configuración completa del flujo. La estructura es la serialización
            sin procesar de `VerificationSettings` (~190 campos: cada activación
            de función, umbral, acción de advertencia, configuración de
            documentos permitidos, el `workflow_graph`, la política de
            reintentos, los callbacks y los precios). El ejemplo siguiente está
            abreviado. Notas: `features` es una cadena unida con `" + "` (p.
            ej., `"OCR + LIVENESS"`), los precios son números JSON e
            `is_editable` es `true` solo para las versiones `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: >-
            La clave de API falta, tiene un formato incorrecto, ha expirado o
            está asociada a otra aplicación.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            No existe ningún flujo con este `settings_uuid` para la aplicación
            autenticada. O el UUID es incorrecto o pertenece a otra aplicación:
            Didit no distingue deliberadamente entre ambos casos para no revelar
            la existencia de registros de otras aplicaciones.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: Límite de solicitudes superado. Reintenta con retroceso exponencial.
        '500':
          description: Error inesperado del servidor. Se puede reintentar sin riesgo.
      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: >-
        Los campos siguientes están tipados; el objeto también incluye todas las
        demás columnas de la configuración del flujo (activación de funciones,
        umbrales, acciones ante advertencias, documentos permitidos, callbacks)
        como propiedades adicionales. Los campos que no se aplican al
        `workflow_type` son `null`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Identificador por versión (`settings_uuid`). Cada versión de un
            flujo tiene el suyo.
        workflow_id:
          type: string
          format: uuid
          description: >-
            Identificador estable compartido por todas las versiones del flujo.
            Las sesiones creadas con él usan la última versión publicada.
        workflow_label:
          type: string
          description: Nombre visible del flujo.
        workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: >-
            Plantilla del flujo. `null` en los flujos de grafo creados sin
            plantilla.
        is_default:
          type: boolean
          description: Si este es el flujo predeterminado de la aplicación.
        is_archived:
          type: boolean
          description: Los flujos archivados no pueden iniciar nuevas sesiones.
        version:
          type: integer
          description: Número de versión dentro del flujo.
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            Las versiones en borrador son editables; las versiones publicadas
            son inmutables y se usan para las nuevas sesiones.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: Cuándo se publicó esta versión. `null` para los borradores.
        is_simple_workflow:
          type: boolean
          description: '`true` cuando el flujo no tiene un `workflow_graph` personalizado.'
        is_editable:
          type: boolean
          description: '`true` solo para las versiones `draft`.'
        workflow_url:
          type: string
          format: uri
          description: URL pública que inicia una sesión con este flujo.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Estructura de grafo del flujo de verificación (workflow) (nodos y
            aristas). `null` para flujos simples.
        features:
          type: string
          description: >-
            Funciones habilitadas unidas con `" + "`, por ejemplo `"OCR +
            LIVENESS"`.
        total_price:
          type: number
          nullable: true
          description: Precio por sesión; en los flujos de tipo grafo, la ruta más cara.
        min_price:
          type: number
          nullable: true
          description: Precio de la ruta más económica del flujo.
        max_price:
          type: number
          nullable: true
          description: Precio de la ruta más cara del flujo.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Precios de complementos específicos de la organización, o `null` si
            no hay ninguno configurado.
        max_retry_attempts:
          type: integer
          description: Reintentos permitidos tras una verificación rechazada.
        retry_window_days:
          type: integer
          nullable: true
          description: Días durante los que se permiten los reintentos.
        session_expiration_time:
          type: integer
          description: Segundos antes de que expire una sesión sin finalizar.
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: El cuestionario asociado al flujo, o `null`.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: >-
            Configuración de verificación por rol para las personas clave de
            KYB.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            Qué niveles de Firma electrónica pueden firmar en este momento.
            Consúltalo antes de definir `signature_level`. Se devuelve en los
            flujos `kyc`, `kyb` y de grafo.
          properties:
            simple:
              type: boolean
              description: Simple siempre está disponible.
            aes:
              type: boolean
              description: >-
                Indica si Avanzada (AES) ya puede firmar. Mientras sea `false`,
                guardar un nuevo paso con `signature_level: "aes"` se rechaza
                con `aes_not_available`.
            qes:
              type: boolean
              description: >-
                Indica si Cualificada (QES) ya puede firmar. Es `false` hasta
                que se conecte un proveedor cualificado.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            Indica si un flujo de verificación (workflow) simple de KYC o KYB
            ejecuta la verificación bancaria. Se ejecuta después de los pasos de
            contacto (y de la verificación de ubicación) y antes de la
            validación de base de datos, el análisis AML y el análisis de IP. La
            verificación bancaria aún no está disponible de forma general: se
            rechaza su activación donde no esté habilitada.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            Configuración de verificación bancaria de un flujo simple, con las
            mismas claves que admite un nodo `BANK_VERIFICATION` (por ejemplo,
            `bank_countries` y `bank_method_order`). Las claves desconocidas se
            descartan. Todas las claves son opcionales y una clave ausente
            mantiene su valor predeterminado, por lo que `{}` significa todos
            los valores predeterminados. Consulta [Configuración de verificación
            bancaria](/es/management-api/workflows/feature-configs#verificación-bancaria).
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            Indica si un flujo de verificación (workflow) simple de KYC ejecuta
            la verificación de ubicación. Se ejecuta después de los pasos de
            contacto y antes de la verificación bancaria y la validación de base
            de datos. Los flujos de empresas (KYB) no pueden ejecutarla.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            Configuración de verificación de ubicación de un flujo simple, con
            las mismas claves que admite un nodo `GEOLOCATION` (por ejemplo,
            `is_geolocation_geofencing_enabled` y `geolocation_max_attempts`).
            Las claves desconocidas se descartan. Todas las claves son
            opcionales y una clave ausente conserva su valor predeterminado, por
            lo que `{}` significa todos los valores predeterminados.
          example: {}
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

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