Returns your brand’s custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand’s flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).
Your brand id (brd_...). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with 400, and an unknown or foreign brand with 404.
your brand's custom-domain rows (0, 1, or 2 — one per kind you have registered).
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Purple Label MD","description":"Public API reference for building a patient storefront on the platform. Generated from the platform's own API contracts, and matches the newest staging release.","colors":{"primary":"#6D28D9","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/light.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=3c0569e3f76e49e04d232187908c2e2e","dark":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/dark.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=c11f42bb461c28528be896c7c1a80efa"},"favicon":"https://mintcdn.com/purplelabelmd/MUdvgTlYoCGY54e8/favicon.svg?fit=max\u0026auto=format\u0026n=MUdvgTlYoCGY54e8\u0026q=85\u0026s=3bd633ab20ff170e0ebebec0406e6972","footer":{"socials":{}},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"purplelabelmd","hasAudioNarration":false,"actualSubdomain":"purplelabelmd","customDomains":["docs.purplelabelmd.com"],"gitSource":{"type":"github","owner":"purple-label-md","repo":"purple-doc","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af545312fc9183f3253a260","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API reference","count":50},{"language":"default","tag":"Guides","count":21},{"language":"default","tag":"Offering configuration","count":18},{"language":"default","tag":"Integrate","count":16},{"language":"default","tag":"Brand configuration","count":9},{"language":"default","tag":"Webhooks","count":7},{"language":"default","tag":"Payments","count":4},{"language":"default","tag":"Intake","count":3},{"language":"default","tag":"Onboarding","count":3},{"language":"default","tag":"Sessions \u0026 authentication","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@media (prefers-reduced-motion: no-preference){.plmd-logo{transform-origin:center;transition:transform 0.12s ease}.plmd-logo .plmd-mark path{transform-box:fill-box;transform-origin:center}.plmd-logo-link:active .plmd-logo{transform:scale(0.85)}.plmd-logo-link:hover .plmd-logo .plmd-mark path:last-child{animation:plmd-carrot-hop 0.55s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(-n+6){animation:plmd-carrot-twinkle 0.5s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(even){animation-delay:0.08s}}@keyframes plmd-carrot-hop{0%{transform:translateY(0) rotate(0)}30%{transform:translateY(-14%) rotate(-9deg)}55%{transform:translateY(0) rotate(6deg)}78%{transform:translateY(-5%) rotate(-2deg)}100%{transform:translateY(0) rotate(0)}}@keyframes plmd-carrot-twinkle{0%,100%{transform:scale(1);opacity:1}45%{transform:scale(1.6);opacity:0.7}}"}],"page":{"pagePath":"api-reference/brand-configuration/list-your-brands-custom-domains","slug":"/api-reference/brand-configuration/list-your-brands-custom-domains","pageMetadata":{"title":"List your brand's custom domains","description":"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains","href":"/api-reference/brand-configuration/list-your-brands-custom-domains","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Returns your brand’s custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand’s flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\"\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":"List your brand's custom domains","description":"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains","href":"/api-reference/brand-configuration/list-your-brands-custom-domains","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).","operationId":"listAccountBrandDomains","parameters":["5aeeb897-3538-4b33-8b40-d1c2488be374","bee5c1e6-6e7d-49e3-9815-0326687bae0b"],"responses":{"200":"4cc9fc9c-ac04-4257-8c32-008830876d45","400":"6767adef-e311-4326-9278-1bf9c1a10e3f","401":"b588a434-5ef6-4376-94ee-a1e4326ad0bf","404":"2f7e6d63-a4e8-41b1-a9c2-02f04c323976"},"security":["505dbb27-e6da-4ef2-99d4-a7055baf1dde"],"summary":"List your brand's custom domains","tags":["Brand configuration"],"method":"get","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/brands/{brand_id}/domains","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"List your brand's custom domains","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5aeeb897-3538-4b33-8b40-d1c2488be374":{"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","in":"header","name":"X-Brand-Id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","uniqueKey":"","typeLabel":"string"}},"bee5c1e6-6e7d-49e3-9815-0326687bae0b":{"description":"the brand whose custom domains to view or manage (must match X-Brand-Id).","in":"path","name":"brand_id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"the brand whose custom domains to view or manage (must match X-Brand-Id).","uniqueKey":"","typeLabel":"string"}}},"responses":{"4cc9fc9c-ac04-4257-8c32-008830876d45":{"content":{"application/json":{"schema":{"properties":{"data":{"additionalProperties":false,"description":"your brand's custom-domain rows (0, 1, or 2 — one per kind you have registered).","properties":{"domains":{"items":{"additionalProperties":false,"description":"One custom-domain row as the registry holds it: the brand, the kind (login | member), the hostname, its provisioning state, who owns and who bound the host, timestamps, and the CNAME paste-row to add to your DNS. The row never carries a secret nor the provider's internal domain id. An absent row (a kind you have not registered) is the shared-domain default.","properties":{"brand_id":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].brand_id","typeLabel":"string"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].created_at","typeLabel":"string\u003cdate-time>"},"hostname":{"description":"your custom hostname (e.g. login.example.com).","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].hostname","typeLabel":"string"},"kind":{"enum":["login","member"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"owner":{"description":"who owns this host binding. `customer` is a domain you brought and verified; `platform-brand` is the platform-owned member host every brand receives by default; `platform-walk` is a standing platform program host. Set on the operator plane only — a brand cannot assign its own ownership — and always present on a row.","enum":["platform-walk","platform-brand","customer"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].owner","typeLabel":"enum\u003cstring>"},"state":{"description":"the provisioning state. login: requested → cname_rendered → verifying → verified → cert_issued → active. member: requested → cname_rendered → verifying → verified → cert_requested → cert_issued → active (the serving tail: verify stops at cert_requested; cert_issued and active are operator-advanced — active means the hostname serves this brand at the edge). removing (member only, when the ACM + load balancer provider is switched on): a remove has started taking the hostname down and has not finished. The hostname is NOT served in this state, nothing moves it forward, and the row carries no DNS records to add; send the remove again to finish it.","enum":["requested","cname_rendered","verifying","verified","cert_issued","active","cert_requested","removing"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].state","typeLabel":"enum\u003cstring>"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time>"},"bound_by":{"description":"which actor bound this host, and on which plane — `operator:\u003csubject>` or `client:\u003cclient id>`. Derived from the authenticated caller at the moment of the binding; it can never be supplied in a request body. Absent on a row bound before this field was recorded (the binder of those rows is genuinely unknown, and is not guessed). The time of the binding is the row's created_at, since a live binding is never re-owned in place.","type":"string","uniqueKey":"data.domains.items.[INDEX].bound_by","typeLabel":"string"},"cname":{"type":"object","description":"the CNAME record to add to your DNS (present from cname_rendered onward).","required":["type","name","value"],"properties":{"name":{"description":"the record NAME to set (your custom hostname).","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].cname.name","typeLabel":"string"},"type":{"const":"CNAME","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].cname.type","typeLabel":"string"},"value":{"description":"the record VALUE — the edge target the CNAME must point at.","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].cname.value","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.domains.items.[INDEX].cname","typeLabel":"object"},"live_checks":{"type":"object","description":"what the platform sees for a member domain it serves from its own load balancer, checked when you read the domain: whether DNS shows your records, whether the certificate is issued, whether the platform is serving the hostname, and whether member sign-in accepts it. Each answer comes from a live check at that moment, never from a saved state. Present only on a read (GET) of such a domain, and not while it is being removed.","required":["dns_seen","cert_issued","serving","login_registered"],"properties":{"cert_issued":{"type":"object","description":"the certificate for your hostname has been issued.","required":["status","checked_at"],"properties":{"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.cert_issued.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.cert_issued.status","typeLabel":"enum\u003cstring>"},"reason":{"description":"present only when status is `unknown`: not_configured (this check is not set up on the platform yet), acm_error (the certificate service could not be read), elb_error (the load balancer could not be read), cloud (a platform cloud read failed and no single service can be named), auth0_error (the sign-in provider could not be read), dns_error (DNS did not answer), no_records (the records to look for are not known yet).","enum":["not_configured","acm_error","elb_error","cloud","auth0_error","dns_error","no_records"],"type":"string","uniqueKey":"data.domains.items.[INDEX].live_checks.cert_issued.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.cert_issued","typeLabel":"object"},"dns_seen":{"type":"object","description":"public DNS answers the serving record (your hostname pointing at the platform's load balancer) and, until the certificate is issued, the validation record too.","required":["status","checked_at"],"properties":{"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.dns_seen.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.dns_seen.status","typeLabel":"enum\u003cstring>"},"reason":{"description":"present only when status is `unknown`: not_configured (this check is not set up on the platform yet), acm_error (the certificate service could not be read), elb_error (the load balancer could not be read), cloud (a platform cloud read failed and no single service can be named), auth0_error (the sign-in provider could not be read), dns_error (DNS did not answer), no_records (the records to look for are not known yet).","enum":["not_configured","acm_error","elb_error","cloud","auth0_error","dns_error","no_records"],"type":"string","uniqueKey":"data.domains.items.[INDEX].live_checks.dns_seen.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.dns_seen","typeLabel":"object"},"login_registered":{"type":"object","description":"member sign-in accepts your hostname.","required":["status","checked_at"],"properties":{"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.login_registered.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.login_registered.status","typeLabel":"enum\u003cstring>"},"reason":{"description":"present only when status is `unknown`: not_configured (this check is not set up on the platform yet), acm_error (the certificate service could not be read), elb_error (the load balancer could not be read), cloud (a platform cloud read failed and no single service can be named), auth0_error (the sign-in provider could not be read), dns_error (DNS did not answer), no_records (the records to look for are not known yet).","enum":["not_configured","acm_error","elb_error","cloud","auth0_error","dns_error","no_records"],"type":"string","uniqueKey":"data.domains.items.[INDEX].live_checks.login_registered.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.login_registered","typeLabel":"object"},"serving":{"type":"object","description":"the platform's load balancer carries your hostname's issued certificate and its routing rule right now.","required":["status","checked_at"],"properties":{"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.serving.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.serving.status","typeLabel":"enum\u003cstring>"},"reason":{"description":"present only when status is `unknown`: not_configured (this check is not set up on the platform yet), acm_error (the certificate service could not be read), elb_error (the load balancer could not be read), cloud (a platform cloud read failed and no single service can be named), auth0_error (the sign-in provider could not be read), dns_error (DNS did not answer), no_records (the records to look for are not known yet).","enum":["not_configured","acm_error","elb_error","cloud","auth0_error","dns_error","no_records"],"type":"string","uniqueKey":"data.domains.items.[INDEX].live_checks.serving.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.domains.items.[INDEX].live_checks.serving","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"data.domains.items.[INDEX].live_checks","typeLabel":"object"},"login_live":{"type":"object","description":"for a login domain: what the identity provider says about it right now (whether it has verified your DNS record, whether its certificate is issued), and who answered. Present only on a read (GET) of a login domain.","required":["source","verification","certificate","checked_at"],"properties":{"certificate":{"enum":["none","provisioning","issued","failed","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].login_live.certificate","typeLabel":"enum\u003cstring>"},"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].login_live.checked_at","typeLabel":"string\u003cdate-time>"},"source":{"enum":["auth0","dev_placeholder"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].login_live.source","typeLabel":"enum\u003cstring>"},"verification":{"enum":["pending","ready","failed","not_found","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].login_live.verification","typeLabel":"enum\u003cstring>"},"reason":{"description":"present only when a status is `unknown`: not_configured (this deployment answers login domains from the development placeholder), auth0_error (the identity provider could not be read).","enum":["not_configured","auth0_error"],"type":"string","uniqueKey":"data.domains.items.[INDEX].login_live.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"data.domains.items.[INDEX].login_live","typeLabel":"object"},"records":{"description":"the DNS records to add for a member domain you own, when the platform serves it from its own load balancer: the certificate validation record and the serving record, always together. `cname` then carries the serving record. Absent otherwise.","items":{"additionalProperties":false,"description":"One DNS record of a member domain's paste: `validation` proves you control the hostname so its certificate can issue; `serving` points the hostname at the platform. A business hostname pair, never a secret.","properties":{"kind":{"enum":["validation","serving"],"type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].records.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"name":{"description":"the record NAME to set.","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].records.items.[INDEX].name","typeLabel":"string"},"type":{"const":"CNAME","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].records.items.[INDEX].type","typeLabel":"string"},"value":{"description":"the record VALUE.","type":"string","isRequired":true,"uniqueKey":"data.domains.items.[INDEX].records.items.[INDEX].value","typeLabel":"string"}},"required":["kind","type","name","value"],"type":"object","uniqueKey":"data.domains.items.[INDEX].records.items.[INDEX]","typeLabel":"object"},"maxItems":2,"minItems":2,"type":"array","uniqueKey":"data.domains.items.[INDEX].records","typeLabel":"object[]"}},"required":["brand_id","kind","hostname","state","owner","created_at","updated_at"],"type":"object","uniqueKey":"data.domains.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"data.domains","typeLabel":"object[]"}},"required":["domains"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"domains":[{"brand_id":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","hostname":"\u003cstring>","kind":"login","owner":"platform-walk","state":"requested","updated_at":"2023-11-07T05:31:56Z","bound_by":"\u003cstring>","cname":{"name":"\u003cstring>","type":"CNAME","value":"\u003cstring>"},"live_checks":{"cert_issued":{"checked_at":"2023-11-07T05:31:56Z","status":"met","reason":"not_configured"},"dns_seen":{"checked_at":"2023-11-07T05:31:56Z","status":"met","reason":"not_configured"},"login_registered":{"checked_at":"2023-11-07T05:31:56Z","status":"met","reason":"not_configured"},"serving":{"checked_at":"2023-11-07T05:31:56Z","status":"met","reason":"not_configured"}},"login_live":{"certificate":"none","checked_at":"2023-11-07T05:31:56Z","source":"auth0","verification":"pending","reason":"not_configured"},"records":[{"kind":"validation","name":"\u003cstring>","type":"CNAME","value":"\u003cstring>"}]}]}}}},"exampleType":"generated"}},"description":"your brand's custom-domain rows (0, 1, or 2)","exampleType":"generated"},"6767adef-e311-4326-9278-1bf9c1a10e3f":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"malformed or absent X-Brand-Id","exampleType":"generated"},"b588a434-5ef6-4376-94ee-a1e4326ad0bf":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Missing, unknown or revoked API key. The body is the same in every case.","exampleType":"generated"},"2f7e6d63-a4e8-41b1-a9c2-02f04c323976":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Brand not found for your account. An unknown brand and another account's brand get the same `404`, never a `403`.","exampleType":"generated"}},"security":{"505dbb27-e6da-4ef2-99d4-a7055baf1dde":{"apiKey":{"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","scheme":"bearer","type":"http","scopes":[],"schemeName":"apiKey"}}},"servers":{"76f2c082-b62c-4aea-a087-a046f1378296":{"url":"https://api.staging.purplelabelmd.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","scheme":"bearer","type":"http","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi/public-openapi.json"},"subdomain":"purplelabelmd","siteName":"Purple Label MD","title":"List your brand's custom domains - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.505Z","originalFileLocation":"api-reference/brand-configuration/list-your-brands-custom-domains.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 brand\u0026#x27;s custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand\u0026#x27;s flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\">\u003cmeta data-mint-head name=\"application-name\" content=\"Purple Label MD\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List your brand\u0026#x27;s custom domains - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns your brand\u0026#x27;s custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand\u0026#x27;s flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Purple Label MD\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Brand+configuration\u0026amp;title=List+your+brand%27s+custom+domains\u0026amp;description=Returns+your+brand%27s+custom-domain+rows+%E2%80%94+the+custom+login+domain+and%2For+member-portal+domain+you+have+registered+%E2%80%94+each+with+its+current+provisioning+state+and\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=b7cb7171ad2f2db99d0f810a5fd361915c56ae2b7e9859aef51b2b34b33e187a\">\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=\"List your brand\u0026#x27;s custom domains - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns your brand\u0026#x27;s custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand\u0026#x27;s flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Brand+configuration\u0026amp;title=List+your+brand%27s+custom+domains\u0026amp;description=Returns+your+brand%27s+custom-domain+rows+%E2%80%94+the+custom+login+domain+and%2For+member-portal+domain+you+have+registered+%E2%80%94+each+with+its+current+provisioning+state+and\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=b7cb7171ad2f2db99d0f810a5fd361915c56ae2b7e9859aef51b2b34b33e187a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Purple Label MD\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6D28D9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/brand-configuration/list-your-brands-custom-domains.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.purplelabelmd.com/#organization\",\"name\":\"Purple Label MD\",\"url\":\"https://docs.purplelabelmd.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/light.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=3c0569e3f76e49e04d232187908c2e2e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.purplelabelmd.com#website\",\"name\":\"Purple Label MD\",\"url\":\"https://docs.purplelabelmd.com\",\"publisher\":{\"@id\":\"https://docs.purplelabelmd.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains\",\"name\":\"List your brand's custom domains\",\"description\":\"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\",\"dateModified\":\"2026-11-12T04:48:52.505Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Brand configuration\",\"item\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/read-back-your-brands-platform-configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List your brand's custom domains\",\"item\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains#apireference\",\"headline\":\"List your brand's custom domains\",\"name\":\"List your brand's custom domains\",\"description\":\"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/list-your-brands-custom-domains#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.505Z\",\"publisher\":{\"@id\":\"https://docs.purplelabelmd.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Purple Label MD\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Purple Label MD\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/brand-configuration/list-your-brands-custom-domains.md","siteName":"Purple Label MD","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/pages/overview"}]},{"tab":"API reference","groups":[{"group":"Brand configuration","pages":[{"title":"Read back your brand's platform configuration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/read-back-your-brands-platform-configuration"},{"title":"Set your brand's display identity","description":"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (`consent_holder`), using your own API key. Send any of `display`, `legal_documents` and `consent_holder`. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, `consent_holder` must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports `patient_readiness` naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a `copy` key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 `version-mismatch` and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/set-your-brands-display-identity"},{"title":"List your brand's custom domains","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains","href":"/api-reference/brand-configuration/list-your-brands-custom-domains"},{"title":"Read the browser origins your storefront may read this brand from","description":"Returns the exact web origins (scheme + host + port) your brand's website may read its storefront prices and commerce readiness from, using your PUBLISHABLE key, from a browser. An origin that is not on this list gets no cross-origin permission, and the browser refuses the response. Requires a member domain to be registered for the brand.","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains/member/browser-origins","href":"/api-reference/brand-configuration/read-the-browser-origins-your-storefront-may-read-this-brand-from"},{"title":"Replace the browser origins your storefront may read this brand from","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/domains/member/browser-origins","href":"/api-reference/brand-configuration/replace-the-browser-origins-your-storefront-may-read-this-brand-from"},{"title":"Read one custom-domain row","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/read-one-custom-domain-row"},{"title":"Choose a custom domain for a kind (client self-serve)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve"},{"title":"Remove a custom domain (revert to the shared domain)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/remove-a-custom-domain-revert-to-the-shared-domain"},{"title":"Verify a custom domain and advance provisioning","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/domains/{kind}/verify","href":"/api-reference/brand-configuration/verify-a-custom-domain-and-advance-provisioning"}]},{"group":"Offering configuration","pages":[{"title":"List your brand's enabled offerings","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/offerings","href":"/api-reference/offering-configuration/list-your-brands-enabled-offerings"},{"title":"Enable an offering for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/offerings","href":"/api-reference/offering-configuration/enable-an-offering-for-your-brand"},{"title":"Choose the billing cadence of an offering on your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/offerings/{offering_ref}/billing-cadence","href":"/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand"},{"title":"Set your brand's price for an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/pricing","href":"/api-reference/offering-configuration/set-your-brands-price-for-an-offering"},{"title":"Adopt the starter merchandising pack for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/starter-merchandising","href":"/api-reference/offering-configuration/adopt-the-starter-merchandising-pack-for-your-brand"},{"title":"Read an offering's composed qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions"},{"title":"Add a library question to an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/add-a-library-question-to-an-offering"},{"title":"Reorder an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{offering_ref}/qualification/order","href":"/api-reference/offering-configuration/reorder-an-offerings-qualification-questions"},{"title":"Publish an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification/publish","href":"/api-reference/offering-configuration/publish-an-offerings-qualification-questions"},{"title":"Remove an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/remove-an-offerings-qualification-question"},{"title":"Edit an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/edit-an-offerings-qualification-question"},{"title":"Set the display name and presentation copy for your offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{ref}/merchandising","href":"/api-reference/offering-configuration/set-the-display-name-and-presentation-copy-for-your-offering"},{"title":"List the facts a qualification question may bind","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/facts","href":"/api-reference/offering-configuration/list-the-facts-a-qualification-question-may-bind"},{"title":"Create a new screening fact for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/minted-facts","href":"/api-reference/offering-configuration/create-a-new-screening-fact-for-your-brand"},{"title":"List your brand's qualification question library","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/questions","href":"/api-reference/offering-configuration/list-your-brands-qualification-question-library"},{"title":"Create a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/questions","href":"/api-reference/offering-configuration/create-a-qualification-library-question"},{"title":"Delete a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/delete-a-qualification-library-question"},{"title":"Edit a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/edit-a-qualification-library-question"}]},{"group":"Onboarding","pages":[{"title":"Check whether your brand is ready to sell","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/readiness","href":"/api-reference/onboarding/check-whether-your-brand-is-ready-to-sell"},{"title":"Read one offering's price and whether your brand can sell it","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/storefront","href":"/api-reference/onboarding/read-one-offerings-price-and-whether-your-brand-can-sell-it"},{"title":"Read a client's onboarding progress","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/onboardings/{onboarding_id}/progress","href":"/api-reference/onboarding/read-a-clients-onboarding-progress"}]},{"group":"Payments","pages":[{"title":"List your orders across all your brands","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders","href":"/api-reference/payments/list-your-orders-across-all-your-brands"},{"title":"Read one of your orders by reference","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders/{order_ref}","href":"/api-reference/payments/read-one-of-your-orders-by-reference"},{"title":"Start a checkout session and get a token to collect payment","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/payments/checkout-sessions","href":"/api-reference/payments/start-a-checkout-session-and-get-a-token-to-collect-payment"},{"title":"Read the payment status of an order","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/payments/{order_ref}/status","href":"/api-reference/payments/read-the-payment-status-of-an-order"}]},{"group":"Sessions \u0026 authentication","pages":[{"title":"Complete login and start the patient session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/callback","href":"/api-reference/sessions-\u0026-authentication/complete-login-and-start-the-patient-session"},{"title":"Begin Universal Login and redirect to the login page","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/login","href":"/api-reference/sessions-\u0026-authentication/begin-universal-login-and-redirect-to-the-login-page"},{"title":"Log out and end the patient's session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/logout","href":"/api-reference/sessions-\u0026-authentication/log-out-and-end-the-patients-session"}]},{"group":"Intake","pages":[{"title":"Record that your patient dropped off the questionnaire","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/abandon","href":"/api-reference/intake/record-that-your-patient-dropped-off-the-questionnaire"},{"title":"Submit an answer and get the next question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/next","href":"/api-reference/intake/submit-an-answer-and-get-the-next-question"},{"title":"Start an intake session and get the first question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/resolve","href":"/api-reference/intake/start-an-intake-session-and-get-the-first-question"}]},{"group":"Addresses","pages":[{"title":"Resolve a selected address suggestion to a full address","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/retrieve","href":"/api-reference/addresses/resolve-a-selected-address-suggestion-to-a-full-address"},{"title":"Suggest addresses as your patient types","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/suggest","href":"/api-reference/addresses/suggest-addresses-as-your-patient-types"}]},{"group":"Enrollment","pages":[{"title":"Read a patient's public enrollment status","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/journeys/{journey_id}/status","href":"/api-reference/enrollment/read-a-patients-public-enrollment-status"}]},{"group":"Webhooks","pages":[{"title":"List the webhook event types you can subscribe to","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/event-types","href":"/api-reference/webhooks/list-the-webhook-event-types-you-can-subscribe-to"},{"title":"List your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations","href":"/api-reference/webhooks/list-your-webhook-registrations"},{"title":"Register a webhook endpoint (signing secret shown once)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations","href":"/api-reference/webhooks/register-a-webhook-endpoint-signing-secret-shown-once"},{"title":"Read one of your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/read-one-of-your-webhook-registrations"},{"title":"Delete a webhook registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/delete-a-webhook-registration"},{"title":"Update a registration's URL, events, or enabled flag","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/update-a-registrations-url-events-or-enabled-flag"},{"title":"Send a test event to a registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations/{registration_id}/test","href":"/api-reference/webhooks/send-a-test-event-to-a-registration"}]}]}]},"basePath":"","title":"List your brand's custom domains - Purple Label MD","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}