> ## 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 per aggiornare il workflow: modifica il flusso KYC

> Aggiorna un workflow KYC o KYB di Didit via API: rinomina, sostituisci le funzionalità ordinate o modifica le soglie. Pagamento a chiamata, senza contratti.



Prompt per l'aggiornamento dell'API del workflow
        Copia il prompt negli appunti



      
      

\<pre>

\`Update a simple Didit workflow through the Management API.

Endpoint:
PATCH https://verification.didit.me/v3/workflows/{settings_uuid}/

Authentication:
Use the x-api-key header with my Didit API key.

Requirements:
\- Use PATCH and include only the fields I want to change.
\- To rename the workflow, send workflow_label only.
\- To change workflow checks, send the full desired features array. This replaces the previous feature order and config.
\- Do not send workflow_graph, branches, actions, webhooks, or conditional logic.
\- Send features in the exact execution order.
\- Use uppercase feature values such as OCR, LIVENESS, FACE_MATCH, AML, QUESTIONNAIRE, EMAIL_VERIFICATION, PHONE_VERIFICATION, or PROOF_OF_ADDRESS.
\- Configure each feature with the fields from /management-api/workflows/feature-configs.
\- For an OCR feature, omit config.documents_allowed or send an empty object to allow every supported document type. Send config.documents_allowed only to restrict the allowed documents.
\- Keep dependency order valid. For example, put OCR before FACE_MATCH.
\- If the workflow includes QUESTIONNAIRE, use the latest questionnaire_id as config.questionnaire_uuid.

Example metadata update body:
\{
"workflow_label": "Premium KYC"
}

Example full feature replacement body:
\{
"features": [
\{
  "feature": "OCR",
  "config": {
    "documents_allowed": {
      "USA": {
        "DL": {
          "enabled": 1,
          "sides": 2
        }
      }
    }
  }
},
\{
  "feature": "AML",
  "config": {
    "aml_score_review_threshold": 70,
    "aml_score_approve_threshold": 30
  }
}
]
}

Build the API call, handle validation errors, and return the updated workflow response.`

\</pre>



      
      

Incolla in

Usa `PATCH` per gli aggiornamenti parziali. Per rinominare un workflow, invia solo `workflow_label`.```json theme={null}
{
  "workflow_label": "Premium KYC"
}
```Per modificare i controlli del workflow, invia l'intero array `features` desiderato. Questo sostituisce l'ordine delle funzionalità e la configurazione precedenti.```json theme={null}
{
  "features": [
    {
      "feature": "OCR",
      "config": {
        "documents_allowed": {
          "USA": {
            "DL": {
              "enabled": 1,
              "sides": 2
            }
          }
        }
      }
    },
    {
      "feature": "AML",
      "config": {
        "aml_score_review_threshold": 70,
        "aml_score_approve_threshold": 30
      }
    }
  ]
}
```L'API v3 mantiene i workflow semplici: un percorso lineare e un unico passaggio di stato finale. Non sono accettati rami, nodi di azione e nodi webhook.## Riferimento alla configurazione delle funzionalitàQuando invii `features` in una `PATCH`, l'array sostituisce l'ordine delle funzionalità e la configurazione precedenti. Includi di nuovo tutte le configurazioni obbligatorie.L'oggetto `config` esatto dipende dalla funzionalità. Consulta l'elenco completo dei campi, i valori predefiniti, le impostazioni obbligatorie, gli intervalli di valori e gli esempi in [Configurazioni delle funzionalità del workflow](https://docs.didit.me/it/management-api/workflows/feature-configs.md).Per `OCR`, ometti `config.documents_allowed`, invia `null` oppure invia `{}` per consentire ogni tipo di documento supportato. Includilo solo se vuoi limitare il workflow a specifici paesi o tipi di documento. Per `QUESTIONNAIRE`, `config.questionnaire_uuid` è obbligatorio.## Aggiornamento delle impostazioni del workflowPuoi modificare le impostazioni a livello di sessione senza toccare l'elenco delle funzionalità. Invia solo i campi che vuoi cambiare.| Campo | Tipo | Descrizione |
| - | - | - |
| `is_white_label_enabled` | boolean | Abilita la personalizzazione White label per le sessioni create con questo workflow. |
| `is_desktop_allowed` | boolean | Consente l'esecuzione del flusso di verifica nei browser desktop. |
| `max_retry_attempts` | intero (0–10) | Numero massimo di nuovi tentativi consentiti dopo una verifica rifiutata. `0` blocca l'utente dopo il primo rifiuto. |
| `retry_window_days` | intero (1–365) o `null` | Finestra mobile in giorni usata per contare i nuovi tentativi (`null` = limite complessivo per tutto il periodo). |
| `session_expiration_time` | intero (3600–2419200) | Secondi prima della scadenza di una sessione non completata. Minimo 1 ora, massimo 4 settimane. |```json theme={null}
{
  "is_white_label_enabled": true,
  "is_desktop_allowed": true,
  "max_retry_attempts": 5,
  "retry_window_days": 14,
  "session_expiration_time": 86400
}
```Usa come `settings_uuid` in questo URL lo `uuid` del workflow restituito dall'endpoint di elenco, creazione o recupero.


## OpenAPI

````yaml it/openapi-25.json PATCH /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}/:
    patch:
      tags:
        - Workflows
      summary: Aggiorna il workflow
      description: >-
        Aggiorna un workflow. Il versionamento dipende dal campo `status`
        inviato e dallo stato corrente della versione: (1) nessun `status` su
        una versione **pubblicata** → la versione pubblicata viene aggiornata
        direttamente (stesso `uuid`, stessa `version`); (2) nessun `status` su
        una **bozza** → la bozza viene aggiornata e pubblicata immediatamente;
        (3) `status: "published"` su una versione **pubblicata** → viene creata
        e restituita una NUOVA versione pubblicata sotto lo stesso `workflow_id`
        (nuovo `uuid`, `version` + 1), ed eventuali bozze esistenti nel gruppo
        vengono eliminate; (4) `status: "draft"` mantiene la bozza come bozza
        (salvataggio automatico), ma viene rifiutato con 400 su una versione
        pubblicata (`"Cannot revert a published version to draft."`). Il corpo
        accetta la stessa whitelist restrittiva dei campi della creazione: le
        chiavi sconosciute vengono rifiutate con 400.
      operationId: update_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID per versione del workflow da aggiornare.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimpleWorkflowUpdateRequest'
            examples:
              Replace features:
                summary: Invia l'ordine completo desiderato delle funzionalità
                value:
                  features:
                    - feature: OCR
                    - feature: AML
              Rename:
                summary: Rinomina un workflow
                value:
                  workflow_label: Premium KYC
              Set as default:
                summary: Rendi questo workflow quello predefinito dell'applicazione
                value:
                  is_default: true
              Update config:
                summary: Modifica la configurazione della funzionalità
                value:
                  features:
                    - feature: OCR
                    - feature: LIVENESS
                      config:
                        face_liveness_method: passive
              Publish a draft:
                summary: Pubblica una bozza
                value:
                  status: published
      responses:
        '200':
          description: >-
            Workflow aggiornato. Il corpo contiene la configurazione COMPLETA
            della versione risultante (stessa struttura raw
            `VerificationSettings` di `GET /v3/workflows/{settings_uuid}/`).
            Quando l'aggiornamento ha creato una nuova versione (`status:
            "published"` inviato su una riga pubblicata), gli attributi `uuid` e
            `version` restituiti differiscono da quelli modificati: usa lo
            `uuid` restituito per le chiamate successive.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowDetail'
        '400':
          description: >-
            Errore di validazione — chiave di primo livello non presente
            nell'elenco degli elementi consentiti, funzionalità sconosciuta,
            ordinamento non valido, soglia fuori intervallo, riferimento a un
            questionario inesistente, funzionalità `SIGNATURE` che andrebbe in
            produzione senza alcun documento da firmare, nuova funzionalità
            `SIGNATURE` con `signature_level: "aes"` mentre Advanced (AES) non è
            disponibile (`aes_not_available`, vedi `signature_availability` sul
            workflow; un passaggio che memorizza già `aes` lo mantiene), oppure
            `status: "draft"` inviato per una versione pubblicata (`"Cannot
            revert a published version to draft."`). Il corpo della risposta è
            un errore di validazione DRF indicizzato per nome campo.
        '403':
          description: Chiave API mancante o non valida.
          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.
        '415':
          description: >-
            Tipo di media non supportato. Imposta `Content-Type:
            application/json`.
        '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 PATCH
            'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"workflow_label": "Premium KYC"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.workflows.update(
                "11111111-2222-3333-4444-555555555555",
                features=[{
                    "feature": "OCR",
                }, {
                    "feature": "AML",
                }],
            )
            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.update("11111111-2222-3333-4444-555555555555", {
              features: [{
                feature: "OCR",
              }, {
                feature: "AML",
              }],
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Workflows.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SimpleWorkflowUpdateRequest{\n\tFeatures: didit.Some([]didit.SimpleWorkflowFeature{{\n\t\tFeature: \"OCR\",\n\t}, {\n\t\tFeature: \"AML\",\n\t}}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.SimpleWorkflowFeature;

            import me.didit.types.SimpleWorkflowUpdateRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.workflows().update("11111111-2222-3333-4444-555555555555",
            SimpleWorkflowUpdateRequest.builder()
                    .features(List.of(
                            SimpleWorkflowFeature.builder()
                                    .feature(SimpleWorkflowFeature.Feature.of("OCR"))
                                    .build(),
                            SimpleWorkflowFeature.builder()
                                    .feature(SimpleWorkflowFeature.Feature.of("AML"))
                                    .build()))
                    .build());
            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->update('11111111-2222-3333-4444-555555555555', [
                'features' => [[
                    'feature' => 'OCR',
                ], [
                    'feature' => 'AML',
                ]],
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.workflows.update(
              "11111111-2222-3333-4444-555555555555",
              features: [{
                feature: "OCR",
              }, {
                feature: "AML",
              }]
            )
            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.UpdateAsync("11111111-2222-3333-4444-555555555555",
            new SimpleWorkflowUpdateRequest

            {
                Features = new SimpleWorkflowFeature[]
                {
                    new()
                    {
                        Feature = "OCR",
                    },
                    new()
                    {
                        Feature = "AML",
                    },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SimpleWorkflowUpdateRequest:
      type: object
      description: >-
        Aggiorna i metadati del workflow o sostituisci l'elenco lineare completo
        delle funzionalità. Whitelist dei campi RIGOROSA: qualsiasi chiave non
        presente qui viene rifiutata con un 400.
      properties:
        workflow_label:
          type: string
          maxLength: 50
          description: Nome visualizzato per il workflow (massimo 50 caratteri).
        is_default:
          type: boolean
          description: Imposta questo workflow come predefinito per le nuove sessioni.
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            Controlla il versionamento. Ometti per aggiornare la versione
            corrente sul posto (le bozze vengono pubblicate automaticamente).
            `published` su una versione già pubblicata crea e restituisce una
            NUOVA versione. `draft` è valido solo finché la versione è ancora
            una bozza.
        features:
          type: array
          minItems: 1
          description: >-
            Se fornito, questo sostituisce l'intero ordine delle funzionalità e
            la relativa configurazione.
          items:
            $ref: '#/components/schemas/SimpleWorkflowFeature'
        is_white_label_enabled:
          type: boolean
          description: >-
            Abilita la personalizzazione White label per le sessioni create con
            questo workflow.
        is_desktop_allowed:
          type: boolean
          description: Consenti l'esecuzione del flusso di verifica sui browser desktop.
        max_retry_attempts:
          type: integer
          minimum: 0
          maximum: 10
          description: >-
            Numero massimo di nuovi tentativi consentiti dopo una verifica
            rifiutata. `0` blocca l'utente dopo il primo rifiuto.
        retry_window_days:
          type: integer
          minimum: 1
          maximum: 365
          nullable: true
          description: >-
            Finestra mobile in giorni utilizzata per contare i nuovi tentativi.
            `null` applica un limite complessivo.
        face_liveness_max_attempts:
          type: integer
          minimum: 1
          maximum: 3
          description: >-
            Numero massimo di invii per il rilevamento della vitalità per
            sessione. Questo valore viene copiato anche nei nodi di workflow
            generati per il rilevamento della vitalità e la stima dell'età, a
            meno che la configurazione a livello di funzionalità non lo
            sovrascriva.
        face_match_max_attempts:
          type: integer
          minimum: 1
          maximum: 3
          description: >-
            Numero massimo di invii per il confronto facciale per sessione.
            Questo valore viene copiato anche nei nodi di workflow generati per
            il confronto facciale, a meno che la configurazione a livello di
            funzionalità non lo sovrascriva.
        session_expiration_time:
          type: integer
          minimum: 3600
          maximum: 2419200
          description: >-
            Secondi prima della scadenza di una sessione non completata. Minimo
            1 ora (3600), massimo 4 settimane (2419200).
    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
    SimpleWorkflowFeature:
      type: object
      required:
        - feature
      properties:
        feature:
          type: string
          description: >-
            Funzionalità da eseguire. Usa i valori in lettere maiuscole mostrati
            qui.
          enum:
            - OCR
            - NFC
            - LIVENESS
            - FACE_MATCH
            - PROOF_OF_ADDRESS
            - QUESTIONNAIRE
            - DOCUMENT_AI
            - PHONE_VERIFICATION
            - EMAIL_VERIFICATION
            - DATABASE_VALIDATION
            - AML
            - IP_ANALYSIS
            - AGE_ESTIMATION
            - KYB_REGISTRY
            - KYB_DOCUMENTS
            - KYB_KEY_PEOPLE
            - SIGNATURE
        config:
          type: object
          description: >-
            Impostazioni specifiche della funzionalità. Per `QUESTIONNAIRE`,
            includi `questionnaire_uuid` con il `questionnaire_id` restituito
            dall'endpoint di creazione del questionario. Per `SIGNATURE`, un
            workflow che passa in produzione richiede un documento da firmare:
            imposta `signature_documents_source` su `session` o `both` in modo
            che ogni sessione possa fornire il proprio, oppure invia `status:
            "draft"` e aggiungi i documenti prima della pubblicazione.
            `signature_level: "aes"` viene rifiutato con `aes_not_available`
            finché `signature_availability.aes` è `false` nel workflow. Per
            `OCR`, `methods` seleziona quali metodi di Verifica dell'identità
            ciascun paese può utilizzare (acquisizione del documento, verifica
            non documentale rispetto a fonti governative o altre fonti
            autorevoli e wallet di identità digitale); omettilo e ogni paese
            utilizzerà unicamente l'acquisizione del documento. Per `SIGNATURE`,
            consulta [Impostazioni della firma
            elettronica](/it/management-api/workflows/feature-configs#e-signature):
            `signature_level` accetta per ora `simple` (il valore predefinito,
            non richiede verifica dell'identità, email o telefono) e `aes`;
            inoltre, i documenti del workflow e i relativi campi vengono gestiti
            nella console, quindi tramite l'API invia documenti e campi per
            sessione con `signature_documents_source: "session"`.
          additionalProperties: true
        label:
          type: string
          description: Etichetta interna opzionale per questo nodo del workflow.
  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.