List domains — GET /v1/project/{slug}/domains

Returns every custom hostname this site holds: the live ones, plus any pending claim with the DNS records it still owes.

GET /v1/project/{slug}/domains

Addresshttps://api.hanzo.ai/v1/project/{slug}/domains
MethodGET
Operationget_project_by_slug_domains
AuthAuthorization: Bearer $HANZO_API_KEY

Returns every custom hostname this site holds: the live ones, plus any pending claim with the DNS records it still owes.

domains is the routing answer — the hosts that are verified right now — while claims is the full panel, one row per host, each saying whether it is live or pending and, if pending, exactly what to publish.

Scope: a validated principal is required (401 without one) and the site is resolved within that principal's org, so another tenant's slug is a 404.

Request

1 field.

FieldInTypeRequiredDescription
slugpathstringyesSlug is the project to act on, from the path.

Response

StatusBodyMeaning
200project.projectsDomainsok
defaultproblem-detailsrefused

200 body — 14 fields.

FieldInTypeAlwaysDescription
claimsbodyproject.projectsDomain[]—Claims is one row per host — live, or pending with the DNS records it still owes.
claims[].createdAtbodyinteger (int64)—CreatedAt is when the host was claimed, as Unix seconds — not when it went live.
claims[].detailbodystring—Detail is what is holding the claim up, in words a person can act on.
claims[].hostbodystring—Host is the custom hostname claimed for this site.
claims[].recordsbodyproject.Record[]—Records are EXACTLY the DNS records to publish to prove ownership and route the host.
claims[].records[].namebodystring—the record name the customer creates
claims[].records[].typebodystring—TXT | CNAME
claims[].records[].valuebodystring—the record value
claims[].statusbodystring—Status is live when the edge answers for this host now, pending while the claim is waiting on DNS proof of ownership.
claims[].urlbodystring—URL is where the host will serve once it is live — present on a pending claim too, so a console can show the destination before it works.
claims[].verifiedbodyboolean—Verified is the same fact as a boolean, for a caller that only needs the yes or no.
domainsbodystring[]—Domains are the hostnames that are VERIFIED and routing right now.
orgbodystring—Org is the organisation that owns the site.
slugbodystring—Slug is the site the panel belongs to.

Failure carries the platform error shape — see Errors.

Examples

hanzo project domains list <slug>
import { Configuration, ProjectApi } from 'hanzoai';

const api = new ProjectApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getProjectBySlugDomains({ slug: 'slug' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ProjectApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ProjectApi(client).get_project_by_slug_domains(slug='slug')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProjectAPI.GetProjectBySlugDomains(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, project_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = project_api::get_project_by_slug_domains(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ProjectApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ProjectApi(client).getProjectBySlugDomains();
curl https://api.hanzo.ai/v1/project/<slug>/domains \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool project, op get_project_by_slug_domains — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "project",
         "arguments": {
           "op": "get_project_by_slug_domains",
           "input": {
             "slug": "<slug>"
           }
         }
       }
     }'

Project API · All Hanzo APIs · Interactive reference

Was this page useful?