Registered hostnames only.
SNI must match the HTTP Host header, and a route key must exist. Unknown or mismatched hostnames stop with HTTP 421.
Hostname, organization, HTTPS destination and certificate checks narrow every route before customer traffic can reach your origin.
The control plane does not publish a hostname directly from an API write. DNS must validate, certificate material must pass validation and only then is the route made available to the edge.
The resource is bound to one organization and one validated HTTPS destination.
status: pending_dnsThe certificate and private key are checked for the requested identifier before storage.
dns: valid · certificate: issuedThe route is published only when usable certificate material exists.
routing_status: activeEach boundary rejects a different class of unwanted traffic or unsafe configuration.
SNI must match the HTTP Host header, and a route key must exist. Unknown or mismatched hostnames stop with HTTP 421.
Ports are limited to 443 and 8443. Private, reserved, link-local, metadata and CGNAT addresses are rejected.
API principals carry an organization and scopes; resource lookups reject identifiers owned by another organization.
The result is visible as an HTTP response, rejected API write or lifecycle status—not hidden inside a generic health badge.
HTTP 421HTTP 421misconfigured + route removedValidation happens when the HTTPS destination is created. URLs with credentials, query strings or fragments are rejected, and the resolved IP set is stored with the destination used by the published route.
The custom-domain layer narrows which requests reach your origin. Your application remains responsible for the user and tenant decisions made after that boundary.
DNS verification, certificate lifecycle, registered-host routing and HTTPS destination policy.
Customer authorization, hostname-to-tenant mapping, user access and origin availability.
The product does not replace a CDN, application WAF, tenant authorization or origin monitoring.
curl -i "https://$CUSTOMER_HOST/" \
-H "Host: unknown.example"
HTTP/1.1 421 Misdirected RequestUse one of your registered customer hostnames as $CUSTOMER_HOST, then send a different HTTP Host header. The TLS SNI and Host mismatch is rejected before the request reaches your HTTPS destination.
Certificate objects are persisted to the configured S3 bucket with KMS encryption. API keys are hashed. Webhook endpoint secrets are returned on creation and used to sign the untouched delivery body.
The edge uses the destination host for the upstream Host header and preserves the customer hostname in X-Forwarded-Host.
Parse SubdomainTo-Signature, compute HMAC-SHA256 over timestamp + "." + raw_body, compare in constant time and reject stale timestamps.
Active domains are swept. When DNS no longer matches, the domain moves to misconfigured and its route is removed.
The production control plane and certificate storage are configured in AWS region eu-west-3.
Use the same lifecycle and hostname controls in the dashboard, API and SDKs. Send responsible disclosures directly to the security inbox.