{projectName}.vercel.app domain until you attach your own. There are two ways to do that:
- Add a custom domain — attaches any domain you control to the app. You configure DNS yourself (point the domain at the app).
- Connect a company domain — links a domain owned via the Domains primitive (purchased or registered through
naive domains). The domain is attached to the app’s hosting, recorded on the app, and set as primary in one step; DNS verification status is tracked on the company domain (app_connect_status).
List Domains
Add Custom Domain
Attaches the domain to the app’s hosting:Request Body
Must be a real public domain. RFC 2606 / special-use TLDs —
.test,
.example, .invalid, .localhost — and bare single labels are rejected with
invalid_input: they can never be DNS-verified, so accepting them only
produces a row stuck at verified: false.
The app must already have a hosting project linked. Without one there is
nothing to attach DNS to, and the call refuses with feature_not_configured
(501) rather than writing an unusable row. Provider failures are surfaced too:
a non-2xx from the hosting API (other than 409 “already attached”, which is
success) returns provider_error with the upstream status in the hint.
Response
200
A 76.76.21.21; subdomains: CNAME cname.vercel-dns.com). You can check the expected configuration via the hosting proxy: GET v9/projects/{projectId}/domains/{domain}.
Remove Domain
Removes the domain from the app and its hosting:200
Set Primary Domain
Marks a domain as the app’s primary. The next publish aliases production to the primary domain:200
Connect Company Domain
Connect a domain managed bynaive domains to serve this app’s production deployment. Attaches it to the app’s hosting, records it on the app, and sets it as primary:
200
pendingDns is true:
- System domain (
*.usenaive.ai): do not configure DNS yourself. The platform writes the apex A (+ any ownership TXT) on the shared zone. Call Verify DNS. Agents cannotset-recordon system domains (403 SYSTEM_DOMAIN). - Custom / purchased company domain: configure registrar DNS yourself, then verify.
app_connect_status transitions pending_dns → connected. This is separate from email dns_status / naive domains verify.
Disconnect Company Domain
200
Verify DNS
Trigger DNS verification for a connected company domain:200
System vs custom
Errors
404
400
400
501