{
    "openapi": "3.1.0",
    "info": {
        "title": "Enjoyvent Public Events API",
        "version": "1.0.0",
        "summary": "Read-only search over the events, sessions, venues and ticket availability listed on Enjoyvent.",
        "description": "Enjoyvent lists concerts, theatre, stand-up, festivals, workshops, children's events and more across Türkiye's 81 provinces and beyond. This API answers what is on, where and when, and whether tickets are available.\n\nPublished events only, sessions still to come only. One result per event: a tour of many dates is one result carrying its matching dates.\n\nPrices and availability are live for events sold on Enjoyvent (`sold_on_enjoyvent: true`). Events sold on other ticketing sites are listed with `availability.status: \"unknown\"` and no price — never as free.\n\nDay names (today, this_weekend, ...) are read in the city's own time — Europe/Istanbul in Türkiye. Times are ISO 8601 with the venue's UTC offset.\n\nNo authentication. Rate limited per client address; answers are cached for a minute or two. Please link people to the `url` / `ticket_url` of a result.\n\nAlso available as an MCP server (Streamable HTTP) for AI assistants: https://api.enjoyvent.com/mcp",
        "termsOfService": "https://enjoyvent.com/tr/kullanim-kosullari",
        "contact": {
            "name": "Enjoyvent",
            "url": "https://enjoyvent.com"
        }
    },
    "servers": [
        {
            "url": "https://api.enjoyvent.com/public/v1"
        }
    ],
    "paths": {
        "/events": {
            "get": {
                "operationId": "searchEvents",
                "summary": "Search upcoming events",
                "description": "Events by place, kind, date, price and keyword. Examples: city=istanbul&date=this_weekend; district=kadikoy&category=konser&date=today; city=ankara&family=true; city=izmir&free=true.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Words from the event or artist name, e.g. \"Duman\", \"Hamlet\", \"Cem Yılmaz\". Leave out to list everything matching the other filters.",
                        "schema": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    {
                        "name": "city",
                        "in": "query",
                        "required": false,
                        "description": "City (province) name or slug, e.g. \"İstanbul\", \"istanbul\", \"Ankara\", \"izmir\". Any of Türkiye's 81 provinces and the other cities Enjoyvent lists.",
                        "schema": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    {
                        "name": "district",
                        "in": "query",
                        "required": false,
                        "description": "District (ilçe) name or slug, e.g. \"Kadıköy\", \"beyoglu\", \"Çankaya\". Narrower than city; give one or the other.",
                        "schema": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "Kind of event, as a slug or a name in Turkish or English: \"konser\"/\"concert\", \"tiyatro\"/\"theatre\", \"stand-up\", \"festival\", \"atolye\"/\"workshop\", \"cocuk\"/\"kids\", \"opera\", \"bale\", \"sergi\", ... get_event_categories lists them all.",
                        "schema": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "When: one of today, tomorrow, this_weekend, this_week, next_week, next_weekend (read in Türkiye's time, Europe/Istanbul, or the city's own), or a single day as YYYY-MM-DD. Do not combine with date_from/date_to.",
                        "schema": {
                            "type": "string",
                            "pattern": "^(today|tomorrow|this_weekend|this_week|next_week|next_weekend|\\d{4}-\\d{2}-\\d{2})$"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "First day of a date range, YYYY-MM-DD (inclusive). Use with date_to.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Last day of a date range, YYYY-MM-DD (inclusive), at most 366 days after date_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "min_price",
                        "in": "query",
                        "required": false,
                        "description": "Lowest ticket price, in the listed country's currency (TRY in Türkiye). Only events sold on Enjoyvent have known prices.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "max_price",
                        "in": "query",
                        "required": false,
                        "description": "Highest ticket price, in the listed country's currency (TRY in Türkiye). Only events sold on Enjoyvent have known prices.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "free",
                        "in": "query",
                        "required": false,
                        "description": "Only events with a free ticket. Events whose price is unknown are never counted as free.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "family",
                        "in": "query",
                        "required": false,
                        "description": "Only children's and family events.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "available",
                        "in": "query",
                        "required": false,
                        "description": "Only events with tickets on sale on Enjoyvent right now.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "venue",
                        "in": "query",
                        "required": false,
                        "description": "Venue name or slug, e.g. \"Zorlu PSM\". get_events_by_venue is better for \"what is on at X\".",
                        "schema": {
                            "type": "string",
                            "maxLength": 150
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "soonest: by date (default). popular: most popular first.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "soonest",
                                "popular"
                            ],
                            "default": "soonest"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50,
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50,
                            "default": 20
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A page of events, each with its matching sessions.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/events/{event}": {
            "get": {
                "operationId": "getEventDetails",
                "summary": "One event: description, every upcoming session, venues, artists, tickets",
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "required": true,
                        "description": "The event's slug or numeric id.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The event.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/events/{event}/sessions": {
            "get": {
                "operationId": "getEventSessions",
                "summary": "An event's sessions with their prices and ticket availability",
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "required": true,
                        "description": "The event's slug or numeric id.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The sessions.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/sessions/{session}": {
            "get": {
                "operationId": "getSessionAvailability",
                "summary": "One session's prices and ticket availability",
                "parameters": [
                    {
                        "name": "session",
                        "in": "path",
                        "required": true,
                        "description": "The session id a search or event answer gave.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The session.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/venues/{venue}/events": {
            "get": {
                "operationId": "getEventsByVenue",
                "summary": "Upcoming events at a venue (and its halls)",
                "parameters": [
                    {
                        "name": "venue",
                        "in": "path",
                        "required": true,
                        "description": "The venue's slug or name.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "When: one of today, tomorrow, this_weekend, this_week, next_week, next_weekend (read in Türkiye's time, Europe/Istanbul, or the city's own), or a single day as YYYY-MM-DD. Do not combine with date_from/date_to.",
                        "schema": {
                            "type": "string",
                            "pattern": "^(today|tomorrow|this_weekend|this_week|next_week|next_weekend|\\d{4}-\\d{2}-\\d{2})$"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50,
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50,
                            "default": 20
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The venue and a page of its events.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/categories": {
            "get": {
                "operationId": "getEventCategories",
                "summary": "Kinds of event, the busiest cities, and the search filters",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Categories, cities and filters.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/cities": {
            "get": {
                "operationId": "getCities",
                "summary": "Cities with upcoming events",
                "parameters": [
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "description": "Country slug or ISO code, e.g. \"turkiye\" or \"TR\".",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The cities, busiest first.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/cities/{city}/districts": {
            "get": {
                "operationId": "getDistricts",
                "summary": "A city's districts (ilçe) with their upcoming events",
                "parameters": [
                    {
                        "name": "city",
                        "in": "path",
                        "required": true,
                        "description": "The city's slug or name.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "Language of category names and of the Enjoyvent page URLs returned. Event titles are as the organiser wrote them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "tr",
                                "en",
                                "de",
                                "es",
                                "ru",
                                "el"
                            ],
                            "default": "tr"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The districts.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Error": {
                "type": "object",
                "properties": {
                    "error": {
                        "type": "object",
                        "properties": {
                            "code": {
                                "type": "string",
                                "enum": [
                                    "invalid_parameter",
                                    "unknown_value",
                                    "not_found",
                                    "rate_limited"
                                ]
                            },
                            "message": {
                                "type": "string"
                            },
                            "details": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "string"
                                }
                            }
                        },
                        "required": [
                            "code",
                            "message"
                        ]
                    }
                }
            }
        },
        "responses": {
            "Error": {
                "description": "What could not be answered, and how to ask instead.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        }
    }
}