---
title: "PATCH /site/chapters/{chapter_key}"
method: PATCH
path: "/site/chapters/{chapter_key}"
tags: ["Site"]
---

# PATCH /site/chapters/{chapter_key}

`PATCH /site/chapters/{chapter_key}`

## Request

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

Retrying enabled or set with the same values is safe. Retrying ops is not safe because list operations may apply twice; read the chapter before retrying after a lost response.

## Path parameters

- `chapter_key` string, required

## Request body

- object
  - `enabled` boolean
  - `set` object: Chapter settings to merge. For shared dress guidance, PATCH the dress chapter with show_gender_labels: false. Set true to restore labels. 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.
  - `ops` union[]
    - union
      - object
        - `op` 'question_upsert', required
        - `question` object, required
          - `id` string, required
          - `prompt` string, required
          - `type` 'text' | 'yesno' | 'choice' | 'file' | 'section': section is a heading over the questions after it and takes no answer. file asks the guest for a photo or PDF on the wedding site; it cannot be answered through this API.
          - `required` boolean: A guest replying as attending on the wedding site must answer it. Not enforced on PUT /v1/guests/{guest_id}/rsvp.
          - `options` string[]
          - `event_id` string
          - `audience_tags` string[]
          - `show_if` object, nullable
            - `event_id` string, required
            - `counts_as_in` string[], required
      - object
        - `op` 'question_remove', required
        - `question_id` string, required
      - object
        - `op` 'question_move', required
        - `question_id` string, required
        - `to_index` integer, required
      - object
        - `op` 'photo_add', required
        - `url` string, required
      - object
        - `op` 'photo_remove', required
        - `url` string, required
      - object
        - `op` 'paragraph_set', required
        - `index` integer, required
        - `text` string, required
      - object
        - `op` 'paragraph_insert', required
        - `index` integer, required
        - `text` string, required
      - object
        - `op` 'paragraph_remove', required
        - `index` integer, required

## Response `200`

Success.

- 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.

## 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)
