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

# Obter fluxo API: consultar fluxo KYC

> Obtenha a configuração completa de um fluxo KYC ou KYB da Didit, incluindo funcionalidades, limiares e documentos aceites. Preços por utilização.



Obter o prompt da API de fluxo
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em



## OpenAPI

````yaml pt/openapi-25.json GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Obter fluxo
      description: >-
        Obter a configuração completa de uma versão de fluxo através de
        `settings_uuid`: alternadores de funcionalidades, limiares, documentos
        permitidos, grafo, política de tentativas, callbacks e preços.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID por versão do fluxo (o valor `uuid` devolvido pelo endpoint de
            listagem). Cada versão de um fluxo tem o seu próprio
            `settings_uuid`.
      responses:
        '200':
          description: >-
            Configuração completa do fluxo. O formato é a serialização bruta de
            `VerificationSettings` (~190 campos: cada alternador de
            funcionalidade, limiar, ação de aviso, configuração de documentos
            permitidos, o `workflow_graph`, política de nova tentativa,
            callbacks e preços). O exemplo abaixo está abreviado. Notas:
            `features` é uma cadeia de carateres unida por `" + "` (por exemplo,
            `"OCR + LIVENESS"`), os preços são números JSON e `is_editable` é
            `true` apenas para versões `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: >-
            Chave de API em falta, mal formatada, expirada ou com âmbito
            limitado a uma aplicação diferente.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Não existe nenhum fluxo com este `settings_uuid` para a aplicação
            autenticada. Ou o UUID está incorreto ou pertence a outra aplicação
            — a Didit não distingue deliberadamente os dois casos para evitar
            revelar a existência de registos de outras aplicações.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: Limite de pedidos excedido. Tente novamente com recuo exponencial.
        '500':
          description: Erro de servidor inesperado. Pode tentar novamente em segurança.
      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: >-
        Os campos abaixo são tipados; o objeto também contém todas as outras
        colunas da configuração do fluxo (comutadores de funcionalidades,
        limiares, ações de aviso, documentos permitidos, callbacks) como
        propriedades adicionais. Os campos que não se aplicam ao `workflow_type`
        são `null`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Identificador por versão (`settings_uuid`). Cada versão de um fluxo
            tem o seu próprio.
        workflow_id:
          type: string
          format: uuid
          description: >-
            Identificador estável partilhado por todas as versões do fluxo. As
            sessões criadas com ele utilizam a versão publicada mais recente.
        workflow_label:
          type: string
          description: Nome de apresentação do fluxo.
        workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: Modelo de fluxo. `null` para fluxos em grafo criados sem um modelo.
        is_default:
          type: boolean
          description: Se este é o fluxo predefinido da aplicação.
        is_archived:
          type: boolean
          description: Os fluxos arquivados não podem iniciar novas sessões.
        version:
          type: integer
          description: Número da versão dentro do fluxo.
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            As versões de rascunho são editáveis; as versões publicadas são
            imutáveis e utilizadas para novas sessões.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: Quando esta versão foi publicada. `null` para rascunhos.
        is_simple_workflow:
          type: boolean
          description: '`true` quando o fluxo não tem um `workflow_graph` personalizado.'
        is_editable:
          type: boolean
          description: '`true` apenas para versões `draft`.'
        workflow_url:
          type: string
          format: uri
          description: URL público que inicia uma sessão com este fluxo.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Estrutura em grafo do fluxo (nós e arestas). `null` para fluxos
            simples.
        features:
          type: string
          description: >-
            Funcionalidades ativadas unidas por `" + "`, por exemplo `"OCR +
            LIVENESS"`.
        total_price:
          type: number
          nullable: true
          description: Preço por sessão; para fluxos em grafo, o caminho mais caro.
        min_price:
          type: number
          nullable: true
          description: Preço do caminho mais económico ao longo do fluxo.
        max_price:
          type: number
          nullable: true
          description: Preço do caminho mais caro ao longo do fluxo.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Preços de suplementos específicos da organização, ou `null` quando
            nenhum estiver definido.
        max_retry_attempts:
          type: integer
          description: Tentativas permitidas após uma verificação recusada.
        retry_window_days:
          type: integer
          nullable: true
          description: Dias durante os quais as tentativas adicionais são permitidas.
        session_expiration_time:
          type: integer
          description: Segundos até uma sessão inacabada expirar.
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: O questionário associado ao fluxo, ou `null`.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Definições de verificação por função para pessoas-chave de KYB.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            Quais os níveis de Assinatura eletrónica que podem assinar neste
            momento. Verifique antes de definir `signature_level`. Devolvido em
            fluxos de `kyc`, `kyb` e de grafo.
          properties:
            simple:
              type: boolean
              description: Simple está sempre disponível.
            aes:
              type: boolean
              description: >-
                Se o nível Avançado (AES) pode assinar agora. Enquanto for
                `false`, guardar um novo passo com `signature_level: "aes"` é
                recusado com `aes_not_available`.
            qes:
              type: boolean
              description: >-
                Se o nível Qualificado (QES) pode assinar agora. É `false` até
                que um fornecedor qualificado esteja associado.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            Se um fluxo simples de KYC ou KYB executa a verificação bancária. É
            executada após os passos de contacto (e a verificação de
            localização) e antes da validação de base de dados, AML e análise de
            IP. A verificação bancária ainda não está disponível de forma geral:
            a sua ativação é recusada onde não estiver ativada.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            Definições de verificação bancária de um fluxo simples, com as
            mesmas chaves que um nó `BANK_VERIFICATION` aceita (por exemplo,
            `bank_countries` e `bank_method_order`). Chaves desconhecidas são
            ignoradas. Todas as chaves são opcionais e uma chave ausente mantém
            o seu valor predefinido, pelo que `{}` significa todas as
            predefinições. Consulte [Definições de verificação
            bancária](/pt/management-api/workflows/feature-configs#verificação-bancária).
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            Se um fluxo simples de KYC executa a verificação de localização. É
            executada após os passos de contacto e antes da verificação bancária
            e da validação de base de dados. Os fluxos de empresas (KYB) não a
            podem executar.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            Definições de verificação de localização de um fluxo simples, com as
            mesmas chaves que um nó `GEOLOCATION` aceita (por exemplo
            `is_geolocation_geofencing_enabled` e `geolocation_max_attempts`).
            As chaves desconhecidas são ignoradas. Todas as chaves são opcionais
            e uma chave ausente mantém o seu valor padrão, pelo que `{}`
            significa todos os valores padrão.
          example: {}
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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