Domain Connect API

Domain Connect API.
Your customer clicks approve.

Domainee's Domain Connect API sets up your customers' DNS for them. When their DNS is on Cloudflare they approve the records in one click. Everywhere else they get steps written for their actual provider. One API call or one script tag, and you never touch a DNS credential.

Domainee is a custom domains API for SaaS with a native MCP server, 20 domains and 100 GB free.

1 click
at Cloudflare, all accounts
30
DNS hosts detected
0
DNS credentials stored
1 tag
drop-in widget

Trusted by teams building the future of SaaS

  • Common Ninja
  • Embeddable
  • Vidocu
  • Trofeo
  • Brackets Ninja

Why connections stop failing at the DNS step

One click where the DNS host supports itDomain Connect

When your customer's DNS is on Cloudflare, they approve the records on Cloudflare's own screen and type nothing. The request is signed with our key, no token reaches Domainee or you, and there is nothing to revoke afterwards.

Steps written for their provider everywhere else30 DNS hosts

We read the zone's nameservers and return the record name the way that provider's form wants it (@, blank, or the full domain), where its record editor lives, and the gotchas that silently break a connection, like Cloudflare's orange cloud or GoDaddy's parked A record.

Verified the moment they come backAuto re-check

The dashboard and widget re-check the domain as soon as the customer returns from the approval screen, instead of waiting for the next 5-minute monitor pass. TLS is issued on the first request.

Why this matters: most custom-domain setups die at the last mile, when a customer opens a DNS panel they have never seen and guesses which name field to use. Every connection that stalls there is a customer who never goes live.

Build it · or drop it in

Your UI, or ours.

Same data either way: the detected provider, the records, the steps, and a one-click link when the provider supports it.

Option 1: the API

Ask for instructions, render them

Show applyUrl as a button when it exists, and steps always.

curl: connect instructions
$ curl https://api.domainee.dev/v1/domains/8f09…/instructions \
    -H "Authorization: Bearer sk_live_…"

{
  "instructions": {
    "hostname": "shop.acme.com",
    "provider": { "id": "cloudflare",
                  "name": "Cloudflare",
                  "detected": true },
    "method": "cname",
    "records": [
      { "type": "CNAME", "name": "shop",
        "value": "edge.domainee.dev", "ttl": 300 }
    ],
    "steps": [ "Sign in to Cloudflare…", "…" ],
    "quirks": [ "Set Proxy status to DNS only…" ],
    "domainConnect": {
      "supported": true,
      "providerName": "Cloudflare",
      "applyUrl": "https://dash.cloudflare.com/domainconnect/…",
      "width": 750, "height": 750
    }
  }
}
Option 2: the widget

One script tag, nothing to build

Mint a short-lived connect session on your server and mount the widget. It shows the one-click button, the steps, and polls until the domain is live.

html: connect widget
<div id="domain-setup"></div>
<script src="https://domainee.dev/widget.js"></script>
<script>
  Domainee.mount('#domain-setup', {
    // from POST /v1/domains/:id/connect-session
    token: '<connect session token>',
    onVerified: function (domain) {
      window.location.reload();
    },
  });
</script>

Widget docs

Where one-click works today.

Each DNS host enables a template separately, so we publish the real list. Every customer gets a working path.

DNS hostWhat your customer gets
CloudflareOne click, live for all accounts. Records created DNS only.
Glauca DigitalOne click, live.
IONOS, Vercel, WordPress.com, NameSilo, PleskSupport the protocol. Onboarding requested; tailored steps until they enable our templates.
GoDaddyTailored steps. GoDaddy isn't onboarding new templates directly.
DigitalOceanTailored steps, or a scoped token your customer pastes and we write the records.
Namecheap, Route 53, Porkbun, Squarespace, Wix and the restTailored steps. These hosts don't implement Domain Connect.

Check any domain yourself with the free Domain Connect checker, or read how the Domain Connect protocol works.

Compared with Entri

Fewer one-click hosts. No connection caps.

Where Entri is ahead

Entri reaches more DNS hosts in one click, GoDaddy included. If most of your customers are on GoDaddy and one-click is the only thing you need, that matters.

Where Domainee is different

Per-domain pricing with 20 domains free instead of annual connection caps, plus the rest of the job: routing, TLS, monitoring and webhooks. See the full Entri comparison.

FAQ

Common questions

What is Domain Connect?
Domain Connect is an open protocol that lets a service ask a DNS provider to add specific records to a customer's domain. The customer approves a screen at their own provider instead of editing records by hand. Each provider has to enable a service's template before it works, which is why coverage grows one provider at a time.
Which DNS providers support one-click setup with Domainee?
Cloudflare, for all accounts, and Glauca Digital. We have asked IONOS, Vercel, WordPress.com, NameSilo and Plesk to enable our templates. GoDaddy is not onboarding new templates directly. You don't need to track this: the instructions endpoint and the widget offer the one-click button on their own as soon as a provider enables it.
Do I or Domainee ever hold my customer's DNS credentials?
No. We use the synchronous Domain Connect flow: the customer signs in at their own DNS provider and approves the change there. No OAuth token or API key reaches Domainee or your servers. The optional token path for Cloudflare and DigitalOcean is separate, and the token is used once and never stored.
What happens for customers whose DNS host has no one-click?
They get setup steps written for their actual provider: the right record type for a root or subdomain, the name field written the way that provider's form expects, and the provider-specific settings that break connections. The same response always carries the steps, so there is never a dead end.
Do I have to build the setup UI myself?
No. The connect widget is one script tag. It renders the provider-specific steps, the one-click button, and polls until the domain is live. If you want your own UI, GET /v1/domains/{id}/instructions returns the same data as JSON, and the MCP server exposes it to AI agents as get_connect_instructions.

Stop losing customers at the DNS step.

20 domains free, forever. One-click at Cloudflare and tailored steps everywhere else, from the first domain.