{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}
{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}
{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}
{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}
Orders
Create a consult-first request
Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available).
Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor
network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed:
If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card,
the card is charged automatically and the order is placed.
Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call
POST /consult-requests/{id}/approve once the patient agrees.
If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged.
The consult fee is not refundable.
A proposal never expires. Prices come from the clinic’s patient shop, never from the body. Prescription items only: order anything else with POST /orders.
Who pays the consult (billing_mode):
patient_checkout (default): the response carries a checkout object. Tokenize the patient’s card with Accept.js and send it to
POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later.
card_on_file: the clinic’s card on file pays the consult immediately. The medication is still the patient’s to pay (a saved card, or a new one at approval).
Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.
The patient agreed to have their saved card charged for the medication and shipping, up to the estimate, once the doctor approves. Show the returned authorization_text where they decide. Default false.
Response
A repeat of an earlier call with the same external_request_id.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"VitaRelay","colors":{"primary":"#2266E6","light":"#4DA6FF","dark":"#071B3A"},"logo":{"light":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047","dark":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo-light.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=840ddd8ffac0c531b6eeff031de0f833"},"favicon":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047","api":{"openapi":"openapi.yaml","playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":"https://vitarelay.com/api/public/v1"}},"navbar":{"links":[],"primary":{"type":"button","label":"Book a Call","href":"https://vitarelay.com/contact"}},"footer":{"socials":{"website":"https://vitarelay.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vitarelay","hasAudioNarration":false,"actualSubdomain":"vitarelay","customDomains":["api.vitarelay.com"],"gitSource":{"type":"github","owner":"pet3r96","repo":"vr-main","deployBranch":"main","contentDirectory":"docs/vitarelay-docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af62992fc4ef25324e97a40","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Documentation","count":127},{"language":"default","tag":"API Reference","count":97},{"language":"default","tag":"VitaClinic API","count":77},{"language":"default","tag":"Pharmacy API","count":25},{"language":"default","tag":"Partner API","count":20},{"language":"default","tag":"Getting Started","count":17},{"language":"default","tag":"Patients","count":13},{"language":"default","tag":"Customers API Reference","count":10},{"language":"default","tag":"Inventory API Reference","count":10},{"language":"default","tag":"Orders","count":8}]},"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":"custom-rbac-roles","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":"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":"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":"editor-metadata","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},{"name":"live-agents","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/orders/create-a-consult-first-request","slug":"/api-reference/orders/create-a-consult-first-request","pageMetadata":{"title":"Create a consult-first request","description":"**Vita Clinic only.** Requires the `orders:write` scope, and the clinic must have consult-first checkout switched on (otherwise `409 consult_first_not_available`).\n\n**Consult first, medication after.** The patient pays only the doctor consult now and is shown an *estimate* for the medication and shipping. The doctor\nnetwork then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed:\n\n- If it is the same medication (any dose), the total is within the estimate, the request has `authorize_auto_charge: true`, and the patient has a saved card,\n the card is charged automatically and the order is placed.\n- Otherwise nothing is charged: the request moves to `awaiting_patient_checkout` with a `proposal`, and you call\n `POST /consult-requests/{id}/approve` once the patient agrees.\n- If the doctor declines, the request ends as `declined`, no medication order is ever created, and nothing more is charged.\n **The consult fee is not refundable.**\n\nA proposal never expires. Prices come from the clinic's patient shop, never from the body. Prescription items only: order anything else with `POST /orders`.\n\n**Who pays the consult** (`billing_mode`):\n\n- `patient_checkout` (default): the response carries a `checkout` object. Tokenize the patient's card with Accept.js and send it to\n `POST /orders/{consult.order_id}/pay`. The card is always saved to the patient, because the medication is charged to it later.\n- `card_on_file`: the clinic's card on file pays the consult immediately. The medication is still the patient's to pay (a saved card, or a new one at approval).\n\nStatus changes are delivered as `consult_request.updated` webhooks. Send `external_request_id` to make the call idempotent: a repeat returns the same request.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /consult-requests","href":"/api-reference/orders/create-a-consult-first-request","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n em: \"em\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Vita Clinic only.\"\n }), \" Requires the \", _jsx(_components.code, {\n children: \"orders:write\"\n }), \" scope, and the clinic must have consult-first checkout switched on (otherwise \", _jsx(_components.code, {\n children: \"409 consult_first_not_available\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Consult first, medication after.\"\n }), \" The patient pays only the doctor consult now and is shown an \", _jsx(_components.em, {\n children: \"estimate\"\n }), \" for the medication and shipping. The doctor\\nnetwork then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"If it is the same medication (any dose), the total is within the estimate, the request has \", _jsx(_components.code, {\n children: \"authorize_auto_charge: true\"\n }), \", and the patient has a saved card,\\nthe card is charged automatically and the order is placed.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Otherwise nothing is charged: the request moves to \", _jsx(_components.code, {\n children: \"awaiting_patient_checkout\"\n }), \" with a \", _jsx(_components.code, {\n children: \"proposal\"\n }), \", and you call\\n\", _jsx(_components.code, {\n children: \"POST /consult-requests/{id}/approve\"\n }), \" once the patient agrees.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"If the doctor declines, the request ends as \", _jsx(_components.code, {\n children: \"declined\"\n }), \", no medication order is ever created, and nothing more is charged.\\n\", _jsx(_components.strong, {\n children: \"The consult fee is not refundable.\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A proposal never expires. Prices come from the clinic’s patient shop, never from the body. Prescription items only: order anything else with \", _jsx(_components.code, {\n children: \"POST /orders\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Who pays the consult\"\n }), \" (\", _jsx(_components.code, {\n children: \"billing_mode\"\n }), \"):\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"patient_checkout\"\n }), \" (default): the response carries a \", _jsx(_components.code, {\n children: \"checkout\"\n }), \" object. Tokenize the patient’s card with Accept.js and send it to\\n\", _jsx(_components.code, {\n children: \"POST /orders/{consult.order_id}/pay\"\n }), \". The card is always saved to the patient, because the medication is charged to it later.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"card_on_file\"\n }), \": the clinic’s card on file pays the consult immediately. The medication is still the patient’s to pay (a saved card, or a new one at approval).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Status changes are delivered as \", _jsx(_components.code, {\n children: \"consult_request.updated\"\n }), \" webhooks. Send \", _jsx(_components.code, {\n children: \"external_request_id\"\n }), \" to make the call idempotent: a repeat returns the same request.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"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":"Create a consult-first request","description":"**Vita Clinic only.** Requires the `orders:write` scope, and the clinic must have consult-first checkout switched on (otherwise `409 consult_first_not_available`).\n\n**Consult first, medication after.** The patient pays only the doctor consult now and is shown an *estimate* for the medication and shipping. The doctor\nnetwork then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed:\n\n- If it is the same medication (any dose), the total is within the estimate, the request has `authorize_auto_charge: true`, and the patient has a saved card,\n the card is charged automatically and the order is placed.\n- Otherwise nothing is charged: the request moves to `awaiting_patient_checkout` with a `proposal`, and you call\n `POST /consult-requests/{id}/approve` once the patient agrees.\n- If the doctor declines, the request ends as `declined`, no medication order is ever created, and nothing more is charged.\n **The consult fee is not refundable.**\n\nA proposal never expires. Prices come from the clinic's patient shop, never from the body. Prescription items only: order anything else with `POST /orders`.\n\n**Who pays the consult** (`billing_mode`):\n\n- `patient_checkout` (default): the response carries a `checkout` object. Tokenize the patient's card with Accept.js and send it to\n `POST /orders/{consult.order_id}/pay`. The card is always saved to the patient, because the medication is charged to it later.\n- `card_on_file`: the clinic's card on file pays the consult immediately. The medication is still the patient's to pay (a saved card, or a new one at approval).\n\nStatus changes are delivered as `consult_request.updated` webhooks. Send `external_request_id` to make the call idempotent: a repeat returns the same request.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /consult-requests","href":"/api-reference/orders/create-a-consult-first-request","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Orders"],"summary":"Create a consult-first request","operationId":"createConsultRequest","description":"**Vita Clinic only.** Requires the `orders:write` scope, and the clinic must have consult-first checkout switched on (otherwise `409 consult_first_not_available`).\n\n**Consult first, medication after.** The patient pays only the doctor consult now and is shown an *estimate* for the medication and shipping. The doctor\nnetwork then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed:\n\n- If it is the same medication (any dose), the total is within the estimate, the request has `authorize_auto_charge: true`, and the patient has a saved card,\n the card is charged automatically and the order is placed.\n- Otherwise nothing is charged: the request moves to `awaiting_patient_checkout` with a `proposal`, and you call\n `POST /consult-requests/{id}/approve` once the patient agrees.\n- If the doctor declines, the request ends as `declined`, no medication order is ever created, and nothing more is charged.\n **The consult fee is not refundable.**\n\nA proposal never expires. Prices come from the clinic's patient shop, never from the body. Prescription items only: order anything else with `POST /orders`.\n\n**Who pays the consult** (`billing_mode`):\n\n- `patient_checkout` (default): the response carries a `checkout` object. Tokenize the patient's card with Accept.js and send it to\n `POST /orders/{consult.order_id}/pay`. The card is always saved to the patient, because the medication is charged to it later.\n- `card_on_file`: the clinic's card on file pays the consult immediately. The medication is still the patient's to pay (a saved card, or a new one at approval).\n\nStatus changes are delivered as `consult_request.updated` webhooks. Send `external_request_id` to make the call idempotent: a repeat returns the same request.\n","requestBody":"a8664bc9-6bff-4d89-bb56-a445ef97159b","responses":{"200":"d8f93fdf-0283-4821-a951-d4d795770b1a","201":"5e231219-8136-4635-be09-2cb58e3e7060","400":"52f9a900-1408-45fe-890f-217f48fa9dc1","401":"2f141250-b7e1-4f8c-bd1f-bea338e26111","402":"b2205e4d-7e6b-43f2-9ce8-1960ea4fe808","403":"9ccdaeb6-1fcd-4f45-abff-f365093b19d7","404":"082c602d-a211-4296-bf03-96049ddc6feb","409":"b147360c-4444-4202-80a1-de0fbb4ac50c","422":"71d4ead5-548b-4b2d-9370-2846fe19007f"},"method":"post","type":"path","servers":["99e3b59c-dc63-47bf-bffb-070f0be07326"],"security":["dcc604bc-462f-440f-88d7-39631ae87d5c"],"path":"/consult-requests","baseUrlOptions":["https://vitarelay.com/api/public/v1"],"title":"Create a consult-first request","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items","shipping"],"properties":{"items":{"type":"array","minItems":1,"items":{"type":"object","required":["product_id","quantity"],"properties":{"product_id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"\\items.items.[INDEX].product_id","typeLabel":"string\u003cuuid>"},"quantity":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].quantity","typeLabel":"integer"}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"shipping":{"type":"object","required":["line1","city","state","postal_code"],"properties":{"line1":{"type":"string","isRequired":true,"uniqueKey":"shipping.line1","typeLabel":"string"},"city":{"type":"string","isRequired":true,"uniqueKey":"shipping.city","typeLabel":"string"},"state":{"type":"string","isRequired":true,"uniqueKey":"shipping.state","typeLabel":"string"},"postal_code":{"type":"string","isRequired":true,"uniqueKey":"shipping.postal_code","typeLabel":"string"},"line2":{"type":"string","uniqueKey":"shipping.line2","typeLabel":"string"},"country":{"type":"string","description":"Two-letter country code (default `US`).","uniqueKey":"shipping.country","typeLabel":"string"}},"isRequired":true,"uniqueKey":"shipping","typeLabel":"object"},"patient_id":{"type":"string","format":"uuid","uniqueKey":"patient_id","typeLabel":"string\u003cuuid>"},"external_patient_id":{"type":"string","description":"The id you used when creating the patient. One of `patient_id` or `external_patient_id` is required.","uniqueKey":"external_patient_id","typeLabel":"string"},"external_request_id":{"type":"string","maxLength":128,"uniqueKey":"external_request_id","typeLabel":"string"},"shipping_method":{"type":"string","description":"The delivery speed the patient picked (`ground` or `overnight`).","uniqueKey":"shipping_method","typeLabel":"string"},"billing_mode":{"type":"string","enum":["patient_checkout","card_on_file"],"uniqueKey":"billing_mode","typeLabel":"enum\u003cstring>"},"authorize_auto_charge":{"type":"boolean","description":"The patient agreed to have their saved card charged for the medication and shipping, up to the estimate, once the doctor approves. Show the returned `authorization_text` where they decide. Default `false`.","uniqueKey":"authorize_auto_charge","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"items":[{"product_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","quantity":2}],"shipping":{"line1":"\u003cstring>","city":"\u003cstring>","state":"\u003cstring>","postal_code":"\u003cstring>","line2":"\u003cstring>","country":"\u003cstring>"},"patient_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","external_patient_id":"\u003cstring>","external_request_id":"\u003cstring>","shipping_method":"\u003cstring>","authorize_auto_charge":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d8f93fdf-0283-4821-a951-d4d795770b1a":{"description":"A repeat of an earlier call with the same `external_request_id`.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"5e231219-8136-4635-be09-2cb58e3e7060":{"description":"The request was created.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"external_request_id":{"oneOf":[{"type":"string","uniqueKey":"data.external_request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.external_request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.external_request_id","typeLabel":"string | null"},"patient_id":{"type":"string","format":"uuid","uniqueKey":"data.patient_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["awaiting_consult_payment","awaiting_doctor","declined","proposal_ready","charging","awaiting_patient_checkout","completed","charge_failed","cancelled"],"description":"`awaiting_consult_payment` the consult is not paid yet; `awaiting_doctor` the doctor network is reviewing; `declined` no prescription (final);\n`awaiting_patient_checkout` the doctor approved and the patient must approve the medication order; `charging` the card is being charged;\n`charge_failed` the card failed, the patient can try again; `completed` the medication order was placed and paid (final); `cancelled` (final).\n","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"billing_mode":{"type":"string","enum":["patient","clinic_card"],"uniqueKey":"data.billing_mode","typeLabel":"enum\u003cstring>"},"estimate":{"type":"object","properties":{"medication_cents":{"type":"integer","uniqueKey":"data.estimate.medication_cents","typeLabel":"integer"},"shipping_cents":{"type":"integer","uniqueKey":"data.estimate.shipping_cents","typeLabel":"integer"},"total_cents":{"type":"integer","uniqueKey":"data.estimate.total_cents","typeLabel":"integer"}},"uniqueKey":"data.estimate","typeLabel":"object"},"auto_charge_authorized":{"type":"boolean","uniqueKey":"data.auto_charge_authorized","typeLabel":"boolean"},"consult_order_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.consult_order_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.consult_order_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.consult_order_id","typeLabel":"string\u003cuuid> | null"},"medication_order_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.medication_order_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.medication_order_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.medication_order_id","typeLabel":"string\u003cuuid> | null"},"proposal":{"oneOf":[{"type":"object","description":"What the doctor's script produced, once there is one.","properties":{"lines":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string","format":"uuid","uniqueKey":"data.proposal.oneOf.0.lines.items.[INDEX].product_id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"data.proposal.oneOf.0.lines.items.[INDEX].name","typeLabel":"string"},"quantity":{"type":"integer","uniqueKey":"data.proposal.oneOf.0.lines.items.[INDEX].quantity","typeLabel":"integer"},"unit_price_cents":{"type":"integer","uniqueKey":"data.proposal.oneOf.0.lines.items.[INDEX].unit_price_cents","typeLabel":"integer"}},"uniqueKey":"data.proposal.oneOf.0.lines.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.proposal.oneOf.0.lines","typeLabel":"object[]"},"shipping_cents":{"type":"integer","uniqueKey":"data.proposal.oneOf.0.shipping_cents","typeLabel":"integer"},"total_cents":{"type":"integer","uniqueKey":"data.proposal.oneOf.0.total_cents","typeLabel":"integer"},"needs_approval_reasons":{"type":"array","items":{"type":"string","enum":["not_authorized","different_medication","over_estimate","no_saved_card","nothing_prescribed"],"uniqueKey":"data.proposal.oneOf.0.needs_approval_reasons.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.proposal.oneOf.0.needs_approval_reasons","typeLabel":"enum\u003cstring>[]"}},"uniqueKey":"data.proposal.oneOf.0","typeLabel":"object"},{"type":"null","description":"What the doctor's script produced, once there is one.","properties":{"lines":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"quantity":{"type":"integer"},"unit_price_cents":{"type":"integer"}}}},"shipping_cents":{"type":"integer"},"total_cents":{"type":"integer"},"needs_approval_reasons":{"type":"array","items":{"type":"string","enum":["not_authorized","different_medication","over_estimate","no_saved_card","nothing_prescribed"]}}},"uniqueKey":"data.proposal.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.proposal","typeLabel":"object | null"},"failure_reason":{"oneOf":[{"type":"string","uniqueKey":"data.failure_reason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.failure_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.failure_reason","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"consult":{"type":"object","properties":{"order_id":{"type":"string","format":"uuid","uniqueKey":"data.consult.order_id","typeLabel":"string\u003cuuid>"},"amount_cents":{"type":"integer","uniqueKey":"data.consult.amount_cents","typeLabel":"integer"},"paid":{"type":"boolean","uniqueKey":"data.consult.paid","typeLabel":"boolean"}},"uniqueKey":"data.consult","typeLabel":"object"},"authorization_text":{"type":"string","uniqueKey":"data.authorization_text","typeLabel":"string"},"checkout":{"type":"object","description":"Present for `patient_checkout`. The same Accept.js object as `POST /orders`.","uniqueKey":"data.checkout","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","external_request_id":"\u003cstring>","patient_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"awaiting_consult_payment","billing_mode":"patient","estimate":{"medication_cents":123,"shipping_cents":123,"total_cents":123},"auto_charge_authorized":true,"consult_order_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","medication_order_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","proposal":{"lines":[{"product_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","quantity":123,"unit_price_cents":123}],"shipping_cents":123,"total_cents":123,"needs_approval_reasons":["not_authorized"]},"failure_reason":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","consult":{"order_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","amount_cents":123,"paid":true},"authorization_text":"\u003cstring>","checkout":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"52f9a900-1408-45fe-890f-217f48fa9dc1":{"description":"Malformed request or invalid path parameter (`invalid_body`, `invalid_id`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `invalid_body`, `validation_failed`, `unauthorized`,\n`insufficient_scope`, `not_vita_clinic`, `patient_not_found`,\n`product_not_found`, `product_not_allowed`, `duplicate_request`,\n`rate_limited`, `card_required`, `payment_declined`,\n`internal_error`, `not_found`.\n","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2f141250-b7e1-4f8c-bd1f-bea338e26111":{"description":"Missing, invalid or revoked API key (`unauthorized`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `invalid_body`, `validation_failed`, `unauthorized`,\n`insufficient_scope`, `not_vita_clinic`, `patient_not_found`,\n`product_not_found`, `product_not_allowed`, `duplicate_request`,\n`rate_limited`, `card_required`, `payment_declined`,\n`internal_error`, `not_found`.\n","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b2205e4d-7e6b-43f2-9ce8-1960ea4fe808":{"description":"The clinic's card on file is missing or was declined (`card_on_file` only).","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"9ccdaeb6-1fcd-4f45-abff-f365093b19d7":{"description":"The key lacks the required scope (`insufficient_scope`) or its\norganization is not an active Vita Clinic (`not_vita_clinic`).\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `invalid_body`, `validation_failed`, `unauthorized`,\n`insufficient_scope`, `not_vita_clinic`, `patient_not_found`,\n`product_not_found`, `product_not_allowed`, `duplicate_request`,\n`rate_limited`, `card_required`, `payment_declined`,\n`internal_error`, `not_found`.\n","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}}}},"exampleType":"generated"}},"exampleType":"generated"},"082c602d-a211-4296-bf03-96049ddc6feb":{"description":"Resource not found or not visible to your organization (`not_found`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `invalid_body`, `validation_failed`, `unauthorized`,\n`insufficient_scope`, `not_vita_clinic`, `patient_not_found`,\n`product_not_found`, `product_not_allowed`, `duplicate_request`,\n`rate_limited`, `card_required`, `payment_declined`,\n`internal_error`, `not_found`.\n","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"One or more fields are invalid"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b147360c-4444-4202-80a1-de0fbb4ac50c":{"description":"Consult-first checkout is not turned on for this clinic.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"71d4ead5-548b-4b2d-9370-2846fe19007f":{"description":"Validation failed, the patient's intake is not complete, a product is not priced, or the request cannot be placed.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"dcc604bc-462f-440f-88d7-39631ae87d5c":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key issued by VitaRelay. Send as `Authorization: Bearer vr_live_…`\n(production) or `Authorization: Bearer vr_test_…` (sandbox).\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"99e3b59c-dc63-47bf-bffb-070f0be07326":{"url":"https://vitarelay.com/api/public/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key issued by VitaRelay. Send as `Authorization: Bearer vr_live_…`\n(production) or `Authorization: Bearer vr_test_…` (sandbox).\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key issued by VitaRelay. Send as `Authorization: Bearer vr_live_…`\n(production) or `Authorization: Bearer vr_test_…` (sandbox).\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"vitarelay","siteName":"VitaRelay","title":"Create a consult-first request - VitaRelay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T21:03:23.046Z","originalFileLocation":"api-reference/orders/create-a-consult-first-request.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=\"Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available). Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed: - If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card, the card is charged automatically and the order is placed. - Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call POST /consult-requests/{id}/approve once the patient agrees. - If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged. The consult fee is not refundable. A proposal never expires. Prices come from the clinic\u0026#x27;s patient shop, never from the body. Prescription items only: order anything else with POST /orders. Who pays the consult (billing_mode): - patient_checkout (default): the response carries a checkout object. Tokenize the patient\u0026#x27;s card with Accept.js and send it to POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later. - card_on_file: the clinic\u0026#x27;s card on file pays the consult immediately. The medication is still the patient\u0026#x27;s to pay (a saved card, or a new one at approval). Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.\">\u003cmeta data-mint-head name=\"application-name\" content=\"VitaRelay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a consult-first request - VitaRelay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available). Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed: - If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card, the card is charged automatically and the order is placed. - Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call POST /consult-requests/{id}/approve once the patient agrees. - If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged. The consult fee is not refundable. A proposal never expires. Prices come from the clinic\u0026#x27;s patient shop, never from the body. Prescription items only: order anything else with POST /orders. Who pays the consult (billing_mode): - patient_checkout (default): the response carries a checkout object. Tokenize the patient\u0026#x27;s card with Accept.js and send it to POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later. - card_on_file: the clinic\u0026#x27;s card on file pays the consult immediately. The medication is still the patient\u0026#x27;s to pay (a saved card, or a new one at approval). Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VitaRelay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vitarelay.mintlify.site/_mintlify/api/og/v2?division=Orders\u0026amp;title=Create+a+consult-first+request\u0026amp;description=**Vita+Clinic+only.**+Requires+the+%60orders%3Awrite%60+scope%2C+and+the+clinic+must+have+consult-first+checkout+switched+on+%28otherwise+%60409+consult_first_not_available\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=60cc8c95910eb4d55e81fd5646ba80d801994c40969b89a63922f3941ea2e524\">\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=\"Create a consult-first request - VitaRelay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available). Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed: - If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card, the card is charged automatically and the order is placed. - Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call POST /consult-requests/{id}/approve once the patient agrees. - If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged. The consult fee is not refundable. A proposal never expires. Prices come from the clinic\u0026#x27;s patient shop, never from the body. Prescription items only: order anything else with POST /orders. Who pays the consult (billing_mode): - patient_checkout (default): the response carries a checkout object. Tokenize the patient\u0026#x27;s card with Accept.js and send it to POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later. - card_on_file: the clinic\u0026#x27;s card on file pays the consult immediately. The medication is still the patient\u0026#x27;s to pay (a saved card, or a new one at approval). Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vitarelay.mintlify.site/_mintlify/api/og/v2?division=Orders\u0026amp;title=Create+a+consult-first+request\u0026amp;description=**Vita+Clinic+only.**+Requires+the+%60orders%3Awrite%60+scope%2C+and+the+clinic+must+have+consult-first+checkout+switched+on+%28otherwise+%60409+consult_first_not_available\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=60cc8c95910eb4d55e81fd5646ba80d801994c40969b89a63922f3941ea2e524\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/vitarelay/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"VitaRelay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2266E6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/orders/create-a-consult-first-request.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://api.vitarelay.com/#organization\",\"name\":\"VitaRelay\",\"url\":\"https://api.vitarelay.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047\"}},{\"@type\":\"WebSite\",\"@id\":\"https://api.vitarelay.com#website\",\"name\":\"VitaRelay\",\"url\":\"https://api.vitarelay.com\",\"publisher\":{\"@id\":\"https://api.vitarelay.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request#webpage\",\"url\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request\",\"name\":\"Create a consult-first request\",\"description\":\"Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available). Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed: - If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card, the card is charged automatically and the order is placed. - Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call POST /consult-requests/{id}/approve once the patient agrees. - If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged. The consult fee is not refundable. A proposal never expires. Prices come from the clinic's patient shop, never from the body. Prescription items only: order anything else with POST /orders. Who pays the consult (billing_mode): - patient_checkout (default): the response carries a checkout object. Tokenize the patient's card with Accept.js and send it to POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later. - card_on_file: the clinic's card on file pays the consult immediately. The medication is still the patient's to pay (a saved card, or a new one at approval). Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.\",\"dateModified\":\"2026-11-12T21:03:23.046Z\",\"isPartOf\":{\"@id\":\"https://api.vitarelay.com#website\"},\"breadcrumb\":{\"@id\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://api.vitarelay.com/api-reference/patients/list-patients\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Orders\",\"item\":\"https://api.vitarelay.com/api-reference/orders/list-orders\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a consult-first request\",\"item\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request#apireference\",\"headline\":\"Create a consult-first request\",\"name\":\"Create a consult-first request\",\"description\":\"Vita Clinic only. Requires the orders:write scope, and the clinic must have consult-first checkout switched on (otherwise 409 consult_first_not_available). Consult first, medication after. The patient pays only the doctor consult now and is shown an estimate for the medication and shipping. The doctor network then reviews the request. When the doctor approves, one medication order is built from the script the doctor actually signed: - If it is the same medication (any dose), the total is within the estimate, the request has authorize_auto_charge: true, and the patient has a saved card, the card is charged automatically and the order is placed. - Otherwise nothing is charged: the request moves to awaiting_patient_checkout with a proposal, and you call POST /consult-requests/{id}/approve once the patient agrees. - If the doctor declines, the request ends as declined, no medication order is ever created, and nothing more is charged. The consult fee is not refundable. A proposal never expires. Prices come from the clinic's patient shop, never from the body. Prescription items only: order anything else with POST /orders. Who pays the consult (billing_mode): - patient_checkout (default): the response carries a checkout object. Tokenize the patient's card with Accept.js and send it to POST /orders/{consult.order_id}/pay. The card is always saved to the patient, because the medication is charged to it later. - card_on_file: the clinic's card on file pays the consult immediately. The medication is still the patient's to pay (a saved card, or a new one at approval). Status changes are delivered as consult_request.updated webhooks. Send external_request_id to make the call idempotent: a repeat returns the same request.\",\"url\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request\",\"mainEntityOfPage\":{\"@id\":\"https://api.vitarelay.com/api-reference/orders/create-a-consult-first-request#webpage\"},\"dateModified\":\"2026-11-12T21:03:23.046Z\",\"publisher\":{\"@id\":\"https://api.vitarelay.com/#organization\"},\"isPartOf\":{\"@id\":\"https://api.vitarelay.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"VitaRelay\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"VitaRelay\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/orders/create-a-consult-first-request.md","siteName":"VitaRelay","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","tabs":[{"tab":"VitaClinic API","icon":"hospital","groups":[{"group":"Getting Started","pages":[{"title":"VitaClinic API Overview","href":"/getting-started/overview"},{"title":"Quickstart","href":"/getting-started/quickstart"},{"title":"Authentication","href":"/getting-started/authentication"},{"title":"API Keys","href":"/getting-started/api-keys"},{"title":"Environments","href":"/getting-started/environments"},{"title":"Sandbox","href":"/getting-started/sandbox"},{"title":"REST API (v1)","href":"/getting-started/rest-api"},{"title":"Packages, pricing and checkout","href":"/getting-started/packages-and-pricing"},{"title":"Intakes and prescriber review","href":"/getting-started/intakes-and-prescriptions"},{"title":"Intake answers reference","href":"/getting-started/intake-responses"},{"title":"Intake forms reference","href":"/getting-started/intake-forms-reference"},{"title":"Emails your patients receive","href":"/getting-started/patient-emails"},{"title":"Integration checklist","href":"/getting-started/integration-checklist"},{"title":"Errors","href":"/getting-started/errors"},{"title":"Rate Limits","href":"/getting-started/rate-limits"}]},{"group":"API Reference","pages":[{"group":"Patients","pages":[{"title":"List patients","deprecated":null,"version":null,"openapi":"/openapi.yaml get /patients","href":"/api-reference/patients/list-patients"},{"title":"Create a patient","deprecated":null,"version":null,"openapi":"/openapi.yaml post /patients","href":"/api-reference/patients/create-a-patient"},{"title":"Retrieve a patient","deprecated":null,"version":null,"openapi":"/openapi.yaml get /patients/{id}","href":"/api-reference/patients/retrieve-a-patient"},{"title":"Get the Accept.js keys (no order needed)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /payment-methods/config","href":"/api-reference/patients/get-the-acceptjs-keys-no-order-needed"},{"title":"List a patient's saved cards","deprecated":null,"version":null,"openapi":"/openapi.yaml get /patients/{id}/payment-methods","href":"/api-reference/patients/list-a-patients-saved-cards"},{"title":"Save a patient's card (no charge)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /patients/{id}/payment-methods","href":"/api-reference/patients/save-a-patients-card-no-charge"},{"title":"Push to IDN prescriber","deprecated":null,"version":null,"openapi":"/openapi.yaml post /rx/patients/{patientId}/push","href":"/api-reference/patients/push-to-idn-prescriber"},{"title":"Auto-refer from intake","deprecated":null,"version":null,"openapi":"/openapi.yaml post /rx/patients/{patientId}/auto-push","href":"/api-reference/patients/auto-refer-from-intake"},{"title":"List Rx requests","deprecated":null,"version":null,"openapi":"/openapi.yaml get /rx/patients/{patientId}/requests","href":"/api-reference/patients/list-rx-requests"},{"title":"Cancel a request","deprecated":null,"version":null,"openapi":"/openapi.yaml post /rx/requests/{requestId}/cancel","href":"/api-reference/patients/cancel-a-request"},{"title":"IDN membership status","deprecated":null,"version":null,"openapi":"/openapi.yaml get /rx/idn-status","href":"/api-reference/patients/idn-membership-status"},{"title":"Own prescribers and doctor-network access","deprecated":null,"version":null,"openapi":"/openapi.yaml get /prescribers","href":"/api-reference/patients/own-prescribers-and-doctor-network-access"},{"title":"Who would prescribe for a patient or state","deprecated":null,"version":null,"openapi":"/openapi.yaml get /prescriber-route","href":"/api-reference/patients/who-would-prescribe-for-a-patient-or-state"}]},{"group":"Intakes","pages":[{"title":"Submit intake answers (you collect them)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /intakes","href":"/api-reference/intakes/submit-intake-answers-you-collect-them"},{"title":"Get the intake form for products","deprecated":null,"version":null,"openapi":"/openapi.yaml get /intake-forms","href":"/api-reference/intakes/get-the-intake-form-for-products"},{"title":"Evaluate an intake form","deprecated":null,"version":null,"openapi":"/openapi.yaml post /intake-forms/evaluate","href":"/api-reference/intakes/evaluate-an-intake-form"},{"title":"Send a hosted intake link","deprecated":null,"version":null,"openapi":"/openapi.yaml post /patients/{patientId}/intake/send-link","href":"/api-reference/intakes/send-a-hosted-intake-link"},{"title":"Get intake status","deprecated":null,"version":null,"openapi":"/openapi.yaml get /patients/{patientId}/intake/status","href":"/api-reference/intakes/get-intake-status"},{"title":"Send a referral intake link","deprecated":null,"version":null,"openapi":"/openapi.yaml post /rx/patients/{patientId}/intake","href":"/api-reference/intakes/send-a-referral-intake-link"},{"title":"Submit referral intake answers (you collect them)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /rx/patients/{patientId}/intake/submit","href":"/api-reference/intakes/submit-referral-intake-answers-you-collect-them"}]},{"group":"Orders","pages":[{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders","href":"/api-reference/orders/list-orders"},{"title":"Create an order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /orders","href":"/api-reference/orders/create-an-order"},{"title":"Retrieve an order","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders/{id}","href":"/api-reference/orders/retrieve-an-order"},{"title":"Pay an order (embedded Accept.js)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /orders/{id}/pay","href":"/api-reference/orders/pay-an-order-embedded-acceptjs"},{"title":"List consult-first requests","description":"**Vita Clinic only.** Requires the `orders:read` scope. Newest first; `next_cursor` is the `created_at` to pass as `cursor`.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /consult-requests","href":"/api-reference/orders/list-consult-first-requests"},{"title":"Create a consult-first request","deprecated":null,"version":null,"openapi":"/openapi.yaml post /consult-requests","href":"/api-reference/orders/create-a-consult-first-request"},{"title":"Get a consult-first request","description":"**Vita Clinic only.** Requires the `orders:read` scope. Shows the status, the estimate, the doctor's `proposal` once there is one, and the consult and medication order ids.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /consult-requests/{id}","href":"/api-reference/orders/get-a-consult-first-request"},{"title":"Approve the medication order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /consult-requests/{id}/approve","href":"/api-reference/orders/approve-the-medication-order"}]},{"group":"Prescriptions","pages":[{"title":"List prescriptions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /prescriptions","href":"/api-reference/prescriptions/list-prescriptions"},{"title":"Retrieve a prescription","deprecated":null,"version":null,"openapi":"/openapi.yaml get /prescriptions/{id}","href":"/api-reference/prescriptions/retrieve-a-prescription"}]},{"group":"Products","pages":[{"title":"List your pharmacy inventory","deprecated":null,"version":null,"openapi":"/openapi.yaml get /products","href":"/api-reference/products/list-your-pharmacy-inventory"},{"title":"List RUO catalog products","deprecated":null,"version":null,"openapi":"/openapi.yaml get /catalog","href":"/api-reference/products/list-ruo-catalog-products"},{"title":"Get an RUO catalog product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /catalog/{id}","href":"/api-reference/products/get-an-ruo-catalog-product"},{"title":"List lab kits","deprecated":null,"version":null,"openapi":"/openapi.yaml get /labs/catalog","href":"/api-reference/products/list-lab-kits"},{"title":"Get a lab kit","deprecated":null,"version":null,"openapi":"/openapi.yaml get /labs/catalog/{id}","href":"/api-reference/products/get-a-lab-kit"},{"title":"List 503A products","deprecated":null,"version":null,"openapi":"/openapi.yaml get /rx/catalog","href":"/api-reference/products/list-503a-products"},{"title":"Get a 503A product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /rx/catalog/{id}","href":"/api-reference/products/get-a-503a-product"}]},{"group":"Storefront","pages":[{"title":"Retrieve the patient storefront","deprecated":null,"version":null,"openapi":"/openapi.yaml get /shop","href":"/api-reference/storefront/retrieve-the-patient-storefront"},{"title":"Update storefront settings","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /shop","href":"/api-reference/storefront/update-storefront-settings"},{"title":"Add or update a product listing","deprecated":null,"version":null,"openapi":"/openapi.yaml put /shop/products","href":"/api-reference/storefront/add-or-update-a-product-listing"},{"title":"Remove a product listing","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /shop/products/{listingId}","href":"/api-reference/storefront/remove-a-product-listing"},{"title":"Create or update a bundle","deprecated":null,"version":null,"openapi":"/openapi.yaml put /shop/bundles","href":"/api-reference/storefront/create-or-update-a-bundle"},{"title":"Delete a bundle","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /shop/bundles/{bundleId}","href":"/api-reference/storefront/delete-a-bundle"},{"title":"Create or update a clinic-owned item","deprecated":null,"version":null,"openapi":"/openapi.yaml put /shop/custom-products","href":"/api-reference/storefront/create-or-update-a-clinic-owned-item"},{"title":"Remove a clinic-owned item","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /shop/custom-products/{customProductId}","href":"/api-reference/storefront/remove-a-clinic-owned-item"}]},{"group":"Subscriptions","pages":[{"title":"List patient subscriptions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /subscriptions","href":"/api-reference/subscriptions/list-patient-subscriptions"},{"title":"Create a patient subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /subscriptions","href":"/api-reference/subscriptions/create-a-patient-subscription"},{"title":"Retrieve a subscription and recent cycles","deprecated":null,"version":null,"openapi":"/openapi.yaml get /subscriptions/{id}","href":"/api-reference/subscriptions/retrieve-a-subscription-and-recent-cycles"},{"title":"Update cadence, quantity, card, or shipping address","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /subscriptions/{id}","href":"/api-reference/subscriptions/update-cadence-quantity-card-or-shipping-address"},{"title":"Pause a subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /subscriptions/{id}/pause","href":"/api-reference/subscriptions/pause-a-subscription"},{"title":"Resume a subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /subscriptions/{id}/resume","href":"/api-reference/subscriptions/resume-a-subscription"},{"title":"Cancel a subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /subscriptions/{id}/cancel","href":"/api-reference/subscriptions/cancel-a-subscription"},{"title":"Skip the next cycle","deprecated":null,"version":null,"openapi":"/openapi.yaml post /subscriptions/{id}/skip-next","href":"/api-reference/subscriptions/skip-the-next-cycle"}]}]},{"group":"Webhooks","pages":[{"title":"Webhooks Overview","href":"/webhooks/overview"},{"title":"Event Types","href":"/webhooks/events"},{"title":"Receiving Deliveries","href":"/webhooks/inbound"},{"title":"Webhook Security","href":"/webhooks/security"},{"title":"Retries \u0026 Delivery","href":"/webhooks/retries"}]},{"group":"Guides","pages":[{"title":"EHR Integration Guide","href":"/guides/ehr-integration"},{"title":"Order Flow","href":"/guides/order-flow"},{"title":"Display-only catalog access","href":"/guides/catalog-display"},{"title":"Patient Shop Subscriptions","href":"/guides/subscriptions"},{"title":"Referring patients to the IDN","href":"/rx/overview"}]}]},{"tab":"Pharmacy API","icon":"prescription-bottle-medical","pages":[{"title":"Pharmacy API","href":"/pharmacy-api/overview"}]},{"tab":"Practice API","icon":"hospital-user","pages":[{"title":"Practice API","href":"/practice-api/overview"}]},{"tab":"Partner API","icon":"user-plus","pages":[{"title":"Partner API","href":"/partner-api/overview"}]}]},{"anchor":"Status","icon":"circle-check","hidden":true,"href":"https://status.vitarelay.com"},{"anchor":"Support","icon":"envelope","href":"mailto:info@vitarelay.com"}]},"basePath":"","title":"Create a consult-first request - VitaRelay","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}