Provision a custom domain for a status page.
const url = 'https://api.siteqwality.com/status_page/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/custom_domain';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"domain":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.siteqwality.com/status_page/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/custom_domain \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "domain": "example" }'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Status page identifier
Request Body required
Section titled “Request Body required ”object
The customer’s custom domain, e.g. “status.theircompany.com”
Example generated
{ "domain": "example"}Responses
Section titled “ Responses ”Custom domain provisioned with DNS validation records
Response shape for GET/POST /status-pages/{id}/custom-domain
object
“pending_validation” | “provisioning” | “active” | “failed” | “deleting”
The intermediate CNAME the customer must point their domain at, e.g. “<status_page_id>.custom.siteqwality.com”
ACM DNS validation records, needed while status = “pending_validation”
object
The CNAME record name the customer must create, e.g. “_abc123.status.theircompany.com”
The CNAME record value to point at, e.g. “xyz.acm-validations.aws”
The last check of a live domain; absent until the first one, a few minutes after it goes live.
object
What to fix, as a sentence. Absent when nothing is wrong.
When the certificate expires. It renews by itself while the validation record stays in DNS.
Absent for our own hostnames, which always mail from the default sender.
object
“not_started” until the domain is provisioned, then “pending”, “verified” or “failed”.
The CNAME to add. Email is signed for the domain once it resolves.
object
Where the mail comes from once verified.
Example generated
{ "status_page_id": "example", "domain": "example", "status": "example", "cname_target": "example", "acm_validation": { "name": "example", "value": "example" }, "failure_reason": "example", "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z", "health": { "checked_at": "2026-04-15T12:00:00Z", "problem": "example", "certificate_expires_at": "2026-04-15T12:00:00Z" }, "sender": { "status": "example", "dkim_record": { "name": "example", "value": "example" }, "from_address": "example" }}Invalid domain: wildcards, bad characters and siteqwality.com names are refused
Missing or invalid authentication
The plan’s custom domains are in use; the message names the Custom domain pack
Status page not found
The domain is taken, or the page already has one
Internal server error