Domains
Serve a project on a domain of its own.
How It Works
A project can answer on its own domain as well as its manifestx.ai address. Manifest doesn't register or sell domains.
- Add the domain. The answer lists the DNS record to create.
- The domain's owner adds that record where the domain's DNS is managed, usually the registrar.
- Manifest issues the HTTPS certificate. Check the status until it reads
active.
Add a Domain
Attach a hostname to a project and get the DNS records to add.
curl -X POST https://api.manifestx.dev/v1/projects/proj_…/domains \
-H "Authorization: Bearer $MANIFEST_ACCOUNT_KEY" \
-H "Idempotency-Key: domain-site_8231-docs" \
-H "Content-Type: application/json" \
-d '{ "hostname": "docs.acme.com" }'
| Field | Type | Required | Notes |
|---|---|---|---|
hostname |
string | yes | Such as docs.acme.com. No scheme or path. |
env |
string | no | The environment it serves: production (default) or staging. |
validation |
string | no | http (default) or txt. See Moving a Live Domain. |
A new domain answers 201 Created:
{
"domain": {
"hostname": "docs.acme.com",
"requested": "docs.acme.com",
"env": "production",
"validation": "http",
"status": "pending",
"certificate_status": "pending_validation"
},
"records": [
{ "purpose": "Point the domain to the site", "type": "CNAME", "name": "docs", "value": "cname.manifestx.ai" }
],
"root_redirect": null,
"request_id": "…"
}
Each item in records is one DNS record to create. Put type in the record type, name in the Name or Host field, and value in the value or target. These are the same records the Manifest connector gives.
Sending the same hostname again updates it in place, for example to switch validation, and answers 200. A project can have up to 25 custom domains, and a hostname can belong to only one project.
Root Domains
A root domain such as acme.com is served at www.acme.com, shown in domain.hostname. Most DNS providers can't point a root domain with a CNAME. root_redirect then describes the forwarding to set up at the registrar, so acme.com goes to https://www.acme.com.
Moving a Live Domain
For a domain already in use elsewhere, send "validation": "txt". records then starts with a TXT record.
- Add only the TXT record. The certificate is issued while the old site keeps serving.
- Once the status shows the certificate
active, add the CNAME. Traffic moves with HTTPS on both sides.
Check the Status
See whether the domain is live, and which records are still needed.
curl https://api.manifestx.dev/v1/projects/proj_…/domains/docs.acme.com \
-H "Authorization: Bearer $MANIFEST_ACCOUNT_KEY"
{
"domain": {
"hostname": "docs.acme.com",
"env": "production",
"status": "pending",
"hostname_status": "pending",
"certificate_status": "pending_validation",
"certificate_validation": { "method": "http", "expected_records": [], "errors": [] }
},
"records": [
{ "purpose": "Point the domain to the site", "type": "CNAME", "name": "docs", "value": "cname.manifestx.ai" }
],
"request_id": "…"
}
status |
Meaning |
|---|---|
pending |
Waiting for the DNS record or the certificate. Usually a few minutes after the record is added. |
active |
Verified, with its certificate, and serving the project. |
error |
Validation failed or timed out, or the domain was removed at the provider. Check the records and add the domain again. |
Poll about once a minute while status is pending. records repeats what to add, so you can show it again. With txt validation, the TXT record is listed until the certificate is issued.
hostname_status and certificate_status are the underlying states. certificate_validation lists what's still expected until the certificate is active.
Remove a Domain
Detach a domain from the project.
curl -X DELETE https://api.manifestx.dev/v1/projects/proj_…/domains/docs.acme.com \
-H "Authorization: Bearer $MANIFEST_ACCOUNT_KEY"
{ "removed": "docs.acme.com", "request_id": "…" }
The project stops answering on that domain at once, and the domain is free to add elsewhere. The CNAME can then be deleted at the DNS provider.
Errors
Domain errors, such as hostname_taken and domain_cap_reached, are in Errors, with what to do.
Article does not exist
There is no documentation at this path.