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

Example

{
  "object": "custom_domain_route",
  "id": "b7e1a3c2-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
  "domain_id": "2c8a4d6f-1e3b-4d5a-9b7c-8e1f2a3b4c5d",
  "slug": "support",
  "type": "chatbot",
  "chatbot_id": "8f3a9d2e-1b4c-4f5d-9e8a-7c3b2a1d0f9e",
  "kb_id": null,
  "page_id": null,
  "is_default": false,
  "url": "https://acme.com/support",
  "created_at": "2026-05-25T11:10:00+00:00",
  "updated_at": "2026-05-25T11:10:00+00:00"
}

Identifiers

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

Path

slug
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.
is_default
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

type
string
required
One of chatbot, kb, page. Immutable — delete and recreate to re-point a path.
chatbot_id
string (uuid) | null
required
Non-null when type = "chatbot". See Chatbots.
kb_id
string (uuid) | null
required
Non-null when type = "kb". See Knowledge bases.
page_id
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

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

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