---
title: "GET /site"
method: GET
path: "/site"
tags: ["Site"]
---

# GET /site

`GET /site`

## Request

- Base URL: `https://api.aisle.wedding/v1`
- URL: `https://api.aisle.wedding/v1/site`
- Auth: HTTP bearer

Returns the site shell, and optionally the first page of the collections that fill it. Without `expand` this is the shell alone and each collection is its own request, which is 27 of them for a complete page. `expand` is a warm start, not a way around pagination: each collection comes back as the page its own endpoint would return first, and you continue on that endpoint with its `next_cursor`.

## Query parameters

- `expand` string[]

## Response `200`

Success.

- object
  - `data` SiteWithCollections, required
    - `slug` string, required
    - `published` boolean, required
    - `hero_image_url` string, nullable, required
    - `design` SiteDesign, required
      - `primary` string, required
      - `accent` string, required
      - `font_heading` string, required
      - `font_body` string, required
      - `ground` string, required
      - `ink` string, required
      - `muted` string, required
      - `rule` string, required
      - `radius` number, required
      - `cover` string, required
      - `nav_mode` string, required
      - `paragraph_font` 'heading' | 'body', required
      - `spacing_scale` number, required
      - `text_scale` number, required
      - `hero_text_color` string, nullable, required
      - `adjusted` object, required
        - `ink` boolean
        - `muted` boolean
        - `primary` boolean
      - `spec` SiteSpec
        - `version` 1, required
        - `preset` string, nullable, required: The template this look was last set from, or null.
        - `tokens` object, required
          - `palette` object, required
            - `primary` string, required
            - `accent` string, required
            - `ground` string, nullable, required: Null: the stylesheet default.
            - `ink` string, nullable, required
            - `muted` string, nullable, required: Null: derived from ground and ink.
            - `rule` string, nullable, required
            - `swatches` object, required: Up to five named colours, by the name the couple gave each.
          - `type` object, required
            - `heading` string, required
            - `body` string, required
            - `names` string, required
            - `paragraph` string, required
            - `scale` number, required
            - `heading_style` string, required
            - `open` object, required
              - …
          - `shape` object, required
            - `radius` number, required
            - `motif` string, required
          - `rhythm` object, required
            - `spacing` number, required
            - `divider` string, required
          - `motion` object, required
            - `reveal` string, required
            - `cover` string, required
        - `page` object, required
          - `frame` string, required
          - `surface` string, required
          - `nav` object, required
            - `mode` string, required
            - `labels` boolean, required
            - `style` string, required
            - `cta` string, required
        - `sections` object, required: Each section by its chapter key (`masthead`, `around_town`).
        - `layers` object, required
          - `cover` string, nullable, required: The block drawn as the cover.
          - `backdrop` string, nullable, required: The block drawn behind the whole page.
          - `seams` object[], required
            - `after` string, required: The chapter key it follows.
            - `block` string, required
          - `sections` object, required: A section's block, by chapter key.
        - `blocks` SiteSpecBlock[], required
          - `id` string, required
          - `scope` 'section' | 'cover' | 'seam' | 'backdrop', required
          - `tier` 'markup' | 'scripted', required
          - `author` 'elena' | 'couple' | 'preset', required
          - `fallback` string, required: What draws in its place if it is removed or fails.
          - `reads` string[], required
          - `islands` string[], required: Platform parts drawn inside it, such as rsvp.
        - `legacy_document` boolean, required: True while a whole-page design is live: guests are served that page, which reads none of this.
    - `chapters` SiteChapter[], required
      - `key` string, required
      - `kind` 'fixed' | 'custom', required
      - `position` integer, required
      - `enabled` boolean, required
      - `content` object, required: Chapter settings in snake_case. On the dress chapter, show_gender_labels defaults to true; false hides For her / For him headings while retaining descriptions and mood boards. Chapter prose strings support selected-text links as [label](https://example.com/). This applies to standfirst, masthead.subhead, letter/stay/travel/custom body paragraphs, closing.note and guestbook.prompt, including their translations. Only HTTP(S) destinations without credentials, spaces or control characters are links; other markup stays literal text. Strings retain this notation in API reads and writes. Render text and validated links separately, never as raw HTML. For the travel chapter, photo_position is above-description (default) or below-description. Below places the optional photo after the standfirst and body paragraphs, before the airport list. Omit to keep the saved position; set null to restore the default. No photo means no image or extra spacing. For the masthead chapter, show_rsvp_button is an optional boolean, off when absent. True adds a cover link to RSVP on standard Aisle covers when the current viewer can access RSVP. Omit to preserve the setting; false or null turns it off. Read-only shared links and disabled RSVP never show it. Brief retains its existing RSVP link without adding a second button; custom HTML covers are unchanged.
    - `collections` SiteCollections
      - `events` object
        - `data` Event[], required
          - `id` string, required
          - `name` string, required
          - `type` 'welcome_dinner' | 'ceremony' | 'reception' | 'brunch' | 'rehearsal' | 'cocktail_hour' | 'after_party' | 'activity' | 'other', required
          - `starts_at` string, date-time, required: An instant, not a wall clock. Format it in the wedding's `timezone` from `GET /wedding`, never in the reader's zone.
          - `ends_at` string, date-time, nullable, required: An instant, not a wall clock. Format it in the wedding's `timezone` from `GET /wedding`, never in the reader's zone.
          - `all_day` boolean, required: True for an all-day item, such as a travel day: it has a day and no time. `starts_at` is then the start of its first day in the wedding's `timezone` and `ends_at`, when set, the start of its last day; show the days, never midnight. On a write, any time sent with the days is dropped. Defaults to false.
          - `venue` object, required
            - `name` string, nullable
            - `address` string, nullable
            - `latitude` string, nullable
            - `longitude` string, nullable
          - `description` string, nullable, required
          - `images` string[], required
          - `dress_code_id` string, nullable, required
          - `meal_selection` object, required
            - `enabled` boolean
            - `deadline` string, date-time, nullable: An instant, not a wall clock. Format it in the wedding's `timezone` from `GET /wedding`, never in the reader's zone.
            - `options` object[]
              - …
          - `ticket` object, required
            - `required` boolean
            - `price` string, nullable
            - `pay_later` boolean: When true, an attending reply is recorded before the ticket is paid and the ticket stays owed. When false, an attending reply to a ticketed event waits for a completed ticket payment.
          - `rsvp` object, required
            - `asks_separately` boolean
            - `options` object[], nullable
              - …
          - `visibility` 'public' | 'invite_only' | 'internal', required
          - `audience_tags` string[], required
          - `audience_property_ids` string[], required
          - `transport_note` string, nullable, required
          - `transport_legs` object[], required
            - `id` string, required
            - `location` string, required
            - `time` string, date-time, nullable, required: An instant, not a wall clock. Format it in the wedding's `timezone` from `GET /wedding`, never in the reader's zone.
            - `note` string, nullable, required
            - `audience_tags` string[], required
            - `audience_properties` string[], required
            - `audience_undecided` boolean
          - `sort_order` integer, required
          - `seating_not_required` boolean, required
          - `created_at` string, date-time, required
          - `updated_at` string, date-time, required
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `dress_codes` object
        - `data` DressCode[], required
          - `id` string, required
          - `name` string, required
          - `description_ladies` string, nullable, required
          - `pinterest_url_ladies` string, nullable, required
          - `description_men` string, nullable, required
          - `pinterest_url_men` string, nullable, required
          - `inspiration_images` string[], required
          - `created_at` string, date-time, required
          - `updated_at` string, date-time, required
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `properties` object
        - `data` PublicProperty[], required
          - `id` string, required
          - `name` string, required
          - `arrangement` 'hosted_rooms' | 'room_block' | 'recommended' | 'self_arranged', required
          - `room_selection_mode` 'couple_assigned' | 'guest_choice', nullable, required: Stored property override. Null inherits the legacy wedding mode.
          - `effective_room_selection_mode` 'couple_assigned' | 'guest_choice', required: Property override, then legacy wedding mode, then couple_assigned.
          - `address` string, nullable, required
          - `place_id` string, nullable, required
          - `latitude` string, nullable, required
          - `longitude` string, nullable, required
          - `description` string, nullable, required
          - `images` string[], required: Ordered hotel photo URLs. An empty list means no hotel photos; room photos are separate.
          - `booking_url` string, nullable, required
          - `audience_tags` string[], required
          - `default_stay` PublicStay, required
            - `check_in_date` string, date, nullable, required
            - `check_out_date` string, date, nullable, required
            - `check_in_time` string, nullable, required
            - `check_out_time` string, nullable, required
            - `check_in_notes` string, nullable, required
          - `rate` PublicRate, required
            - `unit` 'room' | 'night' | 'party' | 'head', nullable, required
            - `amount` string, nullable, required
          - `payment_schedule` PublicPaymentSchedule, required
            - `deposit_unit` 'percent' | 'amount', nullable, required
            - `deposit_amount` string, nullable, required
            - `deposit_due_date` string, date, nullable, required
            - `balance_due_date` string, date, nullable, required
          - `block` object, required
            - `rooms_held` integer, nullable, required
            - `booking_deadline` string, date, nullable, required
            - `code` string, nullable, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
          - `updated_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `rooms` object
        - `data` PublicRoom[], required
          - `id` string, required
          - `property_id` string, nullable, required
          - `name` string, required
          - `type` string, nullable, required
          - `description` string, nullable, required
          - `capacity` integer, required
          - `capacity_max` integer, nullable, required
          - `bed_config` string, nullable, required
          - `images` string[], required
          - `status` 'available' | 'unavailable', required
          - `booking_url` string, nullable, required
          - `booked_by_party_id` string, nullable, required
          - `stay` PublicStay, required
            - `check_in_date` string, date, nullable, required
            - `check_out_date` string, date, nullable, required
            - `check_in_time` string, nullable, required
            - `check_out_time` string, nullable, required
            - `check_in_notes` string, nullable, required
          - `rate` object, required
            - `requires_payment` boolean, required
            - `unit` 'room' | 'night' | 'party' | 'head', required
            - `amount` string, nullable, required
          - `payment_schedule` PublicPaymentSchedule, required
            - `deposit_unit` 'percent' | 'amount', nullable, required
            - `deposit_amount` string, nullable, required
            - `deposit_due_date` string, date, nullable, required
            - `balance_due_date` string, date, nullable, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
          - `updated_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `airports` object
        - `data` PublicAirport[], required
          - `id` string, required
          - `name` string, required
          - `code` string, required
          - `country` string, nullable, required
          - `description` string, nullable, required
          - `travel_time_to_venue` string, nullable, required
          - `sort_order` integer, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `recommendations` object
        - `data` PublicRecommendation[], required
          - `id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `details_html` string, nullable, required
          - `emoji` string, nullable, required
          - `category` 'hotel' | 'food' | 'activity' | 'sight', required: Responses may contain legacy hotel rows. New lodging belongs in properties and rooms; write requests cannot target hotel.
          - `difficulty` 'easy' | 'moderate' | 'challenging', nullable, required: Non-null only for activity or sight recommendations.
          - `external_url` string, nullable, required
          - `latitude` string, nullable, required
          - `longitude` string, nullable, required
          - `place_id` string, nullable, required
          - `audience_tags` string[], required
          - `sort_order` integer, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `faqs` object
        - `data` PublicFaq[], required
          - `id` string, required
          - `question` string, required
          - `answer` string, required
          - `emoji` string, nullable, required
          - `sort_order` integer, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `registry_items` object
        - `data` PublicRegistryItem[], required
          - `id` string, required
          - `title` string, required
          - `description` string, nullable, required
          - `image_url` string, nullable, required
          - `goal_amount` string, required: A decimal currency amount. It is serialized as a string.
          - `received_amount` string, required: A decimal currency amount. It is serialized as a string.
          - `gift_count` integer, required
          - `unit_label` string, nullable, required
          - `unit_price` string, nullable, required
          - `unit_count` integer, nullable, required
          - `allow_custom_amount` boolean, required
          - `sort_order` integer, required
          - `active` boolean, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
          - `updated_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `songs` object
        - `data` PublicSongRequest[], required
          - `id` string, required
          - `guest_id` string, required
          - `title` string, required
          - `artist` string, nullable, required
          - `spotify_track_id` string, nullable, required
          - `album_art_url` string, nullable, required
          - `preview_url` string, nullable, required
          - `vote_count` integer, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `predictions` object
        - `data` PublicPrediction[], required
          - `id` string, required
          - `question` string, required
          - `options` object[], required
            - `id` string, required
            - `label` string, required
          - `active` boolean, required
          - `sort_order` integer, required
          - `total_responses` integer, required
          - `option_counts` object, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `guestbook` object
        - `data` PublicGuestbookEntry[], required
          - `id` string, required
          - `guest_id` string, required
          - `message` string, required
          - `approved` boolean, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required
      - `photos` object
        - `data` PublicPhoto[], required
          - `id` string, required
          - `url` string, uri, required
          - `width` integer, required
          - `height` integer, required
          - `section` string, required
          - `captured_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
          - `sort_index` integer, required
          - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
        - `has_more` boolean, required
        - `next_cursor` string, nullable, required

## Other responses

- `400`: The request itself could not be read, such as a body that is not a JSON object. A field we refuse is validation_failed instead.
- `401`: The API key is missing, malformed, or no longer valid.
- `402`: The operation requires an active Aisle membership for this wedding.
- `403`: The key is valid but not permitted to do this.
- `404`: No such resource inside the key's wedding.
- `409`: The request collided with the current state of the resource.
- `415`: A request body must be sent as application/json.
- `422`: The request was well-formed but a field was not acceptable. Every field at fault is named in error.details.
- `429`: Too many requests. Retry after the time given in Retry-After.
- `500`: Something went wrong on our side.

---

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