Choose a custom domain for a kind (client self-serve)
Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).
PUT
/
v1
/
account
/
brands
/
{brand_id}
/
domains
/
{kind}
Choose a custom domain for a kind (client self-serve)
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.
the custom-domain kind — login (the auth domain) or member (the member-portal domain).
Available options:
login,
member
Body
application/json
Choose a custom domain for a kind. The only field is the hostname you want to use; the brand is the one your API key owns (resolved from X-Brand-Id, never taken from the body), so a request-supplied brand or provider id is structurally inert. Any other field is refused with a 400 that names it — a field this operation does not accept is never silently ignored.
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.
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/choose-a-custom-domain-for-a-kind-client-self-serve","slug":"/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve","pageMetadata":{"title":"Choose a custom domain for a kind (client self-serve)","description":"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).","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","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: \"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\"\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":"Choose a custom domain for a kind (client self-serve)","description":"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).","operationId":"setAccountBrandDomain","parameters":["21af3783-1f13-4a01-8568-a81d384c7f9e","59317165-3546-48b9-abcc-437a00d11a76"],"requestBody":"a2e87e50-3546-4edf-bea2-2f9b47082160","responses":{"200":"649d48af-e268-4af1-b09e-177ecd92aa1b","400":"7e8208f3-87f6-4e5e-ad5a-bdb58e6c8faf","401":"113735f1-ae62-4eb4-8846-fddb4447b627","403":"1242cd4e-174a-4468-a718-6780beb9c3c4","404":"77182320-f9b2-4881-a2df-66f4ebc009c0","409":"7bd95397-70a8-42c4-ae6a-b99b11900f83","502":"4505e1e6-fae3-473d-8d78-274b25abcd77","503":"441724a5-0edc-4c7b-a42d-a62c479222c0"},"security":["d9fd9de3-3226-41a1-bea3-be1031d401e0"],"summary":"Choose a custom domain for a kind (client self-serve)","tags":["Brand configuration"],"method":"put","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/brands/{brand_id}/domains/{kind}","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"Choose a custom domain for a kind (client self-serve)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"21af3783-1f13-4a01-8568-a81d384c7f9e":{"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"}},"59317165-3546-48b9-abcc-437a00d11a76":{"description":"Send a unique value on every write. Do not assume that a repeated request with the same key is de-duplicated unless the operation says so.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","isRequired":false,"description":"Send a unique value on every write. Do not assume that a repeated request with the same key is de-duplicated unless the operation says so.","uniqueKey":"","typeLabel":"string"}},"f72f53ef-0a3b-4691-97fd-e9aec17be302":{"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"}},"65003256-1257-4b79-84ac-bc0cb58f560e":{"description":"the custom-domain kind — login (the auth domain) or member (the member-portal domain).","in":"path","name":"kind","required":true,"schema":{"enum":["login","member"],"type":"string","isRequired":true,"description":"the custom-domain kind — login (the auth domain) or member (the member-portal domain).","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Choose a custom domain for a kind. The only field is the hostname you want to use; the brand is the one your API key owns (resolved from X-Brand-Id, never taken from the body), so a request-supplied brand or provider id is structurally inert. Any other field is refused with a 400 that names it — a field this operation does not accept is never silently ignored.","properties":{"hostname":{"description":"the custom hostname to register (e.g. login.example.com).","minLength":1,"type":"string","isRequired":true,"uniqueKey":"hostname","typeLabel":"string"}},"required":["hostname"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"hostname":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"649d48af-e268-4af1-b09e-177ecd92aa1b":{"content":{"application/json":{"schema":{"properties":{"data":{"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.brand_id","typeLabel":"string"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"hostname":{"description":"your custom hostname (e.g. login.example.com).","type":"string","isRequired":true,"uniqueKey":"data.hostname","typeLabel":"string"},"kind":{"enum":["login","member"],"type":"string","isRequired":true,"uniqueKey":"data.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.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.state","typeLabel":"enum\u003cstring>"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.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.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.cname.name","typeLabel":"string"},"type":{"const":"CNAME","type":"string","isRequired":true,"uniqueKey":"data.cname.type","typeLabel":"string"},"value":{"description":"the record VALUE — the edge target the CNAME must point at.","type":"string","isRequired":true,"uniqueKey":"data.cname.value","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.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.live_checks.cert_issued.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.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.live_checks.cert_issued.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.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.live_checks.dns_seen.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.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.live_checks.dns_seen.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.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.live_checks.login_registered.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.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.live_checks.login_registered.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.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.live_checks.serving.checked_at","typeLabel":"string\u003cdate-time>"},"status":{"enum":["met","not_met","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.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.live_checks.serving.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.live_checks.serving","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"data.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.login_live.certificate","typeLabel":"enum\u003cstring>"},"checked_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.login_live.checked_at","typeLabel":"string\u003cdate-time>"},"source":{"enum":["auth0","dev_placeholder"],"type":"string","isRequired":true,"uniqueKey":"data.login_live.source","typeLabel":"enum\u003cstring>"},"verification":{"enum":["pending","ready","failed","not_found","unknown"],"type":"string","isRequired":true,"uniqueKey":"data.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.login_live.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"data.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.records.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"name":{"description":"the record NAME to set.","type":"string","isRequired":true,"uniqueKey":"data.records.items.[INDEX].name","typeLabel":"string"},"type":{"const":"CNAME","type":"string","isRequired":true,"uniqueKey":"data.records.items.[INDEX].type","typeLabel":"string"},"value":{"description":"the record VALUE.","type":"string","isRequired":true,"uniqueKey":"data.records.items.[INDEX].value","typeLabel":"string"}},"required":["kind","type","name","value"],"type":"object","uniqueKey":"data.records.items.[INDEX]","typeLabel":"object"},"maxItems":2,"minItems":2,"type":"array","uniqueKey":"data.records","typeLabel":"object[]"}},"required":["brand_id","kind","hostname","state","owner","created_at","updated_at"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"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":"the registered row + its CNAME paste-row (state cname_rendered)","exampleType":"generated"},"7e8208f3-87f6-4e5e-ad5a-bdb58e6c8faf":{"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"},"113735f1-ae62-4eb4-8846-fddb4447b627":{"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"},"1242cd4e-174a-4468-a718-6780beb9c3c4":{"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":"the body carried a field that exists on this operation but is not yours to set — host ownership is declared by an operator, not by the brand that serves on the host. Nothing was written. Distinct from the 400 an unrecognized field gets: the field is real, the standing is not.","exampleType":"generated"},"77182320-f9b2-4881-a2df-66f4ebc009c0":{"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"},"7bd95397-70a8-42c4-ae6a-b99b11900f83":{"content":{"application/problem+json":{"schema":{"oneOf":[{"type":"object","description":"RFC 7807 problem+json error body.","required":["type","title","status"],"properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.0.status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"oneOf.0.detail","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"The problem body of a refused custom-domain write: the saved custom domains changed after this server last read them, so this server refused to write over them. On a register or a verify, an earlier step of the same call may have been saved. It carries the version stored now (`current_version`, always null: a custom domain has no version of its own) and when the addressed custom domain was last saved (`saved_at`, null when none is saved), and never who saved it. Read again, then retry.","required":["current_version","saved_at","type","title","status"],"properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.1.status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.title","typeLabel":"string"},"type":{"type":"string","format":"uri-reference","enum":["https://purple.md/problems/version-mismatch"],"isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"current_version":{"oneOf":[{"description":"the version stored now; always null for a custom domain","type":"string","isRequired":true,"uniqueKey":"oneOf.1.current_version.oneOf.0","typeLabel":"string"},{"description":"the version stored now; always null for a custom domain","type":"null","isRequired":true,"uniqueKey":"oneOf.1.current_version.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.current_version","typeLabel":"string | null"},"saved_at":{"oneOf":[{"description":"when the addressed custom domain was last saved; null when none is saved","format":"date-time","type":"string","isRequired":true,"uniqueKey":"oneOf.1.saved_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"when the addressed custom domain was last saved; null when none is saved","format":"date-time","type":"null","isRequired":true,"uniqueKey":"oneOf.1.saved_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.saved_at","typeLabel":"string\u003cdate-time> | null"},"detail":{"type":"string","uniqueKey":"oneOf.1.detail","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"The problem body of a register whose custom domain was removed while it was being registered. It has two causes, and `detail` says which. Either a remove of this custom domain was saved while the call was registering it, so it is not registered now (register it again if it is still wanted); or the custom domain was removed and registered again under a different hostname while the call was registering it, so it does not hold the hostname the call sent, and its record shows the hostname it holds now (a register of the sent hostname is refused while that one stands).","required":["detail","type","title","status"],"properties":{"detail":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.detail","typeLabel":"string"},"status":{"type":"integer","enum":[409],"isRequired":true,"uniqueKey":"oneOf.2.status","typeLabel":"enum\u003cinteger>"},"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.title","typeLabel":"string"},"type":{"type":"string","format":"uri-reference","enum":["https://purple.md/problems/account-domain-removed_during_registration"],"isRequired":true,"uniqueKey":"oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.2","typeLabel":"object"},{"type":"object","description":"The problem body of a custom-domain register or verify refused because this deployment's domain provider does not provision that kind of domain: it registers login domains only, and a member domain is served through the platform's own certificate and load balancer. Nothing was written and the provider was not called.","required":["type","title","status"],"properties":{"status":{"type":"integer","enum":[409],"isRequired":true,"uniqueKey":"oneOf.3.status","typeLabel":"enum\u003cinteger>"},"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.title","typeLabel":"string"},"type":{"type":"string","format":"uri-reference","enum":["https://purple.md/problems/account-domain-kind-not-on-this-provider"],"isRequired":true,"uniqueKey":"oneOf.3.type","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","uniqueKey":"oneOf.3.detail","typeLabel":"string"}},"uniqueKey":"oneOf.3","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"a binding conflict: a different hostname for this kind, a host claimed elsewhere (value-free — never says by whom), or the same hostname already held under a DIFFERENT owner — a binding is never silently re-owned, so remove it first. One status, one problem `type`; only the human-readable detail distinguishes the cause. Also 409, under its own problem `type`, `version-mismatch`: the saved custom domains changed after this server last read them, so this server refused to write over them. The hostname may already be registered with only its CNAME step refused: a retry resumes from the saved row. The body carries `current_version` (always null: a domain row has no version of its own) and `saved_at` (when this custom domain was last saved, or null when none is saved), never who saved it. Read again, then retry. Also 409, under its own problem `type`, `account-domain-removed_during_registration`: this domain was removed while it was being registered (a remove of this custom domain was saved while this call was registering it), so it is not registered now. Register it again if it is still wanted. The same type also answers when this domain was removed and registered again under a different hostname while this call was registering it: it then does not hold the hostname this call sent, and its record shows the hostname it holds now. Also 409, under its own problem `type`, `account-domain-kind-not-on-this-provider`: on a deployment whose domain provider registers login domains only, a member domain is refused here, because a member domain is served through the platform's own certificate and load balancer rather than the auth provider. Nothing was written and the provider was not called.","exampleType":"generated"},"4505e1e6-fae3-473d-8d78-274b25abcd77":{"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":"the domain provider did not register the hostname (it was unavailable or refused the request; or, for a member domain on the ACM + load balancer provider, only when that provider is switched on, its certificate request failed or its validation record is not ready yet). The custom domain is saved in the requested state and nothing past that step was saved; send this same call again to resume it (retryable).","exampleType":"generated"},"441724a5-0edc-4c7b-a42d-a62c479222c0":{"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":"the durable domain registry is unavailable (nothing activated; retryable)","exampleType":"generated"}},"security":{"d9fd9de3-3226-41a1-bea3-be1031d401e0":{"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":"Choose a custom domain for a kind (client self-serve) - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.569Z","originalFileLocation":"api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve.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=\"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\">\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=\"Choose a custom domain for a kind (client self-serve) - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\">\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/choose-a-custom-domain-for-a-kind-client-self-serve\">\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=Choose+a+custom+domain+for+a+kind+%28client+self-serve%29\u0026amp;description=Registers+a+custom+domain+for+one+kind+using+your+own+API+key%3A+the+platform+registers+it+with+the+auth+provider+and+returns+the+CNAME+record+to+add+to+your+DNS+\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=733f05934ad10e91e9955663244aa2c9ad3a4a73d54a39001ad2573eeaf0115e\">\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=\"Choose a custom domain for a kind (client self-serve) - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Brand+configuration\u0026amp;title=Choose+a+custom+domain+for+a+kind+%28client+self-serve%29\u0026amp;description=Registers+a+custom+domain+for+one+kind+using+your+own+API+key%3A+the+platform+registers+it+with+the+auth+provider+and+returns+the+CNAME+record+to+add+to+your+DNS+\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=733f05934ad10e91e9955663244aa2c9ad3a4a73d54a39001ad2573eeaf0115e\">\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/choose-a-custom-domain-for-a-kind-client-self-serve\">\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/choose-a-custom-domain-for-a-kind-client-self-serve.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/choose-a-custom-domain-for-a-kind-client-self-serve#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve\",\"name\":\"Choose a custom domain for a kind (client self-serve)\",\"description\":\"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\",\"dateModified\":\"2026-11-12T04:48:52.569Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve#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\":\"Choose a custom domain for a kind (client self-serve)\",\"item\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve#apireference\",\"headline\":\"Choose a custom domain for a kind (client self-serve)\",\"name\":\"Choose a custom domain for a kind (client self-serve)\",\"description\":\"Registers a custom domain for one kind using your own API key: the platform registers it with the auth provider and returns the CNAME record to add to your DNS (state cname_rendered). Idempotent — re-sending the SAME hostname returns the current row unchanged; sending a DIFFERENT hostname for a kind you already registered is a conflict (remove it first). A hostname already claimed by another brand is a conflict (hostnames are globally unique). The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch answers 404, never 403).\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.569Z\",\"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/choose-a-custom-domain-for-a-kind-client-self-serve.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","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","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","description":"Returns the custom-domain row for one kind (login or member), or 404 if this brand has no custom domain of that kind (the shared-domain default). Key-scoped and tenant-isolated (path brand_id must match your X-Brand-Id; any mismatch answers 404, never 403).","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)","description":"Removes your brand's custom domain of the given kind, reverting to the shared-domain default. The brand is the one your key owns; the brand_id in the path must match your X-Brand-Id.","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":"Choose a custom domain for a kind (client self-serve) - 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"]}