Available Domains
List the domains the calling user can use when creating an endpoint. The list combines two sources: shared platform domains (e.g. ngris.io, ngris.dev) accessible to everyone on the right plan, and custom domains the user owns (registered via POST /v1/domains/self).
Account scope: custom domains here are those of your active account, shared with its members per your role's permissions. Use switch account to work with a different account's domains.
Use this to populate the domain dropdown when provisioning a new endpoint. The id returned here is what you pass as domain_id to POST /v1/endpoints.
Response (200 OK)
Array of domain objects. Each domain has:
id int64
Numeric ID. Pass to POST /v1/endpoints as
domain_id.uuid string
Stable UUID; used in custom-domain mutation paths like /domains/self/{uuid}.
name string
Fully-qualified domain (e.g.
example.com).created_by int64 | null
The user who created this domain (provenance) — not the owner. The owner is the
account_id. null on platform/shared domains. Do not use this to detect platform domains; use system_managed.system_managed boolean
Authoritative flag for "is this a platform/shared domain".
true for the platform's own domains and admin-provisioned shared domains (under which you pick a subdomain); false for a custom domain you registered.is_owner boolean
Convenience flag —
true when the calling user owns this domain. Determines whether they can pick a custom subdomain or root @ on it.provider string
DNS provider for custom domains (
cloudflare, route53, digitalocean, cpanel, webmin, namecheap, or none). Always none on platform-shared domains.is_active boolean
Whether the domain is verified and ready to host endpoints. Newly-added custom domains are
false until DNS verification completes.verification_token string?
For unverified custom domains: the TXT record value the user must publish to prove ownership. Empty once verified.
plan_access string
all | plan-restricted. Restricted shared domains are only available on certain paid plans.Errors
401 Unauthorized
Missing auth.
Request
curl "https://api.ngris.com/v1/domains/available" \
-H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris
client = Ngris(api_key="<your_api_key>")
for d in client.domains.list_available():
badge = "(owned)" if d.get("is_owner") else "(shared)"
print(f"{d['name']} {badge}")
Response — 200 OK
[
{
"id": 1,
"uuid": "...",
"name": "ngris.io",
"created_by": null,
"system_managed": true,
"is_owner": false,
"provider": "none",
"is_active": true,
"plan_access": "all"
},
{
"id": 42,
"uuid": "9f1a3c00-...",
"name": "example.com",
"created_by": 1024,
"system_managed": false,
"is_owner": true,
"provider": "cloudflare",
"is_active": true,
"plan_access": "all"
}
]