Skip to main content
A custom domain route is returned as a JSON object with object: "custom_domain_route".

Example

Identifiers

string
required
Always "custom_domain_route".
string (uuid)
required
Stable UUID. Use it in /custom-domain-routes/{id}.
string (uuid)
required
The custom domain the route lives on. Immutable.

Path

string
required
The path under the domain — "" for the bare hostname, "support" for /support. Lowercase alphanumeric and hyphen only. Reserved slugs (api, health, _next, .well-known, gateway, favicon.ico, robots.txt, sitemap.xml) are rejected.The combination (domain_id, slug) is unique.
boolean
required
Marks the route as the default for the domain. Used by the dashboard to highlight the “primary” route and influences how the bare hostname is treated when multiple routes exist. Set this on the route at slug "".Only one route per domain may have is_default: true. Setting a second default (on create or PATCH) is rejected with 409 — clear the existing default first.

Resource

string
required
One of chatbot, kb, page. Immutable — delete and recreate to re-point a path.
string (uuid) | null
required
Non-null when type = "chatbot". See Chatbots.
string (uuid) | null
required
Non-null when type = "kb". See Knowledge bases.
string (uuid) | null
required
Non-null when type = "page". See Pages.
Exactly one of chatbot_id, kb_id, page_id is non-null on any route, and the non-null one must match type. This is enforced both client-side (in the request validator) and by a database CHECK constraint.

Public URL

string | null
required
Convenience field — the public URL the route resolves to, built from the parent domain and slug. Always https://. Null on responses from endpoints where the parent domain isn’t available (currently none — populated on every response).

Timestamps

string (datetime)
required
When the route was created. ISO 8601.
string (datetime)
required
Last mutation. ISO 8601.