> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gomry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Recurrence

> Edit an existing schedule

# Update Recurrence

Edits an existing schedule. Only the fields supplied in the body are
written. Nested objects (`cadence`, `end_condition`, `session_templates`)
are replaced **wholesale** when present — the recurrence rule is treated
as a single versioned definition rather than a deep-merge target.

Editing the rule retroactively updates every still-empty future slot.
Sessions that already have bookings keep their snapshotted
capacity/provider — attendees are never surprised by a silent change to
something they've already booked.

Requires the `experiences:write` scope.

## Path Parameters

<ParamField path="experience_id" type="string" required>
  Parent experience ID.
</ParamField>

<ParamField path="recurrence_id" type="string" required>
  Recurrence ID.
</ParamField>

## Request Body

At least one field is required. Unknown fields are rejected with `400`.

<ParamField body="provider_id" type="string">Default provider for this recurrence.</ParamField>
<ParamField body="timezone" type="string">IANA timezone (e.g. `America/New_York`).</ParamField>
<ParamField body="start_date" type="string">ISO-8601 datetime or `YYYY-MM-DD`.</ParamField>
<ParamField body="cadence" type="object">Full cadence object — same shape as on create. Supplying this field replaces the entire previous cadence.</ParamField>
<ParamField body="end_condition" type="object">Full end-condition object — replaces the previous one.</ParamField>
<ParamField body="session_templates" type="array<object>">Full template list — replaces the previous one. Supplying an empty list is rejected.</ParamField>
<ParamField body="status" type="enum">`active` or `paused`. Pause to keep the recurrence on file without producing new bookable slots.</ParamField>

## Response

Returns the updated recurrence with the shape from [Get Recurrence](/api-reference/recurrences/get-recurrence).

<RequestExample>
  ```bash cURL theme={null}
  curl -X PATCH \
    -H "X-API-KEY: your_api_key" \
    -H "Content-Type: application/json" \
    -d '{ "status": "paused" }' \
    "https://www.gomry.com/api/v1/experiences/AbCdEfGhIjKlMnOpQrSt/recurrences/rec_AbCdEfGh"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": "rec_AbCdEfGh",
      "service_id": "AbCdEfGhIjKlMnOpQrSt",
      "status": "paused",
      "provider_id": "prov_xyz",
      "timezone": "America/New_York",
      "start_date": "2026-09-01",
      "cadence": { "frequency": "weekly", "interval": 1, "days_of_week": [1, 3] },
      "end_condition": { "type": "never" },
      "session_templates": [
        { "start_time_of_day": "09:00", "capacity": 12, "provider_id": "prov_xyz", "days_of_week": null }
      ],
      "created_at": "2026-05-25T10:00:00.000Z",
      "updated_at": "2026-05-25T11:30:00.000Z"
    }
  }
  ```

  ```json 400 theme={null}
  { "error": "At least one field is required" }
  ```

  ```json 404 theme={null}
  { "error": "Recurrence not found" }
  ```

  ```json 403 theme={null}
  {
    "error": "insufficient_scope",
    "message": "This API key does not have 'write' access to 'experiences'.",
    "required_scope": "experiences:write"
  }
  ```
</ResponseExample>
