Domains API
Add a hostname you own, configure the verification CNAME returned by the API, then send Verify domain.
Use API authentication for protected requests. Examples use your own resource IDs and a temporary token; saved response examples are synthetic.
| Method | Path | Operation |
|---|---|---|
GET | /v1/domain | List domains |
POST | /v1/domain | Create domain |
GET | /v1/domain/{id} | Get domain |
PUT | /v1/domain/{id} | Update domain |
DELETE | /v1/domain/{id} | Delete domain |
POST | /v1/domain/{id}/verify | Verify domain |
List domains
GET /v1/domain
Returns a paginated list of Domain
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
page | query | no | Page number |
per_page | query | no | Items per page |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request GET "$ADIOS_API_URL/v1/domain" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID"
Response: HTTP 200
List of Domain
Response fields
| Field | Type | Description |
|---|---|---|
data | array | |
data[].created_at | integer | (Unix timestamp) |
data[].deleted_at | integer | (Unix timestamp) |
data[].domain_id | string | |
data[].hostname | string | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
data[].redirect_to | string | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
data[].scope | string | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
data[].status | string | Domain verification status Allowed: pending, verified. |
data[].team_id | string | |
data[].updated_at | integer | (Unix timestamp) |
data[].verification_hostname | string | DNS name that must be configured as a CNAME for ownership verification |
data[].verification_parent_id | string | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
data[].verification_value | string | Expected CNAME value for ownership verification |
data[].verified_at | integer | (Unix timestamp) |
data[].workload_id | string | |
pagination | object | |
pagination.page | integer | Current page number |
pagination.per_page | integer | Number of items per page |
pagination.total | integer | Total number of items |
Illustrative example; not a live response:
{
"data": [
{
"created_at": 1791072000,
"deleted_at": 0,
"domain_id": "000000000000000000000000001",
"hostname": "app.example.com",
"redirect_to": "example",
"scope": "exact",
"status": "pending",
"team_id": "000000000000000000000000001",
"updated_at": 1791072000,
"verification_hostname": "example",
"verification_parent_id": "000000000000000000000000001",
"verification_value": "example",
"verified_at": 0,
"workload_id": "000000000000000000000000001"
}
],
"pagination": {
"page": 1,
"per_page": 1,
"total": 1
}
}
Create domain
POST /v1/domain
Creates a new Domain
This request changes data or starts an action. Review the target and body before sending it.
Request fields (the body contains an editable example):
| Field | Type | Required | Description |
|---|---|---|---|
hostname | string | yes | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
redirect_to | string | no | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
scope | string | no | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
status | string | no | Domain verification status Allowed: pending, verified. Default: "pending". |
team_id | string | yes | |
verification_hostname | string | no | DNS name that must be configured as a CNAME for ownership verification |
verification_parent_id | string | no | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
verification_value | string | no | Expected CNAME value for ownership verification |
verified_at | integer | no | (Unix timestamp) Default: 0. |
workload_id | string | no |
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request POST "$ADIOS_API_URL/v1/domain" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"team_id": "YOUR_TEAM_ID",
"hostname": "YOUR_HOSTNAME"
}
JSON
Replace YOUR_* body placeholders before sending. The quoted heredoc keeps the JSON literal.
Response: HTTP 201
Domain created
Response fields
| Field | Type | Description |
|---|---|---|
created_at | integer | (Unix timestamp) |
deleted_at | integer | (Unix timestamp) |
domain_id | string | |
hostname | string | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
redirect_to | string | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
scope | string | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
status | string | Domain verification status Allowed: pending, verified. |
team_id | string | |
updated_at | integer | (Unix timestamp) |
verification_hostname | string | DNS name that must be configured as a CNAME for ownership verification |
verification_parent_id | string | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
verification_value | string | Expected CNAME value for ownership verification |
verified_at | integer | (Unix timestamp) |
workload_id | string |
Illustrative example; not a live response:
{
"created_at": 1791072000,
"deleted_at": 0,
"domain_id": "000000000000000000000000001",
"hostname": "app.example.com",
"redirect_to": "example",
"scope": "exact",
"status": "pending",
"team_id": "000000000000000000000000001",
"updated_at": 1791072000,
"verification_hostname": "example",
"verification_parent_id": "000000000000000000000000001",
"verification_value": "example",
"verified_at": 0,
"workload_id": "000000000000000000000000001"
}
Get domain
GET /v1/domain/{id}
Returns a single Domain
Set domain_id using IDs from your own API responses.
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
id | path | yes | Resource identifier from your team's API results. |
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request GET "$ADIOS_API_URL/v1/domain/${ADIOS_DOMAIN_ID}" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID"
Response: HTTP 200
Domain
Response fields
| Field | Type | Description |
|---|---|---|
created_at | integer | (Unix timestamp) |
deleted_at | integer | (Unix timestamp) |
domain_id | string | |
hostname | string | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
redirect_to | string | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
scope | string | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
status | string | Domain verification status Allowed: pending, verified. |
team_id | string | |
updated_at | integer | (Unix timestamp) |
verification_hostname | string | DNS name that must be configured as a CNAME for ownership verification |
verification_parent_id | string | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
verification_value | string | Expected CNAME value for ownership verification |
verified_at | integer | (Unix timestamp) |
workload_id | string |
Illustrative example; not a live response:
{
"created_at": 1791072000,
"deleted_at": 0,
"domain_id": "000000000000000000000000001",
"hostname": "app.example.com",
"redirect_to": "example",
"scope": "exact",
"status": "pending",
"team_id": "000000000000000000000000001",
"updated_at": 1791072000,
"verification_hostname": "example",
"verification_parent_id": "000000000000000000000000001",
"verification_value": "example",
"verified_at": 0,
"workload_id": "000000000000000000000000001"
}
Update domain
PUT /v1/domain/{id}
Updates an existing Domain
Set domain_id using IDs from your own API responses.
This request changes data or starts an action. Review the target and body before sending it.
Request fields (the body contains an editable example):
| Field | Type | Required | Description |
|---|---|---|---|
hostname | string | yes | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
redirect_to | string | no | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
scope | string | no | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
status | string | no | Domain verification status Allowed: pending, verified. Default: "pending". |
team_id | string | yes | |
verification_hostname | string | no | DNS name that must be configured as a CNAME for ownership verification |
verification_parent_id | string | no | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
verification_value | string | no | Expected CNAME value for ownership verification |
verified_at | integer | no | (Unix timestamp) Default: 0. |
workload_id | string | no |
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
id | path | yes | Resource identifier from your team's API results. |
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request PUT "$ADIOS_API_URL/v1/domain/${ADIOS_DOMAIN_ID}" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"team_id": "YOUR_TEAM_ID",
"hostname": "YOUR_HOSTNAME"
}
JSON
Replace YOUR_* body placeholders before sending. The quoted heredoc keeps the JSON literal.
Response: HTTP 200
Domain updated
Response fields
| Field | Type | Description |
|---|---|---|
created_at | integer | (Unix timestamp) |
deleted_at | integer | (Unix timestamp) |
domain_id | string | |
hostname | string | User-owned custom hostname; adios.dev and adios.run namespaces are reserved for platform-managed routes |
redirect_to | string | Optional URL or hostname to redirect to (e.g. https://www.adios.dev) |
scope | string | Authorized hostname scope: exact permits only hostname; subtree also permits descendant hostnames. New registrable domains default to subtree, new subdomains default to exact, and existing records remain subtree for backward compatibility. Allowed: exact, subtree. |
status | string | Domain verification status Allowed: pending, verified. |
team_id | string | |
updated_at | integer | (Unix timestamp) |
verification_hostname | string | DNS name that must be configured as a CNAME for ownership verification |
verification_parent_id | string | Verified parent domain claim from which this hostname inherited verification; empty for direct DNS verification |
verification_value | string | Expected CNAME value for ownership verification |
verified_at | integer | (Unix timestamp) |
workload_id | string |
Illustrative example; not a live response:
{
"created_at": 1791072000,
"deleted_at": 0,
"domain_id": "000000000000000000000000001",
"hostname": "app.example.com",
"redirect_to": "example",
"scope": "exact",
"status": "pending",
"team_id": "000000000000000000000000001",
"updated_at": 1791072000,
"verification_hostname": "example",
"verification_parent_id": "000000000000000000000000001",
"verification_value": "example",
"verified_at": 0,
"workload_id": "000000000000000000000000001"
}
Delete domain
DELETE /v1/domain/{id}
Deletes a Domain
Set domain_id using IDs from your own API responses.
This request changes data or starts an action. Review the target and body before sending it.
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
id | path | yes | Resource identifier from your team's API results. |
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request DELETE "$ADIOS_API_URL/v1/domain/${ADIOS_DOMAIN_ID}" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID"
Response: HTTP 200
Resource deleted.
Response fields
| Field | Type | Description |
|---|---|---|
message | string |
Illustrative example; not a live response:
{
"message": "Deleted successfully"
}
Verify domain
POST /v1/domain/{id}/verify
Check the ownership CNAME provided when the domain was created. Configure DNS before sending this request.
Set domain_id using IDs from your own API responses.
This request changes data or starts an action. Review the target and body before sending it.
Authentication: bearer token and the team header shown below.
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
id | path | yes | Resource identifier from your team's API results. |
X-Tenant-ID | header | yes | Active team ID. Must match the tenant bound to a diagnostic token. |
Request example
Set ADIOS_API_URL=https://api.adios.dev. For protected requests, set ADIOS_ACCESS_TOKEN and ADIOS_TEAM_ID as in the quickstart. Set any additional ADIOS_* variables from your own resource results.
curl --fail-with-body --request POST "$ADIOS_API_URL/v1/domain/${ADIOS_DOMAIN_ID}/verify" \
-H "Authorization: Bearer $ADIOS_ACCESS_TOKEN" \
-H "X-Tenant-ID: $ADIOS_TEAM_ID"
Response: HTTP 200
Successful response. Inspect returned state for operations that start asynchronous work.
A complete response-body schema is not published for this custom operation. Inspect the returned content and status; no payload is assumed here.