The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its <field>Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its <field>Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope.
### Access, effects and retries
**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.
**Prerequisites:** A partner API key; no scope is needed.
**Effects:** None.
**Retries:** Safe to retry.
GET
/
v1
/
partner
/
questionnaires
/
{slug}
/
curl
set -euumask 077# Path values must be URL-encoded; query string excludes the leading question mark.url="${HD_BASE_URL:?Set API origin}/v1/partner/questionnaires/${HD_PATH_SLUG:?Set the path fixture}/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}"printf 'Accept: application/json\n' > "${HD_REQUEST_HEADERS_FILE:?Private header file}"printf 'Authorization: Bearer %s\n' "${HD_PARTNER_API_KEY:?Set partner API key}" >> "$HD_REQUEST_HEADERS_FILE"curl --silent --show-error --max-time 30 --request GET \ --header "@$HD_REQUEST_HEADERS_FILE" \ --dump-header "${HD_HEADERS_FILE:?Private response header file}" \ --output "${HD_RESPONSE_FILE:?Private response file}" \ --write-out '%{http_code}\n%{content_type}\n' \ "$url"
The hash of exactly the schema in this response (localized when locale is set). Send it back with the submission: the current version's hash is accepted with or without a locale and in any supported locale; a stale hash is refused with 409 schema_outdated.
The locale the labels are written in: the requested one, or en when it is not supported. null when no locale was requested (labels carry message keys only).
The questionnaire: steps, questions, options and validation rules.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hi Doctor","public":true,"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Connect it to an AI assistant over MCP, or build on the REST API.","colors":{"primary":"#157A5C","light":"#39C69C","dark":"#0E6149"},"logo":{"light":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923","dark":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-dark.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=06850588c83edfff94669e9260585343","href":"https://hi-doctor.ai"},"favicon":"https://mintcdn.com/hi-doctor-ai/V_4Yl0k2E857_Kxm/favicon.svg?fit=max\u0026auto=format\u0026n=V_4Yl0k2E857_Kxm\u0026q=85\u0026s=581ac27595afff79fbc35c5d54d60709","api":{"openapi":"api-reference/openapi.json","examples":{"prefill":true},"mdx":{"auth":{"method":"bearer"},"server":"https://api.hi-doctor.ai"}},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"links":[{"icon":"star","href":"https://www.trustpilot.com/review/hi-doctor.ai","label":"Reviews"},{"icon":"envelope","href":"mailto:hello@hi-doctor.ai","label":"Support"}],"primary":{"type":"button","label":"Start a consultation","href":"https://hi-doctor.ai/consultation"}},"footer":{"socials":{"website":"https://hi-doctor.ai"}},"search":{"prompt":"Search Hi Doctor docs..."},"seo":{"metatags":{"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Weight loss, hair growth and sexual health consultations. Connect your account to an AI assistant with the Hi Doctor MCP connector, or build on the REST API.","author":"Hi Doctor","robots":"index, follow, max-image-preview:large, max-snippet:-1","og:site_name":"Hi Doctor Documentation","og:type":"website","og:locale":"en_US","twitter:card":"summary_large_image","theme-color":"#157A5C"},"organization":{"name":"Hi Doctor","url":"https://hi-doctor.ai"},"indexing":"navigable"},"fonts":{"family":"Figtree"},"errors":{"404":{"redirect":false,"title":"Page not found","description":"This page moved or never existed. [Back to the docs](/)"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"Hi Doctor Docs search","description":"Search the documentation with the Hi Doctor Docs MCP server.","icon":"magnifying-glass","href":"https://docs.hi-doctor.ai/mcp"},{"title":"Connect Hi Doctor","description":"Install the Hi Doctor MCP connector for patient tools.","icon":"plug","href":"/mcp/connect"}],"display":"header"},"markdown":{"instructions":"Connect the Hi Doctor MCP connector at https://mcp.hi-doctor.ai/mcp. Add this URL as a remote HTTP MCP server in your client, then sign in and authorise access through OAuth. Setup: https://docs.hi-doctor.ai/mcp/connect.\n\nThe REST API base is https://api.hi-doctor.ai. Hi Doctor Docs at https://docs.hi-doctor.ai/mcp searches documentation; connect to the product endpoint above for patient tools.\n\nHi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Every consultation is reviewed in full by an EU-licensed doctor, who decides on medical grounds only. No algorithm, assistant or API call approves a consultation, issues a prescription or changes a dose. The service is available in eight languages: English, Spanish, German, Dutch, Italian, French, Portuguese and Chinese.\n\n## Rules an assistant must follow\n\n- Never invent, assume or infer a medical answer. \"I don't know\" is a real answer: ask the patient to pick the closest option rather than guessing for them.\n- Never give medical advice and never suggest a medication or a dose. An EU-licensed doctor decides those.\n- If a questionnaire returns `ineligible`, say so plainly. Do not retry with altered answers.\n- Before anything that costs money or cancels a plan, state exactly what will happen and get an explicit yes.\n- Cancellation takes effect at the **end of the paid period**, not immediately. Say so.\n- An early order is irreversible: it creates the renewal consultation immediately and uses up the period's one early order. Explain that and get an explicit yes.\n- Prescription and invoice links are medical documents. A `signed_redirect` link opens without signing in: give it only to the patient, never repeat it anywhere shared.\n- Send option `value`s, not the labels shown to the patient. Labels are translated, values are stable.\n- Never ask for card details. Payment happens on Stripe's hosted checkout via a link.\n- On severe or sudden symptoms (chest pain, difficulty breathing, severe allergic reaction, suicidal thoughts), stop and direct the patient to their local emergency number."},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hi-doctor-ai","hasAudioNarration":false,"actualSubdomain":"hi-doctor-ai","customDomains":["docs.hi-doctor.ai"],"gitSource":{"type":"github","owner":"online-medicine","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb4f77b21018c2553e6554","collectionId":"479e76df-8b71-4bcd-b29d-f545ddafad1a","liveDeploymentHistoryId":"6aeb4f77b21018c2553e6554","schemaVersion":"v3"},"entitlements":{},"buildId":"6aeb4f77b21018c2553e6554","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Health library","count":132},{"language":"default","tag":"API reference","count":114},{"language":"default","tag":"Endpoints","count":104},{"language":"default","tag":"Medicines","count":72},{"language":"default","tag":"Partners","count":47},{"language":"default","tag":"Sexual-health medicines","count":28},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Partner API reference","count":26},{"language":"default","tag":"Conditions","count":25},{"language":"default","tag":"Progress","count":23}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--hd-brand: #157a5c;--hd-brand-strong: #0e6149;--hd-tint: #e3f4ec;--hd-canvas: #ffffff;--hd-alt: #f4f7f4;--hd-border: #e0e0e0;--hd-secondary: #666666;--hd-ink: #000000;--hd-brand-deep: #0b2b22;--hd-dark-bg: #0a0a0a;--hd-dark-surface: #161616;--hd-dark-raised: #1c1c1c;--hd-dark-border: #262626;--hd-dark-text: #ededed;--hd-dark-muted: #a1a1a1;--hd-dark-accent: #39c69c;--hd-status-warning: #8f5e1d;--hd-status-warning-wash: #f6e9dd;--hd-canvas-rgb: 255 255 255;--hd-tint-rgb: 227 244 236;--hd-ink-rgb: 0 0 0;--hd-dark-accent-rgb: 57 198 156;--hd-label-on-dark: rgb(var(--hd-tint-rgb) / 0.75);--hd-card-bg: var(--hd-brand-deep);--hd-card-fg: var(--hd-tint);--hd-card-accent: var(--hd-tint);--hd-card-accent-rgb: var(--hd-tint-rgb);--hd-card-border: rgb(var(--hd-ink-rgb) / 0.1)}html.dark{--hd-label-on-dark: var(--hd-dark-muted);--hd-card-bg: var(--hd-dark-surface);--hd-card-fg: var(--hd-dark-text);--hd-card-accent: var(--hd-dark-accent);--hd-card-accent-rgb: var(--hd-dark-accent-rgb);--hd-card-border: var(--hd-dark-border);--gray-50: 250 250 250;--gray-100: 245 245 245;--gray-200: 237 237 237;--gray-300: 212 212 212;--gray-400: 161 161 161;--gray-500: 115 115 115;--gray-600: 82 82 82;--gray-700: 58 58 58;--gray-800: 38 38 38;--gray-900: 22 22 22;--gray-950: 10 10 10}.nav-logo{height:26px;width:auto;max-width:none}a:has(>.nav-logo){display:inline-flex;align-items:center;min-height:44px}@media (max-width: 1023px){.nav-logo{height:24px}}#topbar-cta-button a{--hd-cta-bg: var(--hd-ink);--hd-cta-fg: var(--hd-canvas);--hd-cta-ring: var(--hd-brand);background-color:var(--hd-cta-bg);color:var(--hd-cta-fg);border-radius:999px;transition:background-color 160ms ease, color 160ms ease}#topbar-cta-button a>span.absolute{background-color:transparent;opacity:1}#topbar-cta-button a span,#topbar-cta-button a svg{color:var(--hd-cta-fg)}#topbar-cta-button a:hover{--hd-cta-bg: var(--hd-brand);--hd-cta-fg: var(--hd-canvas);transition-duration:240ms}#topbar-cta-button a:focus-visible{outline:2px solid var(--hd-cta-ring);outline-offset:2px}html.dark #topbar-cta-button a{--hd-cta-bg: var(--hd-canvas);--hd-cta-fg: var(--hd-ink);--hd-cta-ring: var(--hd-dark-accent)}html.dark #topbar-cta-button a:hover{--hd-cta-bg: var(--hd-tint);--hd-cta-fg: var(--hd-ink)}.hd-agent-card{width:100%;max-width:100%;min-width:0;margin:12px 0 20px;border-radius:12px;border:1px solid var(--hd-card-border);overflow:hidden;box-sizing:border-box;background:var(--hd-card-bg)}.hd-agent-titlebar{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.05);border-bottom:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-mark{display:inline-flex;align-items:center;color:var(--hd-card-accent)}.hd-agent-filename{flex:1;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--hd-card-accent)}.hd-agent-copy{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;border:1px solid rgb(var(--hd-canvas-rgb) / 0.18);background:transparent;color:var(--hd-canvas);font-size:12px;cursor:pointer;transition:background-color 160ms ease, border-color 160ms ease}.hd-agent-copy:hover{background:rgb(var(--hd-canvas-rgb) / 0.1);border-color:rgb(var(--hd-canvas-rgb) / 0.32);transition-duration:240ms}.hd-agent-copy-copied{color:var(--hd-card-accent);border-color:var(--hd-card-accent)}.hd-agent-body{width:100%;max-height:340px;overflow-y:auto;overflow-x:auto;margin:0!important;padding:16px 18px!important;background:var(--hd-card-bg)!important;border:none!important;border-radius:0!important;box-shadow:none!important;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace!important;font-size:12.5px!important;line-height:1.65!important;color:var(--hd-card-fg)!important;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;scrollbar-width:thin;scrollbar-color:rgb(var(--hd-canvas-rgb) / 0.18) transparent}.hd-agent-footer{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.04);border-top:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-footer-label{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--hd-label-on-dark)}.hd-agent-chips{display:flex;flex-wrap:wrap;gap:6px}.hd-agent-chip{padding:3px 9px;border-radius:999px;background:rgb(var(--hd-card-accent-rgb) / 0.14);color:var(--hd-card-accent);font-size:11px;white-space:nowrap}.hd-agent-card pre,.hd-agent-card code{max-width:100%}#content-area h1,#content-area h2,#content-area h3,#content-area h4{color:var(--hd-ink)}html.dark #content-area h1,html.dark #content-area h2,html.dark #content-area h3,html.dark #content-area h4{color:var(--hd-canvas)}html.dark #content-area table th,html.dark #content-area table td{border-color:var(--hd-dark-border)}html.dark #content-area table th{color:var(--hd-dark-text)}html.dark #content-area :not(pre):not(a)>code{background-color:var(--hd-dark-surface);border-color:var(--hd-dark-border);color:var(--hd-dark-text)}.sidebar-group-header{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;font-weight:600;line-height:1.2;letter-spacing:0.16em;text-transform:uppercase;color:var(--hd-brand);margin-top:0.35rem;margin-bottom:0.9rem}.sidebar-group-header .sidebar-title{font:inherit;letter-spacing:inherit}html.dark .sidebar-group-header{color:var(--hd-label-on-dark)}.callout[data-callout-type=\"note\"]{border-color:var(--hd-border);background-color:var(--hd-alt)}.callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-secondary)}.callout[data-callout-type=\"info\"]{border-color:var(--hd-brand);background-color:var(--hd-tint)}.callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"tip\"]{border-color:var(--hd-brand-strong);background-color:var(--hd-canvas)}.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"warning\"]{border-color:var(--hd-status-warning);background-color:var(--hd-status-warning-wash)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-status-warning)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:var(--hd-ink)}html.dark .callout[data-callout-type=\"note\"]{border-color:var(--hd-dark-border);background-color:var(--hd-dark-surface)}html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-muted)}html.dark .callout[data-callout-type=\"info\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.6);background-color:rgb(var(--hd-dark-accent-rgb) / 0.1)}html.dark .callout[data-callout-type=\"tip\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.5);background-color:transparent}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-dark-accent)}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"],html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-text)}html.dark .callout[data-callout-type=\"warning\"]{border-color:#a57e4a;background-color:rgb(143 94 29 / 0.22)}html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:#d8b28a}"}],"page":{"pagePath":"api-reference/questionnaires/get-a-questionnaire","slug":"/api-reference/questionnaires/get-a-questionnaire","pageMetadata":{"title":"Get a questionnaire","description":"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its \u003cfield>Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its \u003cfield>Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key; no scope is needed.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/questionnaires/{slug}/","href":"/api-reference/questionnaires/get-a-questionnaire","autogeneratedByOpenApi":true},"description":"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its \u003cfield>Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its \u003cfield>Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key; no scope is needed.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get a questionnaire","description":"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its \u003cfield>Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its \u003cfield>Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key; no scope is needed.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/questionnaires/{slug}/","href":"/api-reference/questionnaires/get-a-questionnaire","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"get_questionnaire","description":"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its \u003cfield>Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its \u003cfield>Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key; no scope is needed.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","summary":"Get a questionnaire","parameters":["ef97ed18-b196-4522-a2d1-87a6bc00b89c","cd39e942-c91e-4985-ac23-c0ec72d32824","cb87ea09-d2b4-4eb2-9e5c-b4efb986d53b"],"tags":["Questionnaires"],"security":["0dede3a0-6cfd-4821-b4b4-c063e167cf80"],"responses":{"200":"7de2cea3-d33c-4f52-89e6-983e5a1e0036","400":"227e3784-6b01-4c57-ae51-9e0dea93de82","401":"0d2c1fc7-d397-4bf0-9379-13cde7bf11c6","403":"56dd41dd-5580-4b63-bb96-b54318aa9255","404":"099908af-fcb0-49f8-ad2b-3a2d73ebb298","429":"f07ab9fb-91ca-481d-99cb-6eacce76bad3"},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"set -eu\numask 077\n# Path values must be URL-encoded; query string excludes the leading question mark.\nurl=\"${HD_BASE_URL:?Set API origin}/v1/partner/questionnaires/${HD_PATH_SLUG:?Set the path fixture}/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}\"\nprintf 'Accept: application/json\\n' > \"${HD_REQUEST_HEADERS_FILE:?Private header file}\"\nprintf 'Authorization: Bearer %s\\n' \"${HD_PARTNER_API_KEY:?Set partner API key}\" >> \"$HD_REQUEST_HEADERS_FILE\"\ncurl --silent --show-error --max-time 30 --request GET \\\n --header \"@$HD_REQUEST_HEADERS_FILE\" \\\n --dump-header \"${HD_HEADERS_FILE:?Private response header file}\" \\\n --output \"${HD_RESPONSE_FILE:?Private response file}\" \\\n --write-out '%{http_code}\\n%{content_type}\\n' \\\n \"$url\"\n"},{"lang":"Python","label":"requests","source":"import os, json\nfrom pathlib import Path\nfrom urllib.parse import quote\nimport requests\nos.umask(0o077)\nurl = os.environ[\"HD_BASE_URL\"].rstrip(\"/\") + '/v1/partner/questionnaires/{slug}/'\nurl = url.replace('{slug}', quote(os.environ['HD_PATH_SLUG'], safe=\"\"))\nif os.environ.get(\"HD_QUERY_STRING\"): url += \"?\" + os.environ[\"HD_QUERY_STRING\"]\nheaders = {\"Accept\": 'application/json'}\nheaders[\"Authorization\"] = \"Bearer \" + os.environ[\"HD_PARTNER_API_KEY\"]\nkwargs = {}\nresponse = requests.request('GET', url, headers=headers, timeout=30, allow_redirects=False, **kwargs)\nPath(os.environ[\"HD_RESPONSE_FILE\"]).write_bytes(response.content)\nPath(os.environ[\"HD_HEADERS_FILE\"]).write_text(json.dumps(dict(response.headers)))\nprint(response.status_code)\nprint(response.headers.get(\"Content-Type\", \"\"))\n"},{"lang":"JavaScript","label":"fetch","source":"import { readFileSync, writeFileSync } from \"node:fs\";\nconst env = process.env;\nlet url = env.HD_BASE_URL.replace(/\\/$/, \"\") + \"/v1/partner/questionnaires/{slug}/\";\nurl = url.replace(\"{slug}\", encodeURIComponent(env.HD_PATH_SLUG));\nif (env.HD_QUERY_STRING) url += \"?\" + env.HD_QUERY_STRING;\nconst headers = { \"Accept\": \"application/json\" };\nheaders.Authorization = \"Bearer \" + env.HD_PARTNER_API_KEY;\nconst options = { method: \"GET\", headers, redirect: \"manual\", signal: AbortSignal.timeout(30000) };\nconst response = await fetch(url, options);\nwriteFileSync(env.HD_RESPONSE_FILE, Buffer.from(await response.arrayBuffer()), {mode: 0o600});\nwriteFileSync(env.HD_HEADERS_FILE, JSON.stringify(Object.fromEntries(response.headers)), {mode: 0o600});\nconsole.log(response.status);\nconsole.log(response.headers.get(\"content-type\") ?? \"\");\n"}],"method":"get","type":"path","servers":["a52f5261-d6ca-4f76-8d3e-ad58db271710"],"path":"/v1/partner/questionnaires/{slug}/","baseUrlOptions":["https://api.hi-doctor.ai"],"title":"Get a questionnaire","codeSamples":[{"label":"curl","lang":"Shell","source":"set -eu\numask 077\n# Path values must be URL-encoded; query string excludes the leading question mark.\nurl=\"${HD_BASE_URL:?Set API origin}/v1/partner/questionnaires/${HD_PATH_SLUG:?Set the path fixture}/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}\"\nprintf 'Accept: application/json\\n' > \"${HD_REQUEST_HEADERS_FILE:?Private header file}\"\nprintf 'Authorization: Bearer %s\\n' \"${HD_PARTNER_API_KEY:?Set partner API key}\" >> \"$HD_REQUEST_HEADERS_FILE\"\ncurl --silent --show-error --max-time 30 --request GET \\\n --header \"@$HD_REQUEST_HEADERS_FILE\" \\\n --dump-header \"${HD_HEADERS_FILE:?Private response header file}\" \\\n --output \"${HD_RESPONSE_FILE:?Private response file}\" \\\n --write-out '%{http_code}\\n%{content_type}\\n' \\\n \"$url\"\n"},{"label":"requests","lang":"Python","source":"import os, json\nfrom pathlib import Path\nfrom urllib.parse import quote\nimport requests\nos.umask(0o077)\nurl = os.environ[\"HD_BASE_URL\"].rstrip(\"/\") + '/v1/partner/questionnaires/{slug}/'\nurl = url.replace('{slug}', quote(os.environ['HD_PATH_SLUG'], safe=\"\"))\nif os.environ.get(\"HD_QUERY_STRING\"): url += \"?\" + os.environ[\"HD_QUERY_STRING\"]\nheaders = {\"Accept\": 'application/json'}\nheaders[\"Authorization\"] = \"Bearer \" + os.environ[\"HD_PARTNER_API_KEY\"]\nkwargs = {}\nresponse = requests.request('GET', url, headers=headers, timeout=30, allow_redirects=False, **kwargs)\nPath(os.environ[\"HD_RESPONSE_FILE\"]).write_bytes(response.content)\nPath(os.environ[\"HD_HEADERS_FILE\"]).write_text(json.dumps(dict(response.headers)))\nprint(response.status_code)\nprint(response.headers.get(\"Content-Type\", \"\"))\n"},{"label":"fetch","lang":"JavaScript","source":"import { readFileSync, writeFileSync } from \"node:fs\";\nconst env = process.env;\nlet url = env.HD_BASE_URL.replace(/\\/$/, \"\") + \"/v1/partner/questionnaires/{slug}/\";\nurl = url.replace(\"{slug}\", encodeURIComponent(env.HD_PATH_SLUG));\nif (env.HD_QUERY_STRING) url += \"?\" + env.HD_QUERY_STRING;\nconst headers = { \"Accept\": \"application/json\" };\nheaders.Authorization = \"Bearer \" + env.HD_PARTNER_API_KEY;\nconst options = { method: \"GET\", headers, redirect: \"manual\", signal: AbortSignal.timeout(30000) };\nconst response = await fetch(url, options);\nwriteFileSync(env.HD_RESPONSE_FILE, Buffer.from(await response.arrayBuffer()), {mode: 0o600});\nwriteFileSync(env.HD_HEADERS_FILE, JSON.stringify(Object.fromEntries(response.headers)), {mode: 0o600});\nconsole.log(response.status);\nconsole.log(response.headers.get(\"content-type\") ?? \"\");\n"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{"ef97ed18-b196-4522-a2d1-87a6bc00b89c":{"in":"path","name":"slug","schema":{"type":"string","isRequired":true,"description":"The questionnaire slug.","uniqueKey":"","typeLabel":"string"},"description":"The questionnaire slug.","required":true,"example":"hair-growth"},"cd39e942-c91e-4985-ac23-c0ec72d32824":{"in":"query","name":"product_id","schema":{"type":"string","description":"Pick the questionnaire variant for this product.","uniqueKey":"","typeLabel":"string"},"description":"Pick the questionnaire variant for this product.","example":"oral_finasteride"},"cb87ea09-d2b4-4eb2-9e5c-b4efb986d53b":{"in":"query","name":"locale","schema":{"type":"string","description":"Language for the labels: one of en, es, zh. Any other value falls back to English.","uniqueKey":"","typeLabel":"string"},"description":"Language for the labels: one of en, es, zh. Any other value falls back to English.","example":"es"}},"responses":{"7de2cea3-d33c-4f52-89e6-983e5a1e0036":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"Questionnaire slug.","isRequired":true,"uniqueKey":"slug","typeLabel":"string"},"schema_version":{"type":"string","description":"Version of the questionnaire schema.","isRequired":true,"uniqueKey":"schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"The hash of exactly the schema in this response (localized when locale is set). Send it back with the submission: the current version's hash is accepted with or without a locale and in any supported locale; a stale hash is refused with 409 schema_outdated.","isRequired":true,"uniqueKey":"schema_hash","typeLabel":"string"},"locale":{"oneOf":[{"type":"string","description":"The locale the labels are written in: the requested one, or en when it is not supported. null when no locale was requested (labels carry message keys only).","isRequired":true,"uniqueKey":"locale.oneOf.0","typeLabel":"string"},{"type":"null","description":"The locale the labels are written in: the requested one, or en when it is not supported. null when no locale was requested (labels carry message keys only).","isRequired":true,"uniqueKey":"locale.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"locale","typeLabel":"string | null"},"answer_format":{"type":"string","description":"The answer format to submit: entries-v1.","enum":["entries-v1"],"isRequired":true,"uniqueKey":"answer_format","typeLabel":"enum\u003cstring>"},"upload_answer":{"type":"object","description":"How to answer an upload question.","required":["value"],"properties":{"value":{"type":"string","description":"Answer an upload question with the upload_id returned by POST /files.","isRequired":true,"uniqueKey":"upload_answer.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"upload_answer","typeLabel":"object"},"schema":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"schema.additionalProperties","typeLabel":"any"},"description":"The questionnaire: steps, questions, options and validation rules.","isRequired":true,"uniqueKey":"schema","typeLabel":"object"}},"required":["answer_format","locale","schema","schema_hash","schema_version","slug","upload_answer"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"slug":"hair-growth","schema_version":"412","schema_hash":"\u003cHASH>","locale":null,"answer_format":"entries-v1","upload_answer":{"value":"\u003cupload_id>"},"schema":{"steps":[{"key":"hair_loss_duration","kind":"single","label":"categories.hairGrowth.form.steps.duration.label","labelKey":"categories.hairGrowth.form.steps.duration.label","required":true,"options":[{"value":"under_1_year","label":"categories.hairGrowth.form.steps.duration.options.under1Year","labelKey":"categories.hairGrowth.form.steps.duration.options.under1Year"},{"value":"over_1_year","label":"categories.hairGrowth.form.steps.duration.options.over1Year","labelKey":"categories.hairGrowth.form.steps.duration.options.over1Year"}]}]}}},"example-2":{"title":"example-2","value":{"slug":"hair-growth","schema_version":"412","schema_hash":"\u003cHASH>","locale":"es","answer_format":"entries-v1","upload_answer":{"value":"\u003cupload_id>"},"schema":{"steps":[{"key":"hair_loss_duration","kind":"single","label":"¿Desde cuándo notas la caída del pelo?","labelKey":"categories.hairGrowth.form.steps.duration.label","required":true,"options":[{"value":"under_1_year","label":"Menos de un año","labelKey":"categories.hairGrowth.form.steps.duration.options.under1Year"},{"value":"over_1_year","label":"Más de un año","labelKey":"categories.hairGrowth.form.steps.duration.options.over1Year"}]}]}}}},"exampleType":"examples"}},"description":"Success.","exampleType":"examples"},"227e3784-6b01-4c57-ae51-9e0dea93de82":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"invalid_request","code":"brand_header_not_allowed","message":"Brand headers are not accepted on partner requests; the brand comes from the API key.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The request is malformed. Partner routes also refuse the patient-app brand header with 400 brand_header_not_allowed, before authentication (no rate-limit headers).","exampleType":"examples"},"0d2c1fc7-d397-4bf0-9379-13cde7bf11c6":{"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"The authentication scheme to use: Bearer realm=\"hi-doctor-partner\"."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"authentication_error","code":"not_authenticated","message":"Authentication credentials were not provided.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"authentication_error","code":"invalid_token","message":"The API key is not valid.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-3":{"title":"example-3","value":{"error":{"type":"authentication_error","code":"key_revoked","message":"The API key has been revoked.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-4":{"title":"example-4","value":{"error":{"type":"authentication_error","code":"key_expired","message":"The API key has expired.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-5":{"title":"example-5","value":{"error":{"type":"authentication_error","code":"partner_suspended","message":"The partner account is suspended.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The API key is missing, malformed, unknown, revoked or expired, or the partner account is suspended. The response carries WWW-Authenticate: Bearer realm=\"hi-doctor-partner\" and no rate-limit headers.","exampleType":"examples"},"56dd41dd-5580-4b63-bb96-b54318aa9255":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"permission_error","code":"partner_not_live","message":"Live mode is not enabled for this partner.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"A live key was used while live mode is not enabled for the partner. This operation needs no scope.","exampleType":"examples"},"099908af-fcb0-49f8-ad2b-3a2d73ebb298":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"oneOf.0.error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"oneOf.0.error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"oneOf.0.error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"oneOf.0.error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"oneOf.0.error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"oneOf.0.error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"oneOf.0.error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"oneOf.0.error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"oneOf.0.error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"oneOf.0.error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"oneOf.0.error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"oneOf.0.error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"The reduced body every route answers while the Partner API is switched off for the environment: no code, message or request_id.","required":["error"],"properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["not_found"],"description":"Always not_found.","isRequired":true,"uniqueKey":"oneOf.1.error.type","typeLabel":"enum\u003cstring>"}},"required":["type"],"additionalProperties":false,"description":"Only the error type; no code, message or request_id.","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"not_found","code":"not_found","message":"No such resource.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"not_found"}}}},"exampleType":"examples"}},"description":"No such resource for this key's partner and mode. While the Partner API is switched off for the environment, every route answers 404 with only {\"error\": {\"type\": \"not_found\"}}, before authentication.","exampleType":"examples"},"f07ab9fb-91ca-481d-99cb-6eacce76bad3":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"rate_limited","code":"throttled","message":"Request was throttled. Expected available in 12 seconds.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"Too many requests; wait for the number of seconds in Retry-After.","exampleType":"examples"}},"security":{"0dede3a0-6cfd-4821-b4b4-c063e167cf80":{"PartnerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","scopes":[],"schemeName":"PartnerApiKey"}}},"servers":{"a52f5261-d6ca-4f76-8d3e-ad58db271710":{"url":"https://api.hi-doctor.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","scopes":[],"schemeName":"PartnerApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"PartnerApiKey","name":"Authorization"}],"title":"PartnerApiKey"}]},"originalFileLocation":"api-reference/partner/openapi.json"},"subdomain":"hi-doctor-ai","siteName":"Hi Doctor","title":"Get a questionnaire - Hi Doctor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T14:38:28.043Z","originalFileLocation":"api-reference/questionnaires/get-a-questionnaire.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its Key still names it. The response\u0026#x27;s locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version\u0026#x27;s hash with or without a locale and in any supported locale. Needs no scope. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key; no scope is needed. Effects: None. Retries: Safe to retry.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a questionnaire - Hi Doctor\">\u003cmeta data-mint-head property=\"og:description\" content=\"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its Key still names it. The response\u0026#x27;s locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version\u0026#x27;s hash with or without a locale and in any supported locale. Needs no scope. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key; no scope is needed. Effects: None. Retries: Safe to retry.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hi Doctor Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Questionnaires\u0026amp;title=Get+a+questionnaire\u0026amp;description=The+published+questionnaire+for+a+product.+Answer+it+as+a+list+of+entries+keyed+by+question_key+and+send+schema_version+and+schema_hash+back+with+the+consultati\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=c9c18bd9de30c966e58e5965615e020dde9d766df2bde9d75ca69b7c9164b5a8\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get a questionnaire - Hi Doctor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its Key still names it. The response\u0026#x27;s locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version\u0026#x27;s hash with or without a locale and in any supported locale. Needs no scope. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key; no scope is needed. Effects: None. Retries: Safe to retry.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Questionnaires\u0026amp;title=Get+a+questionnaire\u0026amp;description=The+published+questionnaire+for+a+product.+Answer+it+as+a+list+of+entries+keyed+by+question_key+and+send+schema_version+and+schema_hash+back+with+the+consultati\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=c9c18bd9de30c966e58e5965615e020dde9d766df2bde9d75ca69b7c9164b5a8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#157A5C\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#157A5C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/questionnaires/get-a-questionnaire.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://hi-doctor.ai/#organization\",\"name\":\"Hi Doctor\",\"url\":\"https://hi-doctor.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hi-doctor.ai#website\",\"name\":\"Hi Doctor\",\"url\":\"https://docs.hi-doctor.ai\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire#webpage\",\"url\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire\",\"name\":\"Get a questionnaire\",\"description\":\"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope. ### Access, effects and retries Ownership: The API key's own partner and mode (test or live); another partner's or mode's records answer 404. Prerequisites: A partner API key; no scope is needed. Effects: None. Retries: Safe to retry.\",\"dateModified\":\"2026-11-04T14:38:28.043Z\",\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Partner API reference\",\"item\":\"https://docs.hi-doctor.ai/api-reference/connectivity/check-an-api-key\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get a questionnaire\",\"item\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire#apireference\",\"headline\":\"Get a questionnaire\",\"name\":\"Get a questionnaire\",\"description\":\"The published questionnaire for a product. Answer it as a list of entries keyed by question_key and send schema_version and schema_hash back with the consultation. Without locale the labels carry message keys only (each localizable field keeps its Key either way). With locale the labels are written in that language, falling back to English (en) for an unsupported locale and per missing message, and no display field (a label, title or error text) carries a message key: text that no catalogue has is null, and its Key still names it. The response's locale says which one was used and schema_hash is the hash of that localized schema. A submission accepts the current version's hash with or without a locale and in any supported locale. Needs no scope. ### Access, effects and retries Ownership: The API key's own partner and mode (test or live); another partner's or mode's records answer 404. Prerequisites: A partner API key; no scope is needed. Effects: None. Retries: Safe to retry.\",\"url\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/questionnaires/get-a-questionnaire#webpage\"},\"dateModified\":\"2026-11-04T14:38:28.043Z\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hi Doctor\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hi Doctor","nav":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"tab":"Partners","groups":[{"group":"Start","pages":[{"title":"Hi Doctor Partner API overview for developers","sidebarTitle":"Partner API overview","href":"/partners/overview"},{"title":"How the Hi Doctor Partner API works: roles and flow","sidebarTitle":"How it works","href":"/partners/how-it-works"},{"title":"Partner API quickstart: your first test consultation","sidebarTitle":"Quickstart","href":"/partners/quickstart"},{"title":"Partner API authentication: keys, scopes and rotation","sidebarTitle":"Authentication","href":"/partners/authentication"},{"title":"Partner API test mode: synthetic consultations","sidebarTitle":"Test mode","href":"/partners/test-mode"}]},{"group":"Build","pages":[{"title":"Partner API questionnaires: schema and answer format","sidebarTitle":"Questionnaires and schema","href":"/partners/questionnaires-and-schema"},{"title":"Submit a consultation with the Partner API","sidebarTitle":"Submit a consultation","href":"/partners/submit-a-consultation"},{"title":"Partner API photos and files: uploads and limits","sidebarTitle":"Photos and files","href":"/partners/photos"},{"title":"Partner API consultation lifecycle and statuses","sidebarTitle":"Consultation lifecycle","href":"/partners/consultation-lifecycle"},{"title":"Partner API prescriptions: data, status and events","sidebarTitle":"Prescriptions","href":"/partners/prescriptions"},{"title":"Partner API webhooks: events, signing and retries","sidebarTitle":"Webhooks","href":"/partners/webhooks"},{"title":"Partner API information requests from the doctor","sidebarTitle":"Information requests","href":"/partners/information-requests"},{"title":"Partner API errors: envelope and error codes","sidebarTitle":"Errors","href":"/partners/errors"},{"title":"Partner API rate limits: per key and per partner","sidebarTitle":"Rate limits","href":"/partners/rate-limits"},{"title":"Partner API idempotency: retry submissions safely","sidebarTitle":"Idempotency","href":"/partners/idempotency"},{"title":"Partner API pagination with opaque cursors","sidebarTitle":"Pagination","href":"/partners/pagination"},{"title":"Partner API versioning policy and changelog","sidebarTitle":"Versioning and changelog","href":"/partners/versioning-and-changelog"}]},{"group":"Operate","pages":[{"title":"Hi Doctor Business portal for Partner API teams","sidebarTitle":"Business portal","href":"/partners/business-portal"},{"title":"Partner API security, GDPR and patient consent","sidebarTitle":"Security and compliance","href":"/partners/security-and-compliance"},{"title":"Partner API go-live checklist before live mode","sidebarTitle":"Go-live checklist","href":"/partners/go-live-checklist"},{"title":"Partner API FAQ for developers","sidebarTitle":"Developer FAQ","href":"/partners/faq"}]},{"group":"Partner API reference","pages":[{"group":"Connectivity","pages":[{"title":"Check an API key","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/ping/","href":"/api-reference/connectivity/check-an-api-key"}]},{"group":"Products","pages":[{"title":"List products","description":"The products, plans, dosages and prices available to your partner account, one entry per product and country. schema_version and schema_hash identify the questionnaire to submit with. Needs no scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live).\n\n**Prerequisites:** A partner API key; no scope is needed.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/products/","href":"/api-reference/products/list-products"}]},{"group":"Questionnaires","pages":[{"title":"Get a questionnaire","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/questionnaires/{slug}/","href":"/api-reference/questionnaires/get-a-questionnaire"}]},{"group":"Files","pages":[{"title":"Upload a photo or document","description":"Uploads one file as multipart/form-data and returns an upload_id. Use the id as the answer to an upload question or in an information request answer. Pending uploads expire after 24 hours. Pending uploads count towards your storage quota (refused with 422 storage_quota_exceeded when full); an expired upload stops counting at expires_at, can no longer be used (422 upload_unusable) and is deleted, file included, by a periodic cleanup. Attached uploads are kept with the consultation. Requires the consultations:write scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live).\n\n**Prerequisites:** A partner API key with the `consultations:write` scope.\n\n**Effects:** Stores one pending upload that counts towards the storage quota until it is attached or expires.\n\n**Retries:** Not replayed by Idempotency-Key: a retry stores a second upload. Unused uploads expire and are cleaned up.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/files/","href":"/api-reference/files/upload-a-photo-or-document"}]},{"group":"Consultations","pages":[{"title":"List consultations","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/","href":"/api-reference/consultations/list-consultations"},{"title":"Submit a consultation","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/","href":"/api-reference/consultations/submit-a-consultation"},{"title":"Get a consultation by id","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/{consultation_id}/","href":"/api-reference/consultations/get-a-consultation-by-id"},{"title":"Cancel a consultation","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/{consultation_id}/cancel/","href":"/api-reference/consultations/cancel-a-consultation"}]},{"group":"Patients","pages":[{"title":"List patients","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/patients/","href":"/api-reference/patients/list-patients"},{"title":"Get a patient","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/patients/{patient_id}/","href":"/api-reference/patients/get-a-patient"},{"title":"Record a consent withdrawal","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/patients/{patient_id}/consent-withdrawal/","href":"/api-reference/patients/record-a-consent-withdrawal"}]},{"group":"Information requests","pages":[{"title":"List a consultation's information requests","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/{consultation_id}/info-requests/","href":"/api-reference/information-requests/list-a-consultations-information-requests"},{"title":"Answer an information request","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/{consultation_id}/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request"},{"title":"Answer an information request by id","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request-by-id"}]},{"group":"Prescriptions","pages":[{"title":"List prescriptions","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/prescriptions/","href":"/api-reference/prescriptions/list-prescriptions"},{"title":"Get a prescription","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/prescriptions/{prescription_id}/","href":"/api-reference/prescriptions/get-a-prescription"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json patch /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json delete /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Rotate a webhook signing secret","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/{endpoint_id}/rotate-secret/","href":"/api-reference/webhooks/rotate-a-webhook-signing-secret"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/{endpoint_id}/test/","href":"/api-reference/webhooks/send-a-test-event"},{"title":"List deliveries for an endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/{endpoint_id}/deliveries/","href":"/api-reference/webhooks/list-deliveries-for-an-endpoint"},{"title":"Replay a delivery","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-deliveries/{delivery_id}/replay/","href":"/api-reference/webhooks/replay-a-delivery"}]},{"group":"Test mode","pages":[{"title":"Move a test consultation forward","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/test/consultations/{consultation_id}/advance/","href":"/api-reference/test-mode/move-a-test-consultation-forward"}]}]}]},{"tab":"Articles","pages":[{"title":"Articles","href":"/blog/connect-hi-doctor-mcp"}]},{"tab":"Health library","pages":[{"title":"Health library","href":"/library/overview"}]}]},"basePath":"","title":"Get a questionnaire - Hi Doctor","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}