Domains API
Custom domains and SSL provisioning
REST API endpoints for Domains. 6 operations.
List custom domains
GET /v1/domainsReturns all custom domains attached to the caller's project, with their verification and SSL status.
Auth: Bearer API key
Responses
| Status | Description |
|---|---|
200 | All custom domains for the caller's project |
401 | Missing or invalid credentials |
500 | Internal error |
operationId: listDomains
Add a custom domain
POST /v1/domainsRegisters a custom domain for the caller's project and returns the created record plus the DNS records (CNAME + TXT) needed to verify and serve it.
Auth: Bearer API key
Request body
application/json (required) — schema AddDomainBody.
Responses
| Status | Description |
|---|---|
201 | Domain registered; returns DNS setup instructions |
400 | Invalid or platform-reserved domain |
401 | Missing or invalid credentials |
409 | Domain already registered |
500 | Internal error |
operationId: addDomain
Remove a custom domain
DELETE /v1/domains/{id}Detaches a custom domain from the caller's project and deletes its record.
Auth: Bearer API key
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Domain id |
Responses
| Status | Description |
|---|---|
204 | Domain removed |
401 | Missing or invalid credentials |
404 | Domain not found |
500 | Internal error |
operationId: deleteDomain
Get a custom domain
GET /v1/domains/{id}Returns a single custom domain by id, scoped to the caller's project.
Auth: Bearer API key
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Domain id |
Responses
| Status | Description |
|---|---|
200 | The domain |
401 | Missing or invalid credentials |
404 | Domain not found |
500 | Internal error |
operationId: getDomain
Provision SSL for a domain
POST /v1/domains/{id}/sslStarts background Let's Encrypt certificate issuance for a verified domain. The domain must be active; automatic SSL must be configured on the deployment.
Auth: Bearer API key
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Domain id |
Responses
| Status | Description |
|---|---|
200 | SSL provisioning started |
400 | Domain not verified yet |
401 | Missing or invalid credentials |
404 | Domain not found |
500 | Internal error |
501 | Automatic SSL not configured on this deployment |
operationId: provisionDomainSsl
Verify a custom domain
POST /v1/domains/{id}/verifyConfirms — via a standard public DNS lookup, no provider credentials — that the customer's domain points at our edge (its A records match cname.<platform>, or a configured SCALIX_EDGE_IP). On success, marks the domain active. This is the industry-standard "does it point at us" check (Vercel/Netlify/Render).
Auth: Bearer API key
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Domain id |
Responses
| Status | Description |
|---|---|
200 | DNS verification result |
401 | Missing or invalid credentials |
404 | Domain not found |
500 | DNS lookup failed |
operationId: verifyDomain