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

# Get Workflow

> Fetch full configuration for one workflow version by `settings_uuid`: feature toggles, thresholds, allowed documents, graph, retry policy, callbacks, and pricing.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="Get Workflow API Prompt"
  prompt={`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.`}
/>


## OpenAPI

````yaml GET /v3/workflows/{settings_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/workflows/{settings_uuid}/:
    get:
      tags:
        - Workflows
      summary: Get workflow
      description: >-
        Fetch full configuration for one workflow version by `settings_uuid`:
        feature toggles, thresholds, allowed documents, graph, retry policy,
        callbacks, and pricing.
      operationId: get_workflow
      parameters:
        - name: settings_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Per-version UUID of the workflow (the `uuid` value returned by the
            list endpoint). Each version of a workflow has its own
            `settings_uuid`.
      responses:
        '200':
          description: >-
            Full workflow configuration. The shape is the raw
            `VerificationSettings` serialization (~190 fields: every feature
            toggle, threshold, warning action, allowed-documents config, the
            `workflow_graph`, retry policy, callbacks and pricing). The example
            below is abbreviated. Notes: `features` is a `" + "`-joined string
            (e.g. `"OCR + LIVENESS"`), prices are JSON numbers, and
            `is_editable` is `true` only for `draft` versions.
          content:
            application/json:
              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: >-
            API key is missing, malformed, expired, or scoped to a different
            application.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            No workflow with this `settings_uuid` exists for the authenticated
            application. Either the UUID is wrong or it belongs to another
            application — Didit deliberately does not distinguish the two cases
            to avoid leaking the existence of cross-application records.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: Rate limit exceeded. Retry with exponential backoff.
        '500':
          description: Unexpected server error. Safe to retry.
      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 (requests)
          source: |-
            import requests

            resp = requests.get(
                f"https://verification.didit.me/v3/workflows/{settings_uuid}/",
                headers={"x-api-key": "YOUR_API_KEY"},
                timeout=10,
            )
            resp.raise_for_status()
            workflow = resp.json()
            print(workflow["workflow_label"], workflow["status"])
        - lang: JavaScript
          label: Node.js (fetch)
          source: >-
            const res = await
            fetch(`https://verification.didit.me/v3/workflows/${settingsUuid}/`,
            {
              headers: { 'x-api-key': 'YOUR_API_KEY' },
            });

            if (!res.ok) throw new Error(`Didit ${res.status}`);

            const workflow = await res.json();

            console.log(workflow.workflow_label, workflow.status);
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````