> 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

This endpoint returns list of experiences and it also includes cinema movies.

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
