---
title: "List sandbox partner site domain status"
method: GET
path: "/sites/{id}/domains"
tags: ["Sites"]
---

# List sandbox partner site domain status

`GET /sites/{id}/domains`

## Request

- Base URL: `https://platform-api.homejourney.sg/v1`
- URL: `https://platform-api.homejourney.sg/v1/sites/{id}/domains`
- Auth: HTTP bearer

Returns deterministic sandbox partner-site custom-domain deferral evidence when the authenticated automation client has `sites.read`. External URL: `/v1/sites/{id}/domains`. Current Next.js implementation path: `/api/platform/v1/sites/[id]/domains`. This read-only route does not require `Idempotency-Key`; it returns requested-domain status and OpenTofu/certificate/rollback guardrails only, never configures DNS, requests certificates, calls providers, exposes DNS validation tokens, publishes sites, writes CRM records, performs scheduling side effects, or exposes partner secrets. Live custom-domain reads remain unavailable until ownership, DNS, certificate, rollback, and route-promotion gates pass.

## Path parameters

- `id` string, required

## Headers

- `X-Correlation-Id` string

## Response `200`

Sandbox partner-site custom-domain status.

- PlatformSiteDomainsResponse
  - `site` PlatformSiteSummary, required
    - `id` string, required
    - `sandbox_fixture_id` string, required: Deterministic sandbox fixture ID; live site IDs remain unavailable.
    - `site_slug` string, required
    - `display_name` string, required
    - `owner_type` 'individual_agent' | 'agency_organization' | 'service_provider' | 'mortgage_partner' | 'platform_ops', required
    - `template_id` 'agency_microsite' | 'agent_landing_page' | 'service_provider_landing_page' | 'mortgage_partner_lead_page', required
    - `template_version` string, required
    - `site_status` 'draft' | 'review_requested' | 'approved' | 'published' | 'paused' | 'takedown_pending' | 'retracted' | 'archived', required
    - `public_route_path` string, nullable, required
    - `custom_domain_status` 'deferred', required
    - `content_safety_status` 'passed', required
    - `allowed_origins` string[], required
    - `updated_at` string, date-time, required
    - `livemode` false, required
  - `domains` PlatformSiteDomainSummary[], required
    - `id` string, required
    - `sandbox_fixture_id` 'custom_domain_request_blocked', required
    - `site_id` string, required
    - `requested_domain` string, required
    - `domain_status` 'blocked', required
    - `blocked_reason` 'custom_domain_deferred_until_tofu_dns_cdn_certificate_rollback', required
    - `dns_management` 'tofu_required', required
    - `certificate_status` 'not_requested', required
    - `validation_status` 'not_started', required
    - `rollback_status` 'not_ready', required
    - `provider_call_performed` false, required
    - `livemode` false, required
    - `updated_at` string, date-time, required
  - `custom_domain_setup` object, required
    - `status` 'deferred', required
    - `tofu_managed_dns_required` true, required
    - `certificate_validation_required` true, required
    - `rollback_smoke_required` true, required
    - `provider_call_performed` false, required
  - `livemode` false, required
  - `request_id` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Missing or invalid platform API key.
- `403`: Credential, environment, or scope is not allowed.
- `404`: Platform API feature or resource is not available.
- `429`: Rate limit exceeded.
- `500`: Unexpected platform API failure.

---

[API](https://skmtc.dev/homejourney/apis/homejourney-platform-api.md) · [All operations](https://skmtc.dev/homejourney/apis/homejourney-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/homejourney/apis/homejourney-platform-api/revisions/a2c6fe063db1?raw)
