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

# Get Recurrence

> Retrieve a single recurrence by ID

# Get Recurrence

Returns a single recurrence. Both the parent experience and the
recurrence must belong to the API key's organization; cross-org or
mismatched parent IDs return `404 Not Found` with no information leak.

Requires the `experiences:read` scope.

## Path Parameters

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

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

## Response

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="id" type="string">Recurrence ID.</ResponseField>
    <ResponseField name="service_id" type="string">Parent experience ID.</ResponseField>
    <ResponseField name="provider_id" type="string">Default provider (SpaceMember) for this recurrence.</ResponseField>
    <ResponseField name="timezone" type="string">IANA timezone the schedule is anchored to.</ResponseField>
    <ResponseField name="start_date" type="string">First date the recurrence is active (ISO-8601 datetime or `YYYY-MM-DD`).</ResponseField>

    <ResponseField name="cadence" type="object">
      <Expandable>
        <ResponseField name="frequency" type="enum">`daily`, `weekly`, or `monthly`.</ResponseField>
        <ResponseField name="interval" type="integer">Every-N (e.g. `interval: 2` with `frequency: "weekly"` = every other week).</ResponseField>
        <ResponseField name="days_of_week" type="array<integer> | null">Active weekdays (0=Sun..6=Sat). `null` when not constrained.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="end_condition" type="object">
      Discriminated union — `{ type: "date", until }`, `{ type: "count", occurrences }`, or `{ type: "never" }`.
    </ResponseField>

    <ResponseField name="session_templates" type="array<object>">
      <Expandable>
        <ResponseField name="start_time_of_day" type="string">`HH:mm` 24-hour, local to `timezone`.</ResponseField>
        <ResponseField name="capacity" type="integer">Seats per occurrence.</ResponseField>
        <ResponseField name="provider_id" type="string">SpaceMember hosting this slot.</ResponseField>
        <ResponseField name="days_of_week" type="array<integer> | null">Optional per-template day filter; `null` = runs on every active day of the recurrence.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="status" type="enum">`active` or `paused`. Paused recurrences are kept on file but don't produce bookable slots.</ResponseField>
    <ResponseField name="created_at" type="string">ISO-8601.</ResponseField>
    <ResponseField name="updated_at" type="string">ISO-8601.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -H "X-API-KEY: your_api_key" \
    "https://www.gomry.com/api/v1/experiences/AbCdEfGhIjKlMnOpQrSt/recurrences/rec_AbCdEfGh"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": "rec_AbCdEfGh",
      "service_id": "AbCdEfGhIjKlMnOpQrSt",
      "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 }
      ],
      "status": "active",
      "created_at": "2026-05-25T10:00:00.000Z",
      "updated_at": "2026-05-25T10:00:00.000Z"
    }
  }
  ```

  ```json 404 theme={null}
  { "error": "Recurrence not found" }
  ```
</ResponseExample>
