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

> Fetch full questionnaire detail for one version by `questionnaire_uuid`: title, `languages`, canonical `graph`, derived `sections`, and version metadata.

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 Questionnaire API Prompt"
  prompt={`Fetch the full configuration of a single Didit questionnaire through the Management API.

Endpoint:
GET https://verification.didit.me/v3/questionnaires/{questionnaire_uuid}/

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

Goal:
- Retrieve the questionnaire definition (form_elements, languages, translations, internal graph) so I can render a preview, debug a session, or audit changes.

Path parameter:
- questionnaire_uuid — the per-version questionnaire UUID returned by GET /v3/questionnaires/ or POST /v3/questionnaires/. Each version has its own primary key; questionnaire_group_id is the stable id shared by every version.

Example call:
curl -X GET "https://verification.didit.me/v3/questionnaires/{questionnaire_uuid}/" \\
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
- title — internal questionnaire name.
- languages and default_language — supported locales for translations.
- form_elements — ordered question definitions including element_type, label, options, is_required.
- graph — internal graph built from form_elements (do not edit manually; use the simple form_elements shape on PATCH).
- status — "draft" or "published"; only drafts are editable.

Failure modes:
- 401 — missing or malformed x-api-key.
- 403 — canonical { "detail": "You do not have permission to perform this action." } envelope when the questionnaire belongs to a different application than the API key.
- 404 — questionnaire not found in this application.

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`}
/>


## OpenAPI

````yaml GET /v3/questionnaires/{questionnaire_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/questionnaires/{questionnaire_uuid}/:
    get:
      tags:
        - Questionnaires
      summary: Get questionnaire
      description: >-
        Fetch full questionnaire detail for one version by `questionnaire_uuid`:
        title, `languages`, canonical `graph`, derived `sections`, and version
        metadata.
      operationId: get_questionnaire
      parameters:
        - name: questionnaire_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Per-version UUID of the questionnaire (the `uuid` value returned by
            the list endpoint, also returned as `questionnaire_id` on detail
            endpoints).
      responses:
        '200':
          description: >-
            Full questionnaire detail including the canonical `graph`, the
            derived `sections` view, version metadata, and `is_editable`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireDetail'
              examples:
                Published questionnaire:
                  value:
                    questionnaire_id: 11111111-2222-3333-4444-555555555555
                    title: Customer Onboarding
                    description: Additional information needed for verification
                    languages:
                      - en
                    default_language: en
                    is_active: true
                    is_simple_questionnaire: true
                    graph:
                      start_node: occupation
                      nodes:
                        occupation:
                          element_type: SHORT_TEXT
                          is_required: true
                          title:
                            en: What is your occupation?
                          next: source_of_funds
                        source_of_funds:
                          element_type: MULTIPLE_CHOICE
                          is_required: true
                          title:
                            en: Source of funds
                          choices:
                            - value: employment
                              label:
                                en: Employment
                            - value: business
                              label:
                                en: Business
                          next: null
                    sections:
                      - title: {}
                        description: {}
                        items:
                          - uuid: 11111111-2222-3333-4444-666666666666
                            value: occupation
                            element_type: SHORT_TEXT
                            is_required: true
                            title:
                              en: What is your occupation?
                    questionnaire_group_id: 11111111-2222-3333-4444-555555555555
                    version: 1
                    status: published
                    published_at: '2026-04-23T10:00:00Z'
                    is_editable: false
        '403':
          description: >-
            API key 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 questionnaire with this `questionnaire_uuid` exists for the
            authenticated application. Either the UUID is wrong or it belongs to
            another application — the API deliberately does not distinguish the
            two cases.
          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/questionnaires/11111111-2222-3333-4444-555555555555/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: Python
          label: Python (requests)
          source: |-
            import requests

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

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

            const questionnaire = await res.json();

            console.log(questionnaire.title, questionnaire.status);
components:
  schemas:
    QuestionnaireDetail:
      type: object
      description: >-
        Full questionnaire detail returned from GET, POST (create) and PATCH
        (update) endpoints.
      properties:
        questionnaire_id:
          type: string
          format: uuid
          description: >-
            Unique identifier of the questionnaire. Use this id when referencing
            the questionnaire from a workflow or in subsequent update/delete
            requests.
        title:
          type: string
        description:
          type: string
          nullable: true
        languages:
          type: array
          items:
            type: string
        default_language:
          type: string
        is_active:
          type: boolean
        is_simple_questionnaire:
          type: boolean
        graph:
          type: object
          description: Graph structure with start_node and nodes map.
        sections:
          type: array
          description: >-
            Questionnaire content grouped into sections (derived from the
            graph).
          items:
            type: object
        questionnaire_group_id:
          type: string
          format: uuid
          description: >-
            Stable identifier that groups all versions of the same
            questionnaire.
        version:
          type: integer
        status:
          type: string
          enum:
            - draft
            - published
        published_at:
          type: string
          format: date-time
          nullable: true
        is_editable:
          type: boolean
          description: >-
            True when the questionnaire can still be edited in place (draft
            versions).
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````