---
title: "Get sandbox partner site detail"
method: GET
path: "/sites/{id}"
tags: ["Sites"]
---

# Get sandbox partner site detail

`GET /sites/{id}`

## Request

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

Returns one deterministic sandbox partner-site detail record when the authenticated automation client has `sites.read`. External URL: `/v1/sites/{id}`. Current Next.js implementation path: `/api/platform/v1/sites/[id]`. This read-only route does not require `Idempotency-Key`; it never renders public pages, publishes sites, writes CRM records, performs scheduling side effects, configures custom domains, calls providers, or exposes partner secrets. Live site detail reads remain unavailable until ownership, publication, and route-promotion gates pass.

## Path parameters

- `id` string, required

## Headers

- `X-Correlation-Id` string

## Response `200`

Sandbox partner-site detail.

- PlatformSiteDetailResponse
  - `site` PlatformSiteDetail, 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
    - `publication` object, required
      - `current_publication_id` string, nullable, required
      - `current_publication_status` 'draft' | 'review_requested' | 'approved' | 'published' | 'paused' | 'takedown_pending' | 'retracted' | 'archived', required
      - `hosted_route_path` string, nullable, required
      - `custom_domain_status` 'deferred', required
      - `rollback_supported` false, required
    - `safety` object, required
      - `status` 'passed', required
      - `partner_scripts` 'blocked', required
      - `direct_html` 'blocked', required
      - `hidden_form_destinations` 'blocked', required
      - `third_party_pixels` 'blocked', required
      - `secrets` 'redacted', required
    - `integrations` object, required
      - `forms` 'deferred', required
      - `listing_collection_widget` 'deferred', required
      - `scheduling_widget` 'deferred', required
      - `crm_delivery` 'deferred', required
    - `side_effects` PlatformSiteSideEffects, required
      - `email_sent` false, required
      - `sms_sent` false, required
      - `whatsapp_sent` false, required
      - `crm_write_performed` false, required
      - `calendar_write_performed` false, required
      - `payment_created` false, required
      - `distribution_mutated` false, 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)
