Перейти к содержимому
+7 (391) 269-91-07
Войти

Синхронизация расписания и бронирований с KvestCity

Чтобы расписание ваших квестов было на KvestCity, а клиенты бронировали игры прямо у нас, подготовьте на своём сайте две ссылки для каждого квеста: одну — для расписания, другую — для приёма броней.

1Ссылка на расписание

На неё мы отправляем GET-запрос и в ответ ждём расписание в JSON минимум на 2 недели вперёд — список слотов.

GEThttps://your-site.ru/api/quests/timetable/4.json

Поля слота

ПолеТипЧто передавать
date* строка Дата игры в формате ГГГГ-ММ-ДД
time* строка Время начала, ЧЧ:ММ, 24 часа
is_free* true / false true — время можно забронировать. Для прошедшего времени — false
price* число Цена в рублях, целым числом
discount_price число Цена со скидкой в рублях
price_groups список Цены для разного числа игроков: пары persons и price
ваши поля любые Например, your_slot_id. Вернём их вам при бронировании

* — обязательные поля

price_groups можно не передавать, если доплаты устроены просто: во все дни одинаковые условия, доплата фиксированной суммой (или процентом) начиная с какого-то числа игроков, либо оплата за человека. Такие цены мы посчитаем сами.

Примеры ответа

У каждого времени одна цена.

[
  {
    "date": "2026-10-09",
    "time": "18:30",
    "is_free": true,
    "price": 3000,
    "your_slot_id": 124
  },
  {
    "date": "2026-10-09",
    "time": "20:00",
    "is_free": false,
    "price": 3500,
    "your_slot_id": 125
  }
]

Доплата начинается с 6-го игрока.

[
  {
    "date": "2026-10-09",
    "time": "18:30",
    "is_free": true,
    "price": 3000,
    "price_groups": [{"persons": 2, "price": 3000}, {"persons": 3, "price": 3000}, {"persons": 4, "price": 3000}, {"persons": 5, "price": 3000}, {"persons": 6, "price": 3500}],
    "your_slot_id": 124
  },
  {
    "date": "2026-10-09",
    "time": "20:00",
    "is_free": false,
    "price": 3500,
    "price_groups": [{"persons": 2, "price": 3500}, {"persons": 3, "price": 3500}, {"persons": 4, "price": 3500}, {"persons": 5, "price": 3500}, {"persons": 6, "price": 4000}],
    "your_slot_id": 125
  }
]

Рядом с обычной ценой — цена со скидкой.

[
  {
    "date": "2026-10-09",
    "time": "18:30",
    "is_free": true,
    "price": 3000,
    "discount_price": 2500,
    "your_slot_id": 124
  },
  {
    "date": "2026-10-09",
    "time": "20:00",
    "is_free": false,
    "price": 3500,
    "discount_price": 3000,
    "your_slot_id": 125
  }
]

Скидка уже учтена в price_groups.

[
  {
    "date": "2026-10-09",
    "time": "18:30",
    "is_free": true,
    "price": 3000,
    "discount_price": 2500,
    "price_groups": [{"persons": 2, "price": 2500}, {"persons": 3, "price": 2500}, {"persons": 4, "price": 2500}, {"persons": 5, "price": 2500}, {"persons": 6, "price": 3000}],
    "your_slot_id": 124
  },
  {
    "date": "2026-10-09",
    "time": "20:00",
    "is_free": false,
    "price": 3500,
    "discount_price": 3000,
    "price_groups": [{"persons": 2, "price": 3000}, {"persons": 3, "price": 3000}, {"persons": 4, "price": 3000}, {"persons": 5, "price": 3000}, {"persons": 6, "price": 3500}],
    "your_slot_id": 125
  }
]

2Ссылка для бронирования

На неё мы отправляем POST-запрос, когда клиент бронирует игру.

POSThttps://your-site.ru/api/quests/book

Какие поля придут

ПолеЧто приходит
first_nameИмя клиента
family_nameФамилия клиента
phoneТелефон клиента
emailEmail клиента
commentКомментарий клиента, может быть пустым
sourceОткуда бронь, всегда topkvestov.ru
dateДата игры, ГГГГ-ММ-ДД
timeВремя игры, ЧЧ:ММ
priceЦена игры в рублях
playersЧисло игроков, если клиент его указал
tariffВыбранный тариф, если у квеста есть тарифы
ваши поляВсе дополнительные поля из слота расписания

Поля приходят обычной формой (application/x-www-form-urlencoded), по договорённости — в JSON. Ответ ждём до 15 секунд.

Что ответить

Бронь считается принятой, только если в ответе "success": true. Если время занято — false и причина в message.

Бронь принята

{
  "success": true
}

Время уже занято

{
  "success": false,
  "message": "Указанное время занято"
}

Пример запроса

{
  "first_name": "Иван",
  "family_name": "Иванов",
  "phone": "+7 (111) 111-11-11",
  "email": "test@mail.ru",
  "comment": "Комментарий",
  "source": "topkvestov.ru",
  "date": "2026-10-09",
  "time": "18:30",
  "price": 3000,
  "players": 4,
  "your_slot_id": 124
}
Поможем с настройкой. Пришлите ссылки на pr@topkvestov.ru или позвоните: +7 (812) 385-58-42 (пн–пт, 9:00–17:00 по МСК).