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

# GET /site/chapters

`GET /site/chapters`

## Request

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

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

A cursor-paged collection.

- object
  - `data` 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.
  - `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)
