Available Domains

GET /v1/domains/available

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" } ]
On this page
Available Domains
Iris