Skip to content
MyEscapeRoomDocs
Esc

    Type to search. Use the arrow keys and Enter to open a result.

    Discovery

    Geospatial venue/room search

    MethodPathWhat it does
    GET/api/rooms/searchSearch rooms by proximity, city, difficulty, group size, theme
    GET/api/rooms/{slug}Get a room and its venue by slug
    GET/api/rooms/{slug}/reviewsPlayer notes for a room, newest first
    GET/api/slots/availableAvailable slots for several rooms at once, grouped by room
    GET/api/statsCatalogue counts and the countries of live venues with active rooms
    GET/api/rooms/{slug}/availabilityAvailable slots for a room (optionally by day or window)
    GET/api/rooms/searchPublic

    Parameters

    NameInTypeDescription
    qquerystringFree text over room name, venue name, city and tags
    latquerynumberLatitude
    lngquerynumberLongitude
    radiusKmquerynumber
    cityquerystring
    countryquerystringISO 3166-1 alpha-2 code of the venue's country, like BE
    genresquerystringComma-separated
    difficultyquerystringComma-separated
    minPlayersqueryinteger
    maxPlayersqueryinteger
    themesquerystringComma-separated tags
    certifiedOnlyqueryboolean
    limitqueryinteger
    offsetqueryinteger

    Example request

    GET /api/rooms/search
    curl "https://myescaperoom.eu/api/rooms/search?lat=52.3676&lng=4.9041&radiusKm=10&genres=Horror&minPlayers=2"

    Responses

    StatusMeaning
    200Rooms with venue + distance

    Example response

    json
    {
      "items": [
        {
          "room": {
            "id": "room-01",
            "slug": "the-haunted-laboratory",
            "name": "The Haunted Laboratory"
          },
          "venue": {
            "city": "Amsterdam"
          },
          "distanceKm": 1.2
        }
      ],
      "total": 1
    }

    Get a room and its venue by slug#

    GET/api/rooms/{slug}Public

    Parameters

    NameInTypeDescription
    slugrequiredpathstring

    Responses

    StatusMeaning
    200Room + venue
    404Not found

    Player notes for a room, newest first#

    GET/api/rooms/{slug}/reviewsPublic

    Parameters

    NameInTypeDescription
    slugrequiredpathstring
    limitqueryinteger
    offsetqueryinteger

    Responses

    StatusMeaning
    200{ reviews, total }
    404Not found

    Available slots for several rooms at once, grouped by room#

    GET/api/slots/availablePublic

    One request for a whole shelf rather than one per room. Never returns a slot that has already started.

    Parameters

    NameInTypeDescription
    roomIdsrequiredquerystringComma-separated, max 60
    fromquerystringDefaults to now
    toquerystringDefaults to seven days out

    Responses

    StatusMeaning
    200{ slotsByRoom }

    Catalogue counts and the countries of live venues with active rooms#

    GET/api/statsPublic

    Responses

    StatusMeaning
    200{ rooms, venues, cities, countries: [{ code, name }] }. A venue's country in any public or embed response is an ISO 3166-1 alpha-2 code, like BE.

    Available slots for a room (optionally by day or window)#

    GET/api/rooms/{slug}/availabilityPublic

    A slot is booked whole by one group, so the group size filters nothing: whether a party fits is the room's minPlayers and maxPlayers. Days are YYYY-MM-DD in the venue's time zone; a value that is not a real day is a 400 INVALID_INPUT, never ignored. At most 200 slots come back. A venue may only offer the sessions a host has said they can work for its first few days ahead (its staffing window, set by the venue): inside it, a session with no host yet is left out of every availability answer, and a booking for one is refused with 409 SLOT_UNAVAILABLE. Further ahead every free session is listed.

    Parameters

    NameInTypeDescription
    slugrequiredpathstring
    datequerystringOne venue-local day.
    fromquerystringFirst venue-local day of a window, inclusive. Plain YYYY-MM-DD only, no time or offset.
    toquerystringDay the window ends, exclusive: that day is not included. Plain YYYY-MM-DD only, no time or offset. When given, the response also carries hasLater: whether any slot lies on or after that day.

    Responses

    StatusMeaning
    200{ slots, hasLater? }
    400INVALID_INPUT — a day that is not YYYY-MM-DD
    404ROOM_NOT_FOUND
    MyEscapeRoom Docs