{
"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"
}
}
{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}
Storefront
Retrieve the patient storefront
Returns your clinic’s storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.
The clinic's Routable payout-onboarding state. A storefront cannot be enabled until payout_eligible is true.
Show child attributes
{"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/storefront/retrieve-the-patient-storefront","slug":"/api-reference/storefront/retrieve-the-patient-storefront","pageMetadata":{"title":"Retrieve the patient storefront","description":"Returns your clinic's storefront: settings, curated product listings and bundles. Requires the `shop:read` scope. The `payout` object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /shop","href":"/api-reference/storefront/retrieve-the-patient-storefront","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Returns your clinic’s storefront: settings, curated product listings and bundles. Requires the \", _jsx(_components.code, {\n children: \"shop:read\"\n }), \" scope. The \", _jsx(_components.code, {\n children: \"payout\"\n }), \" object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\"]\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":"Retrieve the patient storefront","description":"Returns your clinic's storefront: settings, curated product listings and bundles. Requires the `shop:read` scope. The `payout` object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /shop","href":"/api-reference/storefront/retrieve-the-patient-storefront","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Storefront"],"summary":"Retrieve the patient storefront","operationId":"getShop","description":"Returns your clinic's storefront: settings, curated product listings and bundles. Requires the `shop:read` scope. The `payout` object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.","responses":{"200":"876b3681-75a7-41a2-af17-5215b5b8053e","401":"87d95543-7792-462b-9c2a-3324655627f2","403":"2b8e9fca-0848-4f16-a829-52630c0435e8","422":"be2344a8-8cee-4604-a50c-8ee0c20c7784","429":"2f0b0f2f-dadc-46e4-bac8-6c20133a1a0a","500":"04f18e2e-ca70-49dc-abf9-0ac01cf22e37"},"method":"get","type":"path","servers":["99e3b59c-dc63-47bf-bffb-070f0be07326"],"security":["dcc604bc-462f-440f-88d7-39631ae87d5c"],"path":"/shop","baseUrlOptions":["https://vitarelay.com/api/public/v1"],"title":"Retrieve the patient storefront","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"876b3681-75a7-41a2-af17-5215b5b8053e":{"description":"The storefront.","headers":{"X-RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the current window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"settings":{"type":"object","description":"Storefront settings for your clinic's patient shop.","properties":{"shop_id":{"type":"string","format":"uuid","uniqueKey":"settings.shop_id","typeLabel":"string\u003cuuid>"},"org_id":{"type":"string","format":"uuid","uniqueKey":"settings.org_id","typeLabel":"string\u003cuuid>"},"is_enabled":{"type":"boolean","description":"When false the patient shop is closed and patients see nothing.","uniqueKey":"settings.is_enabled","typeLabel":"boolean"},"allow_rnd":{"type":"boolean","description":"Allow research-use-only products to be listed.","uniqueKey":"settings.allow_rnd","typeLabel":"boolean"},"headline":{"oneOf":[{"type":"string","uniqueKey":"settings.headline.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"settings.headline.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.headline","typeLabel":"string | null"},"welcome_message":{"oneOf":[{"type":"string","uniqueKey":"settings.welcome_message.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"settings.welcome_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.welcome_message","typeLabel":"string | null"},"eligibility":{"type":"object","description":"Which product families this clinic may offer to patients.","uniqueKey":"settings.eligibility","typeLabel":"object"}},"uniqueKey":"settings","typeLabel":"object"},"products":{"type":"array","items":{"type":"object","description":"One curated product in the patient shop.","properties":{"id":{"type":"string","format":"uuid","description":"Listing id (used by DELETE /shop/products/{listingId}).","uniqueKey":"products.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"platform_product_id":{"type":"string","format":"uuid","uniqueKey":"products.items.[INDEX].platform_product_id","typeLabel":"string\u003cuuid>"},"markup_type":{"type":"string","enum":["percent","flat"],"uniqueKey":"products.items.[INDEX].markup_type","typeLabel":"enum\u003cstring>"},"markup_value":{"type":"number","uniqueKey":"products.items.[INDEX].markup_value","typeLabel":"number"},"custom_title":{"oneOf":[{"type":"string","uniqueKey":"products.items.[INDEX].custom_title.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"products.items.[INDEX].custom_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].custom_title","typeLabel":"string | null"},"custom_description":{"oneOf":[{"type":"string","uniqueKey":"products.items.[INDEX].custom_description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"products.items.[INDEX].custom_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].custom_description","typeLabel":"string | null"},"rx_mode":{"type":"string","enum":["none","refill_only","refill_or_approval","approval"],"uniqueKey":"products.items.[INDEX].rx_mode","typeLabel":"enum\u003cstring>"},"is_listed":{"type":"boolean","uniqueKey":"products.items.[INDEX].is_listed","typeLabel":"boolean"},"purchase_mode":{"type":"string","enum":["one_time","subscription","both"],"description":"Controls whether checkout permits one-time purchases, subscriptions, or both.","uniqueKey":"products.items.[INDEX].purchase_mode","typeLabel":"enum\u003cstring>"},"default_cadence":{"oneOf":[{"type":"string","enum":["weekly","monthly","quarterly",null],"uniqueKey":"products.items.[INDEX].default_cadence.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["weekly","monthly","quarterly",null],"uniqueKey":"products.items.[INDEX].default_cadence.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].default_cadence","typeLabel":"enum\u003cstring> | null"},"first_order_immediate":{"type":"boolean","uniqueKey":"products.items.[INDEX].first_order_immediate","typeLabel":"boolean"},"name":{"type":"string","uniqueKey":"products.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"products.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"products.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].description","typeLabel":"string | null"},"product_type":{"oneOf":[{"type":"string","uniqueKey":"products.items.[INDEX].product_type.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"products.items.[INDEX].product_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].product_type","typeLabel":"string | null"},"dosage_form":{"oneOf":[{"type":"string","uniqueKey":"products.items.[INDEX].dosage_form.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"products.items.[INDEX].dosage_form.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].dosage_form","typeLabel":"string | null"},"image_urls":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"products.items.[INDEX].image_urls.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"products.items.[INDEX].image_urls.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"uniqueKey":"products.items.[INDEX].image_urls.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].image_urls","typeLabel":"string[] | null"},"requires_prescription":{"type":"boolean","uniqueKey":"products.items.[INDEX].requires_prescription","typeLabel":"boolean"},"item_kind":{"type":"string","enum":["product"],"uniqueKey":"products.items.[INDEX].item_kind","typeLabel":"enum\u003cstring>"},"available_cadences":{"type":"array","items":{"type":"string","enum":["weekly","monthly","quarterly"],"uniqueKey":"products.items.[INDEX].available_cadences.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"All three cadences when subscribable, otherwise empty.","uniqueKey":"products.items.[INDEX].available_cadences","typeLabel":"enum\u003cstring>[]"},"requires_shipping":{"type":"boolean","uniqueKey":"products.items.[INDEX].requires_shipping","typeLabel":"boolean"},"patient_price_cents":{"type":"integer","description":"What the patient pays.","uniqueKey":"products.items.[INDEX].patient_price_cents","typeLabel":"integer"},"price_mode":{"type":"string","enum":["exact","up_to"],"description":"`exact` (default): the listing's own price. `up_to`: the clinic shows the product name with an \"up to\" amount because the doctor chooses the dose. A consult request (`POST /v1/consult-requests`) for an `up_to` product is estimated at `up_to_cents`, and the automatic charge after the doctor approves is capped there; anything higher waits for the patient's approval. Show `up_to_cents` as \"up to\" in your own storefront.","uniqueKey":"products.items.[INDEX].price_mode","typeLabel":"enum\u003cstring>"},"up_to_cents":{"oneOf":[{"type":"integer","description":"The \"up to\" amount in cents when `price_mode` is `up_to`, otherwise null.","uniqueKey":"products.items.[INDEX].up_to_cents.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The \"up to\" amount in cents when `price_mode` is `up_to`, otherwise null.","uniqueKey":"products.items.[INDEX].up_to_cents.oneOf.1","typeLabel":"null"}],"uniqueKey":"products.items.[INDEX].up_to_cents","typeLabel":"integer | null"},"eligible":{"type":"boolean","uniqueKey":"products.items.[INDEX].eligible","typeLabel":"boolean"}},"uniqueKey":"products.items.[INDEX]","typeLabel":"object"},"uniqueKey":"products","typeLabel":"object[]"},"bundles":{"type":"array","items":{"type":"object","description":"A multi-product package, optionally subscribable.","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"bundles.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"bundles.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"bundles.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"bundles.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].description","typeLabel":"string | null"},"image_url":{"oneOf":[{"type":"string","uniqueKey":"bundles.items.[INDEX].image_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"bundles.items.[INDEX].image_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].image_url","typeLabel":"string | null"},"pricing_mode":{"type":"string","enum":["sum","flat","package_markup"],"uniqueKey":"bundles.items.[INDEX].pricing_mode","typeLabel":"enum\u003cstring>"},"flat_price_cents":{"oneOf":[{"type":"integer","uniqueKey":"bundles.items.[INDEX].flat_price_cents.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"bundles.items.[INDEX].flat_price_cents.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].flat_price_cents","typeLabel":"integer | null"},"package_markup_type":{"oneOf":[{"type":"string","enum":["percent","flat",null],"uniqueKey":"bundles.items.[INDEX].package_markup_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["percent","flat",null],"uniqueKey":"bundles.items.[INDEX].package_markup_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].package_markup_type","typeLabel":"enum\u003cstring> | null"},"package_markup_value":{"type":"number","uniqueKey":"bundles.items.[INDEX].package_markup_value","typeLabel":"number"},"is_listed":{"type":"boolean","uniqueKey":"bundles.items.[INDEX].is_listed","typeLabel":"boolean"},"is_subscribable":{"type":"boolean","deprecated":true,"uniqueKey":"bundles.items.[INDEX].is_subscribable","typeLabel":"boolean"},"purchase_mode":{"type":"string","enum":["one_time","subscription","both"],"description":"Controls whether checkout permits one-time purchases, subscriptions, or both.","uniqueKey":"bundles.items.[INDEX].purchase_mode","typeLabel":"enum\u003cstring>"},"default_cadence":{"oneOf":[{"type":"string","enum":["weekly","monthly","quarterly",null],"uniqueKey":"bundles.items.[INDEX].default_cadence.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["weekly","monthly","quarterly",null],"uniqueKey":"bundles.items.[INDEX].default_cadence.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].default_cadence","typeLabel":"enum\u003cstring> | null"},"first_order_immediate":{"type":"boolean","description":"Bill and ship the first order at signup.","uniqueKey":"bundles.items.[INDEX].first_order_immediate","typeLabel":"boolean"},"items":{"type":"array","items":{"type":"object","required":["platform_product_id"],"properties":{"platform_product_id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].platform_product_id","typeLabel":"string\u003cuuid>"},"qty":{"type":"integer","minimum":1,"maximum":99,"default":1,"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].qty","typeLabel":"integer"},"name":{"type":"string","readOnly":true,"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].name","typeLabel":"string"},"product_type":{"oneOf":[{"type":"string","readOnly":true,"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].product_type.oneOf.0","typeLabel":"string"},{"type":"null","readOnly":true,"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].product_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX].product_type","typeLabel":"string | null"}},"uniqueKey":"bundles.items.[INDEX].\\items.items.[INDEX]","typeLabel":"object"},"uniqueKey":"bundles.items.[INDEX].\\items","typeLabel":"object[]"},"item_kind":{"type":"string","enum":["bundle"],"uniqueKey":"bundles.items.[INDEX].item_kind","typeLabel":"enum\u003cstring>"},"patient_price_cents":{"type":"integer","uniqueKey":"bundles.items.[INDEX].patient_price_cents","typeLabel":"integer"},"available_cadences":{"type":"array","items":{"type":"string","uniqueKey":"bundles.items.[INDEX].available_cadences.items.[INDEX]","typeLabel":"string"},"uniqueKey":"bundles.items.[INDEX].available_cadences","typeLabel":"string[]"},"requires_prescription":{"type":"boolean","uniqueKey":"bundles.items.[INDEX].requires_prescription","typeLabel":"boolean"},"requires_shipping":{"type":"boolean","description":"false only when every package item is a service.","uniqueKey":"bundles.items.[INDEX].requires_shipping","typeLabel":"boolean"},"rx_mode":{"type":"string","uniqueKey":"bundles.items.[INDEX].rx_mode","typeLabel":"string"},"eligible":{"type":"boolean","uniqueKey":"bundles.items.[INDEX].eligible","typeLabel":"boolean"}},"uniqueKey":"bundles.items.[INDEX]","typeLabel":"object"},"uniqueKey":"bundles","typeLabel":"object[]"},"custom_products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"custom_products.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"custom_products.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"custom_products.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"custom_products.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"custom_products.items.[INDEX].description","typeLabel":"string | null"},"item_kind":{"type":"string","enum":["custom"],"uniqueKey":"custom_products.items.[INDEX].item_kind","typeLabel":"enum\u003cstring>"},"patient_price_cents":{"type":"integer","uniqueKey":"custom_products.items.[INDEX].patient_price_cents","typeLabel":"integer"},"product_kind":{"type":"string","description":"service is non-shippable; other custom kinds may be physical.","uniqueKey":"custom_products.items.[INDEX].product_kind","typeLabel":"string"},"requires_shipping":{"type":"boolean","description":"false for services.","uniqueKey":"custom_products.items.[INDEX].requires_shipping","typeLabel":"boolean"},"requires_prescription":{"type":"boolean","description":"Always false.","uniqueKey":"custom_products.items.[INDEX].requires_prescription","typeLabel":"boolean"},"available_cadences":{"type":"array","items":{"type":"string","uniqueKey":"custom_products.items.[INDEX].available_cadences.items.[INDEX]","typeLabel":"string"},"uniqueKey":"custom_products.items.[INDEX].available_cadences","typeLabel":"string[]"},"is_listed":{"type":"boolean","uniqueKey":"custom_products.items.[INDEX].is_listed","typeLabel":"boolean"},"is_active":{"type":"boolean","uniqueKey":"custom_products.items.[INDEX].is_active","typeLabel":"boolean"},"purchase_mode":{"type":"string","enum":["one_time","subscription","both"],"description":"Controls whether checkout permits one-time purchases, subscriptions, or both.","uniqueKey":"custom_products.items.[INDEX].purchase_mode","typeLabel":"enum\u003cstring>"},"default_cadence":{"oneOf":[{"type":"string","enum":["weekly","monthly","quarterly",null],"uniqueKey":"custom_products.items.[INDEX].default_cadence.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["weekly","monthly","quarterly",null],"uniqueKey":"custom_products.items.[INDEX].default_cadence.oneOf.1","typeLabel":"null"}],"uniqueKey":"custom_products.items.[INDEX].default_cadence","typeLabel":"enum\u003cstring> | null"},"first_order_immediate":{"type":"boolean","uniqueKey":"custom_products.items.[INDEX].first_order_immediate","typeLabel":"boolean"}},"uniqueKey":"custom_products.items.[INDEX]","typeLabel":"object"},"uniqueKey":"custom_products","typeLabel":"object[]"},"payout":{"type":"object","description":"The clinic's Routable payout-onboarding state. A storefront cannot be enabled until payout_eligible is true.","properties":{"status":{"type":"string","enum":["not_started","invited","onboarding","ready","payout_eligible","error"],"uniqueKey":"payout.status","typeLabel":"enum\u003cstring>"},"payout_eligible":{"type":"boolean","uniqueKey":"payout.payout_eligible","typeLabel":"boolean"},"invite_url":{"oneOf":[{"type":"string","description":"Hosted Routable onboarding link (bank + tax + KYC). Present once onboarding has started.","uniqueKey":"payout.invite_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hosted Routable onboarding link (bank + tax + KYC). Present once onboarding has started.","uniqueKey":"payout.invite_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"payout.invite_url","typeLabel":"string | null"},"routable_company_id":{"oneOf":[{"type":"string","uniqueKey":"payout.routable_company_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"payout.routable_company_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"payout.routable_company_id","typeLabel":"string | null"},"needs_onboarding":{"type":"boolean","description":"Convenience flag = !payout_eligible.","additionalProperties":true,"uniqueKey":"payout.needs_onboarding","typeLabel":"boolean"}},"uniqueKey":"payout","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"settings":{"shop_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","org_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","is_enabled":true,"allow_rnd":true,"headline":"\u003cstring>","welcome_message":"\u003cstring>","eligibility":{}},"products":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","platform_product_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","markup_type":"percent","markup_value":123,"custom_title":"\u003cstring>","custom_description":"\u003cstring>","rx_mode":"none","is_listed":true,"purchase_mode":"one_time","default_cadence":"weekly","first_order_immediate":true,"name":"\u003cstring>","description":"\u003cstring>","product_type":"\u003cstring>","dosage_form":"\u003cstring>","image_urls":["\u003cstring>"],"requires_prescription":true,"item_kind":"product","available_cadences":["weekly"],"requires_shipping":true,"patient_price_cents":123,"price_mode":"exact","up_to_cents":123,"eligible":true}],"bundles":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","description":"\u003cstring>","image_url":"\u003cstring>","pricing_mode":"sum","flat_price_cents":123,"package_markup_type":"percent","package_markup_value":123,"is_listed":true,"is_subscribable":true,"purchase_mode":"one_time","default_cadence":"weekly","first_order_immediate":true,"items":[{"platform_product_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","qty":1,"name":"\u003cstring>","product_type":"\u003cstring>"}],"item_kind":"bundle","patient_price_cents":123,"available_cadences":["\u003cstring>"],"requires_prescription":true,"requires_shipping":true,"rx_mode":"\u003cstring>","eligible":true}],"custom_products":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","description":"\u003cstring>","item_kind":"custom","patient_price_cents":123,"product_kind":"\u003cstring>","requires_shipping":true,"requires_prescription":true,"available_cadences":["\u003cstring>"],"is_listed":true,"is_active":true,"purchase_mode":"one_time","default_cadence":"weekly","first_order_immediate":true}],"payout":{"status":"not_started","payout_eligible":true,"invite_url":"\u003cstring>","routable_company_id":"\u003cstring>","needs_onboarding":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"87d95543-7792-462b-9c2a-3324655627f2":{"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"},"2b8e9fca-0848-4f16-a829-52630c0435e8":{"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"},"be2344a8-8cee-4604-a50c-8ee0c20c7784":{"description":"Body parsed but failed validation (`validation_failed`).","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"},"2f0b0f2f-dadc-46e4-bac8-6c20133a1a0a":{"description":"Per-key rate limit exceeded (`rate_limited`). Default 60 writes/minute.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the current window resets.","schema":{"type":"integer"}}},"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"},"04f18e2e-ca70-49dc-abf9-0ac01cf22e37":{"description":"Unexpected server error (`internal_error`).","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"}},"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":"Retrieve the patient storefront - VitaRelay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T21:03:23.467Z","originalFileLocation":"api-reference/storefront/retrieve-the-patient-storefront.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=\"Returns your clinic\u0026#x27;s storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\">\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=\"Retrieve the patient storefront - VitaRelay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns your clinic\u0026#x27;s storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VitaRelay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront\">\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=Storefront\u0026amp;title=Retrieve+the+patient+storefront\u0026amp;description=Returns+your+clinic%27s+storefront%3A+settings%2C+curated+product+listings+and+bundles.+Requires+the+%60shop%3Aread%60+scope.+The+%60payout%60+object+reflects+Routable+payout-o\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=5fdd46a58c9b3ad12f81a0bb034618fcc29a1df9217fb256f3c5cdcc48eabde9\">\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=\"Retrieve the patient storefront - VitaRelay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns your clinic\u0026#x27;s storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vitarelay.mintlify.site/_mintlify/api/og/v2?division=Storefront\u0026amp;title=Retrieve+the+patient+storefront\u0026amp;description=Returns+your+clinic%27s+storefront%3A+settings%2C+curated+product+listings+and+bundles.+Requires+the+%60shop%3Aread%60+scope.+The+%60payout%60+object+reflects+Routable+payout-o\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=5fdd46a58c9b3ad12f81a0bb034618fcc29a1df9217fb256f3c5cdcc48eabde9\">\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/storefront/retrieve-the-patient-storefront\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/storefront/retrieve-the-patient-storefront.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/storefront/retrieve-the-patient-storefront#webpage\",\"url\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront\",\"name\":\"Retrieve the patient storefront\",\"description\":\"Returns your clinic's storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\",\"dateModified\":\"2026-11-12T21:03:23.467Z\",\"isPartOf\":{\"@id\":\"https://api.vitarelay.com#website\"},\"breadcrumb\":{\"@id\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://api.vitarelay.com/api-reference/patients/list-patients\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Retrieve the patient storefront\",\"item\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront#apireference\",\"headline\":\"Retrieve the patient storefront\",\"name\":\"Retrieve the patient storefront\",\"description\":\"Returns your clinic's storefront: settings, curated product listings and bundles. Requires the shop:read scope. The payout object reflects Routable payout-onboarding status. Enabling the store requires payout_eligible=true.\",\"url\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront\",\"mainEntityOfPage\":{\"@id\":\"https://api.vitarelay.com/api-reference/storefront/retrieve-the-patient-storefront#webpage\"},\"dateModified\":\"2026-11-12T21:03:23.467Z\",\"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/storefront/retrieve-the-patient-storefront.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","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","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","description":"Fetch one 503A product by id or slug. Requires `rx:read`.","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","description":"Partial update of storefront settings. Only the supplied fields change. Requires the `shop:write` scope. Setting `is_enabled=true` requires the clinic to be payout-eligible. If not, this returns 422 with code `payout_setup_incomplete`, and Routable payout onboarding is automatically started (the clinic's admin receives an email + an in-app onboarding link). Poll GET /shop for the `payout` status; once `payout_eligible` is true, retry enabling. Building products/bundles and disabling the store are never gated — the gate applies only to `is_enabled=true`, not to `headline`, `welcome_message`, `allow_rnd`, or `is_enabled=false`.","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":"Retrieve the patient storefront - 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"]}