> For the complete documentation index, see [llms.txt](https://syticks.gitbook.io/merpi-by-syticks/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://syticks.gitbook.io/merpi-by-syticks/api-reference/experience-ticketing-events-parties-conference-comedy-and-more/get-list-of-experiences.md).

# Get List of Experiences

Experiences include both regular events (concerts, parties, shows, etc.) and cinema movies. The `cinema` field differentiates between these two types:

* **Regular experiences**: One-time or limited-duration events with specific start and end dates
* **Cinema experiences**: Recurring movie showings that repeat over extended periods

#### Endpoint

```
GET /api/v1/merpi/experience
```

***

### Query Parameters

| Parameter     | Type          | Required | Description                                                                                                                                        |
| ------------- | ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `business_id` | integer       | No       | Filter experiences by a specific business ID. Returns only experiences created by the specified business.                                          |
| `search`      | string        | No       | Search for experiences by keywords in title, description, or other text fields.                                                                    |
| `category_id` | string        | No       | Filter experiences by a specific category ID (e.g., parties, cinema, concerts).                                                                    |
| `sorted_by`   | string (enum) | No       | Sort experiences based on different criteria: `just_added` (recently added), `upcoming` (future dates), `randomly` (random order).                 |
| `featured`    | boolean       | No       | Filter by featured status. When `true`, returns only experiences flagged as featured.                                                              |
| `cinema`      | boolean       | No       | Filter by experience type: `true` returns only cinema experiences, `false` returns only regular experiences. Not provided returns all experiences. |
| `page`        | integer       | No       | Page number for pagination. Starts at 1. Default: `1`                                                                                              |

***

#### Response Fields

**Root Response Object**

| Field     | Type    | Description                                     |
| --------- | ------- | ----------------------------------------------- |
| `success` | boolean | Indicates whether the request was successful.   |
| `status`  | integer | HTTP status code (200 for successful requests). |
| `message` | string  | Human-readable description of the response.     |
| `data`    | object  | Container object holding the response data.     |

**Data Object**

| Field         | Type           | Description                                                              |
| ------------- | -------------- | ------------------------------------------------------------------------ |
| `experiences` | array          | Array of experience objects matching the query criteria.                 |
| `next_page`   | string or null | The page number for the next set of results. `null` if on the last page. |
| `count`       | integer        | Total number of experiences matching the query.                          |
| `per_page`    | integer        | Number of experiences returned per page (default: 20).                   |

**Experience Object**

| Field         | Type                   | Description                                                                                                       |
| ------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `id`          | string (UUID)          | Unique identifier for the experience.                                                                             |
| `title`       | string                 | Name/title of the experience.                                                                                     |
| `start_date`  | string (custom format) | Start date and time (format: "Day, DD Mon YYYY HH:MM:SS").                                                        |
| `end_date`    | string (custom format) | End date and time (format: "Day, DD Mon YYYY HH:MM:SS").                                                          |
| `description` | string                 | Detailed description of the experience.                                                                           |
| `featured`    | boolean                | Indicates if the experience is featured on the platform.                                                          |
| `cinema`      | boolean                | `true` for cinema experiences (recurring movies), `false` for regular experiences (one-time or limited events).   |
| `cinema_info` | object or null         | **Only present when `cinema` is `true`.** Contains cinema-specific information including showtimes and locations. |
| `address`     | object                 | Location details for the experience.                                                                              |
| `image`       | array                  | Array of image objects associated with the experience.                                                            |
| `business`    | object                 | Information about the business hosting the experience.                                                            |
| `category`    | object                 | Category classification of the experience.                                                                        |
| `created_on`  | string (custom format) | Timestamp when the experience was created (format: "Day, DD Mon YYYY HH:MM:SS").                                  |

**Cinema Info Object**

**Only present when `cinema` is `true`**

| Field             | Type             | Description                                                                                                                                                                            |
| ----------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `showing`         | string           | Frequency of movie showings: `"weekly"`, `"monthly"`, or `"daily"`.                                                                                                                    |
| `shared_times`    | boolean          | `true` if showtimes are shared across all locations, `false` if each location has its own.                                                                                             |
| `shared_tickets`  | boolean          | `true` if ticket types are shared across all locations, `false` if location-specific.                                                                                                  |
| `per_day_times`   | boolean          | `true` if the cinema has configured different showtimes per day. When `true`, `days_with_times` will be populated at either the top level or per location depending on `shared_times`. |
| `specific_dates`  | array of strings | Only present for `showing: "daily"` cinemas. Lists the exact dates (`"YYYY-MM-DD"`) on which the movie will show. Empty array for weekly and monthly schedules.                        |
| `times`           | array            | Array of showtime objects. Always populated for backward compatibility. When `shared_times` is `false`, contains all times across all locations combined.                              |
| `days_with_times` | array            | Populated only when `per_day_times` is `true`. Structure varies by schedule type (see Understanding Cinema Showtimes Structure below). Empty array when `per_day_times` is `false`.    |
| `locations`       | array            | Array of cinema location objects.                                                                                                                                                      |

**Location Object**

**Found in `cinema_info.locations[]`**

| Field             | Type    | Description                                                                                                                                                  |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`              | integer | Unique identifier for this cinema location. **Use this as `cinema_location_id` when purchasing tickets.**                                                    |
| `name`            | string  | Name of the cinema location (e.g., "Filmhouse Cinemas Lekki", "Genesis Deluxe Warri").                                                                       |
| `street`          | string  | Street address of this location.                                                                                                                             |
| `town`            | string  | Town or locality.                                                                                                                                            |
| `city`            | string  | City where this location is situated.                                                                                                                        |
| `country`         | string  | Country (typically "Nigeria").                                                                                                                               |
| `is_headquarters` | boolean | `true` for the main/headquarters location, `false` for branches.                                                                                             |
| `times`           | array   | Showtime objects for this location. Populated when `shared_times` is `false`. When `shared_times` is `true`, showtimes are in `cinema_info.times[]` instead. |
| `days_with_times` | array   | Per-day showtime breakdown for this location. Populated when `shared_times` is `false` and `per_day_times` is `true`. Empty array otherwise.                 |

**Time Object**

**Found in `cinema_info.times[]`, `location.times[]`, or nested inside `days_with_times[].times[]`**

| Field       | Type    | Description                                                                             |
| ----------- | ------- | --------------------------------------------------------------------------------------- |
| `id`        | integer | Unique identifier for this showtime. **Use this as `time_id` when purchasing tickets.** |
| `start`     | string  | Start time of the screening (e.g., `"9:00AM"`, `"2:30PM"`).                             |
| `end`       | string  | End time of the screening (e.g., `"11:30AM"`, `"4:45PM"`).                              |
| `cinema_id` | integer | Reference to the cinema this showtime belongs to.                                       |

**Address Object**

| Field     | Type   | Description                            |
| --------- | ------ | -------------------------------------- |
| `street`  | string | Street address of the venue.           |
| `town`    | string | Town or locality.                      |
| `city`    | string | City where the experience takes place. |
| `country` | string | Country (typically "Nigeria").         |

**Image Object**

| Field   | Type         | Description                       |
| ------- | ------------ | --------------------------------- |
| `image` | string (URL) | Full URL to the experience image. |

**Business Object**

| Field   | Type                 | Description                                             |
| ------- | -------------------- | ------------------------------------------------------- |
| `id`    | string (UUID)        | Unique identifier for the business.                     |
| `name`  | string               | Business name.                                          |
| `photo` | string (URL) or null | URL to the business profile photo.                      |
| `slug`  | string               | URL-friendly identifier for the business.               |
| `type`  | string               | Type of business (e.g., `"entertainment"`, `"cinema"`). |

**Category Object**

| Field  | Type          | Description                                               |
| ------ | ------------- | --------------------------------------------------------- |
| `id`   | string (UUID) | Unique identifier for the category.                       |
| `slug` | string        | URL-friendly identifier for the category.                 |
| `name` | string        | Display name of the category (e.g., "Parties", "Cinema"). |

***

### Example Requests

**Get all experiences**

```http
GET /api/v1/merpi/experience HTTP/1.1
Accept: application/json
```

**Get only cinema experiences**

```http
GET /api/v1/merpi/experience?cinema=true HTTP/1.1
Accept: application/json
```

**Get only regular experiences**

```http
GET /api/v1/merpi/experience?cinema=false HTTP/1.1
Accept: application/json
```

**Get featured cinema experiences**

```http
GET /api/v1/merpi/experience?cinema=true&featured=true HTTP/1.1
Accept: application/json
```

**Search cinema experiences**

```http
GET /api/v1/merpi/experience?cinema=true&search=lagos HTTP/1.1
Accept: application/json
```

***

### Example Responses

**Regular Experience Response**

```json
{
  "success": true,
  "status": 200,
  "message": "List of Experiences",
  "data": {
    "experiences": [
      {
        "id": "223f279b-28b2-4b72-8020-cfc2c02b95cb",
        "title": "The WalkWay",
        "start_date": "Sat, 23 May 2026 18:00:00",
        "end_date": "Sat, 23 May 2026 22:00:00",
        "description": "Experience Fashion",
        "featured": false,
        "cinema": false,
        "address": {
          "street": "7 Homeville Close",
          "town": "Calabar",
          "city": "Calabar",
          "country": "Nigeria"
        },
        "image": [
          {
            "image": "https://syticks.com/storage/experiences/the-walkway.jpg"
          }
        ],
        "business": {
          "id": "0384a1ce-9933-4452-966e-9a0d09d17015",
          "name": "Silverbird Cinemas",
          "photo": "https://syticks.com/storage/businesses/silverbird.jpg",
          "slug": "silverbird-cinemas",
          "type": "entertainment"
        },
        "category": {
          "id": "ab006639-4a1f-4890-9b33-fa1e5b51ec4e",
          "slug": "fashion",
          "name": "Fashion"
        },
        "created_on": "Fri, 10 Apr 2026 18:46:26"
      }
    ],
    "next_page": "2",
    "count": 45,
    "per_page": 20
  }
}
```

**Cinema Experience: Weekly, Shared Times, No Per-Day Times**

`shared_times: true`, `per_day_times: false`. Showtimes are in `cinema_info.times[]` and apply to all locations uniformly. `days_with_times` is empty everywhere.

```json
{
  "success": true,
  "status": 200,
  "message": "List of Experiences",
  "data": {
    "experiences": [
      {
        "id": "b343ccca-087f-493e-875d-78301112b0e7",
        "title": "A Tribe Called Judas",
        "start_date": "Wed, 28 Oct 2026 21:02:40",
        "end_date": "Wed, 28 Oct 2026 00:00:00",
        "description": "A gripping Nollywood thriller about loyalty and betrayal.",
        "featured": false,
        "cinema": true,
        "cinema_info": {
          "showing": "weekly",
          "shared_times": true,
          "shared_tickets": true,
          "per_day_times": false,
          "specific_dates": [],
          "days_with_times": [],
          "times": [
            {
              "id": 36,
              "start": "7:45PM",
              "end": "9:30PM",
              "cinema_id": 20
            }
          ],
          "locations": [
            {
              "id": 2,
              "name": "Filmhouse Cinemas Lekki (HQ)",
              "street": "4 Admiralty Way",
              "town": "Lekki Phase 1",
              "city": "Lagos",
              "country": "Nigeria",
              "is_headquarters": true,
              "times": [
                {
                  "id": 36,
                  "start": "7:45PM",
                  "end": "9:30PM",
                  "cinema_id": 20
                }
              ],
              "days_with_times": []
            }
          ]
        },
        "address": {
          "street": "4 Admiralty Way",
          "town": "Lekki Phase 1",
          "city": "Lagos",
          "country": "Nigeria"
        },
        "image": [
          {
            "image": "https://syticks.com/storage/experiences/a-tribe-called-judas.jpg"
          }
        ],
        "business": {
          "id": "764c6a94-7bda-448e-a8af-35a5bb536d4",
          "name": "Filmhouse Cinemas",
          "photo": "https://syticks.com/storage/businesses/filmhouse.jpg",
          "slug": "filmhouse-cinemas",
          "type": "cinema"
        },
        "category": {
          "id": "56195f78-a14b-4dc2-b1b8-c3aa62a23f70",
          "slug": "cinema",
          "name": "Cinema"
        },
        "created_on": "Mon, 05 Jan 2026 20:36:58"
      }
    ],
    "next_page": null,
    "count": 1,
    "per_page": 20
  }
}
```

**Cinema Experience: Weekly, Shared Times, Per-Day Times Enabled**

`shared_times: true`, `per_day_times: true`. `days_with_times` appears at the top level inside `cinema_info`. Each location's `days_with_times` is an empty array.

```json
{
  "success": true,
  "status": 200,
  "message": "List of Experiences",
  "data": {
    "experiences": [
      {
        "id": "a7ff5bd3-4994-4404-9184-af90bdf86338",
        "title": "The Lagos Chronicles",
        "start_date": "Tue, 30 Jun 2026 20:53:00",
        "end_date": "Tue, 30 Jun 2026 00:00:00",
        "description": "An epic tale set across the streets of Lagos.",
        "featured": false,
        "cinema": true,
        "cinema_info": {
          "showing": "weekly",
          "shared_times": true,
          "shared_tickets": true,
          "per_day_times": true,
          "specific_dates": [],
          "days_with_times": [
            {
              "day": 7,
              "day_name": "Sunday",
              "times": [
                {
                  "id": 62,
                  "start": "10:15PM",
                  "end": "11:05PM",
                  "cinema_id": 24
                }
              ]
            },
            {
              "day": 6,
              "day_name": "Saturday",
              "times": [
                {
                  "id": 63,
                  "start": "7:40PM",
                  "end": "8:35PM",
                  "cinema_id": 24
                }
              ]
            }
          ],
          "times": [
            {
              "id": 62,
              "start": "10:15PM",
              "end": "11:05PM",
              "cinema_id": 24
            },
            {
              "id": 63,
              "start": "7:40PM",
              "end": "8:35PM",
              "cinema_id": 24
            }
          ],
          "locations": [
            {
              "id": 2,
              "name": "Filmhouse Cinemas Lekki (HQ)",
              "street": "4 Admiralty Way",
              "town": "Lekki Phase 1",
              "city": "Lagos",
              "country": "Nigeria",
              "is_headquarters": true,
              "times": [
                {
                  "id": 62,
                  "start": "10:15PM",
                  "end": "11:05PM",
                  "cinema_id": 24
                },
                {
                  "id": 63,
                  "start": "7:40PM",
                  "end": "8:35PM",
                  "cinema_id": 24
                }
              ],
              "days_with_times": []
            },
            {
              "id": 4,
              "name": "Filmhouse Cinemas Abuja",
              "street": "Plot 1019 Herbert Macaulay Way",
              "town": "Central Business District",
              "city": "Abuja",
              "country": "Nigeria",
              "is_headquarters": false,
              "times": [
                {
                  "id": 62,
                  "start": "10:15PM",
                  "end": "11:05PM",
                  "cinema_id": 24
                },
                {
                  "id": 63,
                  "start": "7:40PM",
                  "end": "8:35PM",
                  "cinema_id": 24
                }
              ],
              "days_with_times": []
            }
          ]
        },
        "address": {
          "street": "4 Admiralty Way",
          "town": "Lekki Phase 1",
          "city": "Lagos",
          "country": "Nigeria"
        },
        "image": [
          {
            "image": "https://syticks.com/storage/experiences/the-lagos-chronicles.jpg"
          }
        ],
        "business": {
          "id": "764c6a94-7bda-448e-a8af-35a5bb536d4",
          "name": "Filmhouse Cinemas",
          "photo": "https://syticks.com/storage/businesses/filmhouse.jpg",
          "slug": "filmhouse-cinemas",
          "type": "cinema"
        },
        "category": {
          "id": "56195f78-a14b-4dc2-b1b8-c3aa62a23f70",
          "slug": "cinema",
          "name": "Cinema"
        },
        "created_on": "Mon, 01 Jun 2026 01:19:49"
      }
    ],
    "next_page": null,
    "count": 1,
    "per_page": 20
  }
}
```

**Cinema Experience: Monthly, Location-Specific Times, Per-Day Times Enabled**

`shared_times: false`, `per_day_times: true`. `days_with_times` appears inside each location object. The top-level `cinema_info.days_with_times` is an empty array. Each entry in `days_with_times` uses a `"date"` string representing the day of the month (e.g., `"15"` means the 15th of every month).

```json
{
  "success": true,
  "status": 200,
  "message": "List of Experiences",
  "data": {
    "experiences": [
      {
        "id": "a34c959b-ceab-4211-9670-a6709e74216e",
        "title": "Gangs of Makoko",
        "start_date": "Fri, 30 Oct 2026 20:54:40",
        "end_date": "Fri, 30 Oct 2026 00:00:00",
        "description": "A raw and riveting story from the waterfront.",
        "featured": false,
        "cinema": true,
        "cinema_info": {
          "showing": "monthly",
          "shared_times": false,
          "shared_tickets": false,
          "per_day_times": true,
          "specific_dates": [],
          "days_with_times": [],
          "times": [
            {
              "id": 39,
              "start": "1:40PM",
              "end": "3:50PM",
              "cinema_id": 23
            },
            {
              "id": 40,
              "start": "2:40PM",
              "end": "4:40PM",
              "cinema_id": 23
            }
          ],
          "locations": [
            {
              "id": 2,
              "name": "Genesis Cinemas Lagos (HQ)",
              "street": "19 Adeniran Ogunsanya Street",
              "town": "Surulere",
              "city": "Lagos",
              "country": "Nigeria",
              "is_headquarters": true,
              "times": [
                {
                  "id": 39,
                  "start": "1:40PM",
                  "end": "3:50PM",
                  "cinema_id": 23
                }
              ],
              "days_with_times": [
                {
                  "date": "15",
                  "times": [
                    {
                      "id": 39,
                      "start": "1:40PM",
                      "end": "3:50PM",
                      "cinema_id": 23
                    }
                  ]
                }
              ]
            },
            {
              "id": 4,
              "name": "Genesis Cinemas Port Harcourt",
              "street": "3 Azikiwe Road",
              "town": "Old GRA",
              "city": "Port Harcourt",
              "country": "Nigeria",
              "is_headquarters": false,
              "times": [
                {
                  "id": 40,
                  "start": "2:40PM",
                  "end": "4:40PM",
                  "cinema_id": 23
                }
              ],
              "days_with_times": [
                {
                  "date": "20",
                  "times": [
                    {
                      "id": 40,
                      "start": "2:40PM",
                      "end": "4:40PM",
                      "cinema_id": 23
                    }
                  ]
                }
              ]
            }
          ]
        },
        "address": {
          "street": "19 Adeniran Ogunsanya Street",
          "town": "Surulere",
          "city": "Lagos",
          "country": "Nigeria"
        },
        "image": [
          {
            "image": "https://syticks.com/storage/experiences/gangs-of-makoko.jpg"
          }
        ],
        "business": {
          "id": "764c6a94-7bda-448e-a8af-35a5bb536d4",
          "name": "Genesis Cinemas",
          "photo": "https://syticks.com/storage/businesses/genesis.jpg",
          "slug": "genesis-cinemas",
          "type": "cinema"
        },
        "category": {
          "id": "56195f78-a14b-4dc2-b1b8-c3aa62a23f70",
          "slug": "cinema",
          "name": "Cinema"
        },
        "created_on": "Fri, 10 Apr 2026 12:37:32"
      }
    ],
    "next_page": null,
    "count": 1,
    "per_page": 20
  }
}
```

**Cinema Experience: Daily, Shared Times, Per-Day Times Enabled**

`showing: "daily"`, `shared_times: false`, `per_day_times: true`. `specific_dates` lists the exact calendar dates the movie shows. `days_with_times` appears inside each location. Each entry uses a full `"YYYY-MM-DD"` date.

```json
{
  "success": true,
  "status": 200,
  "message": "List of Experiences",
  "data": {
    "experiences": [
      {
        "id": "63c48790-789a-4d94-a30f-ce816ec6dfd0",
        "title": "Breath of Life",
        "start_date": "Mon, 31 Aug 2026 17:11:10",
        "end_date": "Mon, 31 Aug 2026 00:00:00",
        "description": "A moving drama about resilience and hope.",
        "featured": false,
        "cinema": true,
        "cinema_info": {
          "showing": "daily",
          "shared_times": false,
          "shared_tickets": false,
          "per_day_times": true,
          "specific_dates": [
            "2026-06-18",
            "2026-06-27"
          ],
          "days_with_times": [],
          "times": [
            {
              "id": 57,
              "start": "5:20PM",
              "end": "7:09PM",
              "cinema_id": 25
            },
            {
              "id": 58,
              "start": "9:45PM",
              "end": "11:09PM",
              "cinema_id": 25
            },
            {
              "id": 59,
              "start": "4:20PM",
              "end": "8:40PM",
              "cinema_id": 25
            },
            {
              "id": 60,
              "start": "8:35PM",
              "end": "10:45PM",
              "cinema_id": 25
            }
          ],
          "locations": [
            {
              "id": 2,
              "name": "Silverbird Cinemas Victoria Island (HQ)",
              "street": "133 Ahmadu Bello Way",
              "town": "Victoria Island",
              "city": "Lagos",
              "country": "Nigeria",
              "is_headquarters": true,
              "times": [
                {
                  "id": 57,
                  "start": "5:20PM",
                  "end": "7:09PM",
                  "cinema_id": 25
                },
                {
                  "id": 58,
                  "start": "9:45PM",
                  "end": "11:09PM",
                  "cinema_id": 25
                }
              ],
              "days_with_times": [
                {
                  "date": "2026-06-18",
                  "times": [
                    {
                      "id": 57,
                      "start": "5:20PM",
                      "end": "7:09PM",
                      "cinema_id": 25
                    }
                  ]
                },
                {
                  "date": "2026-06-27",
                  "times": [
                    {
                      "id": 58,
                      "start": "9:45PM",
                      "end": "11:09PM",
                      "cinema_id": 25
                    }
                  ]
                }
              ]
            },
            {
              "id": 4,
              "name": "Silverbird Cinemas Abuja",
              "street": "Aminu Kano Crescent",
              "town": "Wuse 2",
              "city": "Abuja",
              "country": "Nigeria",
              "is_headquarters": false,
              "times": [
                {
                  "id": 59,
                  "start": "4:20PM",
                  "end": "8:40PM",
                  "cinema_id": 25
                },
                {
                  "id": 60,
                  "start": "8:35PM",
                  "end": "10:45PM",
                  "cinema_id": 25
                }
              ],
              "days_with_times": [
                {
                  "date": "2026-06-18",
                  "times": [
                    {
                      "id": 59,
                      "start": "4:20PM",
                      "end": "8:40PM",
                      "cinema_id": 25
                    }
                  ]
                },
                {
                  "date": "2026-06-27",
                  "times": [
                    {
                      "id": 60,
                      "start": "8:35PM",
                      "end": "10:45PM",
                      "cinema_id": 25
                    }
                  ]
                }
              ]
            }
          ]
        },
        "address": {
          "street": "133 Ahmadu Bello Way",
          "town": "Victoria Island",
          "city": "Lagos",
          "country": "Nigeria"
        },
        "image": [
          {
            "image": "https://syticks.com/storage/experiences/breath-of-life.jpg"
          }
        ],
        "business": {
          "id": "764c6a94-7bda-448e-a8af-35a5bb536d4",
          "name": "Silverbird Cinemas",
          "photo": "https://syticks.com/storage/businesses/silverbird.jpg",
          "slug": "silverbird-cinemas",
          "type": "cinema"
        },
        "category": {
          "id": "56195f78-a14b-4dc2-b1b8-c3aa62a23f70",
          "slug": "cinema",
          "name": "Cinema"
        },
        "created_on": "Tue, 02 Jun 2026 11:39:55"
      }
    ],
    "next_page": null,
    "count": 1,
    "per_page": 20
  }
}
```

***

### Understanding Cinema Showtimes Structure

Cinema experiences can be configured in several ways depending on how the cinema business operates.

**Shared Times vs. Location-Specific Times**

When `shared_times: true`, all showtimes are listed in `cinema_info.times[]`, each location shows the movie at the same times, and each location's `times[]` array mirrors `cinema_info.times[]`.

When `shared_times: false`, `cinema_info.times[]` contains all times across all locations combined (for backward compatibility), and each location has its own unique showtimes in `location.times[]`.

**Per-Day Times**

When `per_day_times: true`, the `days_with_times` array groups showtimes by day or date. Where `days_with_times` appears depends on `shared_times`:

* `shared_times: true` and `per_day_times: true`: `days_with_times` is at the top level in `cinema_info`. Each location's `days_with_times` will be an empty array.
* `shared_times: false` and `per_day_times: true`: `days_with_times` is inside each location object. The top-level `cinema_info.days_with_times` will be an empty array.
* `per_day_times: false`: `days_with_times` is an empty array everywhere.

The structure of each entry in `days_with_times` varies by schedule type:

**Weekly** - uses `day` (integer 1-7, Monday to Sunday) and `day_name`:

```json
{
  "day": 6,
  "day_name": "Saturday",
  "times": [{ "id": 63, "start": "7:40PM", "end": "8:35PM", "cinema_id": 24 }]
}
```

**Monthly** - uses `"date"` as a string representing the day of the month:

```json
{
  "date": "15",
  "times": [{ "id": 39, "start": "1:40PM", "end": "3:50PM", "cinema_id": 23 }]
}
```

**Daily** - uses `"date"` as a full `"YYYY-MM-DD"` calendar date:

```json
{
  "date": "2026-06-18",
  "times": [{ "id": 57, "start": "5:20PM", "end": "7:09PM", "cinema_id": 25 }]
}
```

### **Daily Cinemas and Specific Dates**

When `showing: "daily"`, the `specific_dates` array lists the exact calendar dates the movie will screen (format: `"YYYY-MM-DD"`). This field is empty for weekly and monthly schedules.

Use the following table to determine the correct field to read based on the cinema configuration.

| `shared_times` | `per_day_times` | Where to read showtimes                      |
| -------------- | --------------- | -------------------------------------------- |
| `true`         | `false`         | `cinema_info.times`                          |
| `true`         | `true`          | `cinema_info.days_with_times`                |
| `false`        | `false`         | `location.times` for each location           |
| `false`        | `true`          | `location.days_with_times` for each location |

### **Backward Compatibility Note**

The top-level `cinema_info.times` array is always populated regardless of configuration. For cinemas where times are per-location, it contains all times across all locations combined. Integrations that already read `cinema_info.times` will continue to receive data.

**How to Display Showtimes**

```javascript
function getShowtimes(experience) {
  if (!experience.cinema || !experience.cinema_info) return null;

  const { shared_times, per_day_times, times, days_with_times, locations } = experience.cinema_info;

  if (shared_times) {
    return {
      type: 'shared',
      showtimes: per_day_times ? days_with_times : times,
      locations
    };
  } else {
    return {
      type: 'location_specific',
      locationShowtimes: locations.map(loc => ({
        location: loc.name,
        location_id: loc.id,
        city: loc.city,
        showtimes: per_day_times ? loc.days_with_times : loc.times
      }))
    };
  }
}
```

***

### Understanding Experience Types

**Regular Experiences (`cinema: false`)**

* One-time or limited-duration events with specific start and end dates
* Examples: concerts, parties, festivals, shows
* Do not have a `cinema_info` object

**Cinema Experiences (`cinema: true`)**

* Recurring movie showings that repeat over extended periods
* Always include a `cinema_info` object with showing frequency and locations
* Continue showing until the cinema removes them

**The `cinema` boolean field is the definitive indicator of experience type.**

***

### Multi-Location Cinema Handling

**Detecting Multi-Location Cinemas**

```javascript
function isMultiLocation(experience) {
  return experience.cinema && experience.cinema_info?.locations?.length > 1;
}
```

**Displaying Location Selector**

For multi-location cinemas, present a location selector to customers:

```javascript
function buildLocationSelector(experience) {
  if (!isMultiLocation(experience)) return null;

  return experience.cinema_info.locations.map(loc => ({
    id: loc.id,
    display: `${loc.name} - ${loc.city}`,
    isHQ: loc.is_headquarters,
    showtimes: experience.cinema_info.shared_times
      ? experience.cinema_info.times
      : loc.times
  }));
}
```

**Important Notes for Multi-Location**

1. **Always pass `cinema_location_id`**: When purchasing tickets for multi-location cinemas, include `cinema_location_id` to specify the customer's chosen location. Without it, the system defaults to headquarters.
2. **Location-specific showtimes**: If `shared_times: false`, read showtimes from `location.times[]` (or `location.days_with_times[]` when `per_day_times: true`) rather than from `cinema_info.times[]`.
3. **Headquarters indicator**: The `is_headquarters: true` flag helps identify the main location in your UI.

***

### Important Reminders

**End Date Validation**

**Use `end_date` to prevent customers from purchasing tickets for experiences that have already ended.**

```javascript
const now = new Date();
const endDate = new Date(experience.end_date);

if (now > endDate && !experience.cinema) {
  // Experience has ended - do not allow purchases
}
```

For cinema experiences, `end_date` may be far in the future or updated periodically as the showing period is extended.

**Pagination**

When fetching large lists, use pagination:

* Default `per_page`: 20
* Use the `next_page` value to fetch subsequent pages
* Example: `GET /api/v1/merpi/experience?page=2`

***

### Related Endpoints

* [**Get Cinema Experience Details**](https://sytickss-organization.gitbook.io/merpi-by-syticks/api-reference/cinema-ticketing-cinema-movies-available-days-purchase-etc/get-cinema-experience-details): Fetch complete details for a specific cinema movie
* [**Get Regular Experience Details**](https://sytickss-organization.gitbook.io/merpi-by-syticks/api-reference/experience-ticketing-events-parties-conference-comedy-and-more/get-experience-details): Fetch complete details for a specific event
* [**Get Experience Tickets**](https://sytickss-organization.gitbook.io/merpi-by-syticks/api-reference/experience-ticketing-events-parties-conference-comedy-and-more/get-ticket-categories-and-pricing): Retrieve ticket types and pricing for an experience
* [**Hold/Reserve Experience Tickets**](https://sytickss-organization.gitbook.io/merpi-by-syticks/api-reference/hold-reserve-ticket-inventory/hold-reserve-experience-inventory): Create holds before purchasing
* [**Buy Experience Tickets**](https://sytickss-organization.gitbook.io/merpi-by-syticks/api-reference/experience-ticketing-events-parties-conference-comedy-and-more/buy-experience-tickets): Complete purchase using reservation IDs


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://syticks.gitbook.io/merpi-by-syticks/api-reference/experience-ticketing-events-parties-conference-comedy-and-more/get-list-of-experiences.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
