Open source Apache 2.0 · self-host or hosted

Let your customers bring their own domain

Give every workspace in your SaaS its own hostname. One API call returns the DNS records your customer adds; we handle verification, HTTPS and routing each request to the right workspace.

Hosted plans are opening soon. Self-hosting is available today.

How it works

From "add your domain" to live over HTTPS

Your app calls one endpoint. Your customer adds two DNS records. Everything else is automatic.

Register the hostname

Your backend calls POST /v1/domains with the customer's hostname and their workspace in your app.

Your customer adds two records

Show them the records the API returned: one proves they own the name, one sends its traffic to the edge.

TXT_custom-domain-challenge.forms…
CNAMEforms.acme.com → edge.customdomainapi.com

It goes live, safely

Once ownership, routing, certificate and your origin check out, the hostname is served over HTTPS and you get a domain.ready webhook.

Features

Everything custom domains need, nothing you have to build

Built for multi-tenant SaaS, where one wrong route means one customer seeing another's data.

Automatic HTTPS

Certificates are issued on demand from Let's Encrypt the moment a verified hostname is first requested, and renewed without you noticing.

Tenant-safe routing

Every request reaches your app with a signed assertion naming the workspace. Your backend never has to trust the Host header.

Exact DNS instructions

The API hands back the two records your customer publishes, and tells you in plain words which one is missing or wrong.

Lifecycle checks

Ownership, routing, certificate and origin are checked continuously. A hostname goes live only when all four pass, and stops the moment one fails.

Signed webhooks

Know when a customer's domain is ready, needs attention, recovers or is deleted, with signatures, retries and replay.

API, SDK and portal

A documented REST API with OpenAPI, a Python SDK with ASGI middleware, and an operator portal for everything else.

Pricing

Priced by domains, not by surprise

Start free on a shared edge. Every paid plan is a dedicated edge of your own, with a clear allowance of domains.

Free

$0 / month

25 domains · Shared edge

  • Customers CNAME to edge.customdomainapi.com
  • No card needed
  • Community support on GitHub

Upgrade for more

Get early access

Growth

$79 / month

5,000 domains · Dedicated edge

  • Everything in Starter
  • Daily backups kept 30 days

$0.01 per extra domain

Get early access

Scale

$249 / month

25,000 domains · Dedicated edge

  • Everything in Growth
  • For large numbers of customer domains

More? Talk to us

Get early access

Second edge · coming soon

A second edge on any paid plan, for failover or a second region. Tell us if you need it.

Enterprise

Managed in your own cloud account, several regions, an SLA. Talk to us.

Self-hosted

Free and open source under Apache 2.0, on your own server or cloud. Deploy it yourself.

A domain is a customer hostname you have registered and not deleted. Annual billing: two months free. Hosted plans are billed by Sireto BV; prices exclude VAT where it applies. Existing domains are never switched off when you reach your limit.

Self-host

Your cloud, fifteen minutes

Each option creates one server with fixed addresses, installs the latest release, and ends with the operator portal open at your edge's own name. Your cloud provider bills you directly.

FAQ

Questions

What is an edge?

The server your customers' hostnames point at. It holds their certificates, terminates HTTPS and forwards each request to your app with a signed assertion of the workspace it belongs to.

Which hostnames are supported?

Exact customer subdomains, such as forms.acme.com. Apex domains (acme.com) and wildcards are not supported yet.

Does my backend have to be in Python?

No. Any language can use the REST API and verify the signed assertion; the API and the assertion format are documented. The Python SDK and middleware make it a few lines in FastAPI or Starlette.

What is the difference between Free and the paid plans?

Free runs your application on an edge shared with others, under edge.customdomainapi.com, for up to 25 domains and 10 requests a second, with bursts. Every paid plan gives you a server of your own, under your own edge hostname, with more domains and no request limit of ours.

What counts as a domain, and what happens at the limit?

Every customer hostname you have registered and not deleted, including those still waiting for their DNS records. Deleted ones don't count. You are warned as you approach the allowance; on paid plans each extra domain costs a little, and on Free new ones wait until you upgrade. Domains that already work are never switched off.

Can I move between hosted and self-hosted?

It is the same open-source service everywhere, so your integration (the API, the SDK and the middleware) does not change. Your customers' CNAME records name the edge they point at: with your own edge hostname (a paid plan or self-hosted) moving is repointing that one name, while leaving the shared Free edge means they update their CNAME.

Give your customers their own domain

Hosted plans are opening soon. Tell us about your product and we will get you started.