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

# Recupera workflow KYC: API Get Workflow

> Recupera la configurazione completa di un workflow KYC o KYB di Didit: funzionalità, soglie e documenti accettati. Prezzo a consumo.



Prompt dell'API per ottenere il workflow
        Copia il prompt negli appunti



      
      

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



      
      

Incolla in



## OpenAPI

````yaml it/openapi-25.json GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Recupera workflow
      description: >-
        Recupera la configurazione completa per una versione del workflow
        tramite `settings_uuid`: attivazione delle funzionalità, soglie,
        documenti consentiti, grafo, criteri di nuovo tentativo, callback e
        prezzi.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID per versione del workflow (il valore `uuid` restituito
            dall'endpoint di elenco). Ogni versione di un workflow ha il proprio
            `settings_uuid`.
      responses:
        '200':
          description: >-
            Configurazione completa del workflow. Il formato corrisponde alla
            serializzazione grezza di `VerificationSettings` (~190 campi: ogni
            interruttore di funzionalità, soglia, azione di avviso,
            configurazione dei documenti consentiti, il `workflow_graph`,
            politica di nuovo tentativo, callback e prezzi). L'esempio seguente
            è abbreviato. Nota: `features` è una stringa unita da `" + "` (ad
            es. `"OCR + LIVENESS"`), i prezzi sono numeri JSON e `is_editable` è
            `true` solo per le versioni `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: >-
            Chiave API mancante, malformata, scaduta o associata a
            un'applicazione diversa.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Nessun workflow con questo `settings_uuid` esiste per l'applicazione
            autenticata. L'UUID non è corretto oppure appartiene a un'altra
            applicazione — Didit non distingue deliberatamente i due casi per
            evitare di rivelare l'esistenza di record tra applicazioni diverse.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: Limite di frequenza superato. Riprova con backoff esponenziale.
        '500':
          description: >-
            Errore imprevisto del server. È sicuro effettuare un nuovo
            tentativo.
      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: >-
        I campi sottostanti sono tipizzati; l'oggetto contiene inoltre ogni
        altra colonna della configurazione del workflow (attivazione delle
        funzionalità, soglie, azioni di avviso, documenti consentiti, callback)
        come proprietà aggiuntive. I campi non applicabili al `workflow_type`
        sono `null`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Identificativo per versione (`settings_uuid`). Ogni versione di un
            workflow ha il proprio.
        workflow_id:
          type: string
          format: uuid
          description: >-
            Identificatore stabile condiviso da tutte le versioni del workflow.
            Le sessioni create con esso utilizzano l'ultima versione pubblicata.
        workflow_label:
          type: string
          description: Nome visualizzato del 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: >-
            Modello di workflow. `null` per i workflow a grafo creati senza un
            modello.
        is_default:
          type: boolean
          description: Indica se questo è il workflow predefinito dell'applicazione.
        is_archived:
          type: boolean
          description: I workflow archiviati non possono avviare nuove sessioni.
        version:
          type: integer
          description: Numero di versione all'interno del workflow.
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            Le versioni in bozza sono modificabili; le versioni pubblicate sono
            immutabili e utilizzate per le nuove sessioni.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: Quando è stata pubblicata questa versione. `null` per le bozze.
        is_simple_workflow:
          type: boolean
          description: >-
            `true` quando il workflow non presenta un `workflow_graph`
            personalizzato.
        is_editable:
          type: boolean
          description: '`true` solo per le versioni `draft`.'
        workflow_url:
          type: string
          format: uri
          description: URL pubblico che avvia una sessione con questo workflow.
        workflow_graph:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Struttura a grafo del workflow (nodi e archi). `null` per i workflow
            semplici.
        features:
          type: string
          description: >-
            Funzionalità abilitate unite con `" + "`, ad esempio `"OCR +
            LIVENESS"`.
        total_price:
          type: number
          nullable: true
          description: >-
            Prezzo per sessione; per i workflow a grafo, il percorso più
            costoso.
        min_price:
          type: number
          nullable: true
          description: Prezzo del percorso più economico all'interno del workflow.
        max_price:
          type: number
          nullable: true
          description: Prezzo del percorso più costoso all'interno del workflow.
        special_add_on_prices:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Prezzi delle funzionalità aggiuntive specifici per l'organizzazione,
            oppure `null` se non ne è impostato alcuno.
        max_retry_attempts:
          type: integer
          description: Nuovi tentativi consentiti dopo una verifica rifiutata.
        retry_window_days:
          type: integer
          nullable: true
          description: Giorni durante i quali sono consentiti i nuovi tentativi.
        session_expiration_time:
          type: integer
          description: Secondi prima della scadenza di una sessione non completata.
        questionnaire:
          type: object
          nullable: true
          additionalProperties: true
          description: Il questionario associato al workflow, o `null`.
        kyb_role_settings:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Impostazioni di verifica per ruolo per le persone chiave KYB.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        signature_availability:
          type: object
          description: >-
            Quali livelli di Firma elettronica possono essere utilizzati per
            firmare in questo momento. Verificalo prima di impostare
            `signature_level`. Restituito nei workflow `kyc`, `kyb` e a grafo.
          properties:
            simple:
              type: boolean
              description: Simple è sempre disponibile.
            aes:
              type: boolean
              description: >-
                Indica se la firma avanzata (FEA) può firmare ora. Finché è
                `false`, il salvataggio di un nuovo passaggio con
                `signature_level: "aes"` viene rifiutato con
                `aes_not_available`.
            qes:
              type: boolean
              description: >-
                Indica se la firma qualificata (FEQ) può firmare ora. È `false`
                finché non viene collegato un fornitore qualificato.
        is_bank_verification_enabled:
          type: boolean
          description: >-
            Indica se un workflow semplice di KYC o KYB esegue la verifica
            bancaria. Viene eseguita dopo i passaggi di contatto (e la verifica
            della posizione geografica) e prima della validazione su database,
            dello screening AML e dell'analisi IP. La verifica bancaria non è
            ancora disponibile a livello generale: l'attivazione viene rifiutata
            ovunque non sia abilitata.
        bank_verification_config:
          type: object
          additionalProperties: true
          description: >-
            Impostazioni della verifica bancaria di un workflow semplice, con le
            stesse chiavi accettate da un nodo `BANK_VERIFICATION` (ad esempio
            `bank_countries` e `bank_method_order`). Le chiavi sconosciute
            vengono ignorate. Ogni chiave è facoltativa e una chiave assente
            mantiene il proprio valore predefinito, pertanto `{}` indica tutti i
            valori predefiniti. Consulta [Impostazioni della verifica
            bancaria](/it/management-api/workflows/feature-configs#verifica-del-conto-bancario).
          example: {}
        is_geolocation_enabled:
          type: boolean
          description: >-
            Indica se un semplice workflow KYC esegue la verifica della
            posizione geografica. Viene eseguita dopo i passaggi di contatto e
            prima della verifica bancaria e della validazione su database. I
            workflow aziendali (KYB) non possono eseguirla.
        geolocation_config:
          type: object
          additionalProperties: true
          description: >-
            Impostazioni di verifica della posizione di un workflow semplice,
            con le stesse chiavi accettate da un nodo `GEOLOCATION` (ad esempio
            `is_geolocation_geofencing_enabled` e `geolocation_max_attempts`).
            Le chiavi sconosciute vengono ignorate. Ogni chiave è facoltativa e
            una chiave assente mantiene il valore predefinito, quindi `{}`
            indica tutti i valori predefiniti.
          example: {}
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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