#Список бронирований
GET /v1/bookings
Возвращает бронирования за указанный диапазон дат. Начало и конец интервала обязательны — без них запрос вернётся с ошибкой. Записи вне переданного интервала в ответ не попадают.
#Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
dateFrom (query) |
string | number | да | — | Начало интервала. ISO 8601 ("2026-05-01T00:00:00Z") или Unix-секунды (1714521600) |
dateTo (query) |
string | number | да | — | Конец интервала. ISO 8601 или Unix-секунды |
limit (query) |
number | нет | 50 |
Количество записей (от 1 до 5000). Отрицательное значение или ноль → 400 INVALID_PARAMS |
offset (query) |
number | нет | 0 |
Смещение. Используйте с осторожностью — см. «Известные особенности» |
#Примеры
#curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/bookings?dateFrom=2024-01-01T00:00:00Z&dateTo=2026-12-31T23:59:59Z&limit=10" \
-H "X-Api-Key: YOUR_API_KEY"
#curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/bookings?dateFrom=2024-01-01T00:00:00Z&dateTo=2026-12-31T23:59:59Z&limit=10" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
#JavaScript — личный ключ
const params = new URLSearchParams({
dateFrom: '2024-01-01T00:00:00Z',
dateTo: '2026-12-31T23:59:59Z',
limit: '10',
})
const res = await fetch(`https://vibecode.bitrix24.tech/v1/bookings?${params}`, {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data, meta } = await res.json()
console.log(`Получено ${data.length} бронирований, hasMore: ${meta.hasMore}`)
#JavaScript — OAuth-приложение
const params = new URLSearchParams({
dateFrom: '2024-01-01T00:00:00Z',
dateTo: '2026-12-31T23:59:59Z',
limit: '10',
})
const res = await fetch(`https://vibecode.bitrix24.tech/v1/bookings?${params}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, meta } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив бронирований (поля каждой записи — см. Бронирования) |
meta.total |
number | Всегда 0 — общее количество не вычисляется. Для определения наличия дополнительных записей используйте meta.hasMore |
meta.hasMore |
boolean | true, если количество записей, подходящих под фильтр, превышает limit |
#Пример ответа
{
"success": true,
"data": [
{
"datePeriod": {
"from": {
"timestamp": 1723446900,
"timezone": "Europe/Moscow"
},
"to": {
"timestamp": 1723447800,
"timezone": "Europe/Moscow"
}
},
"description": null,
"id": 3,
"name": null,
"resourceIds": [1, 3]
},
{
"datePeriod": {
"from": {
"timestamp": 1741687200,
"timezone": "Europe/Kaliningrad"
},
"to": {
"timestamp": 1741690800,
"timezone": "Europe/Kaliningrad"
}
},
"description": null,
"id": 1,
"name": "Запись",
"resourceIds": [1]
},
{
"datePeriod": {
"from": {
"timestamp": 1752570000,
"timezone": "Europe/Kaliningrad"
},
"to": {
"timestamp": 1752571800,
"timezone": "Europe/Kaliningrad"
}
},
"description": null,
"id": 5,
"name": null,
"resourceIds": [1]
}
],
"meta": {
"total": 0,
"hasMore": true
}
}
#Пример ответа при ошибке
400 — не переданы обязательные параметры:
{
"success": false,
"error": {
"code": "MISSING_REQUIRED_PARAMS",
"message": "GET /v1/bookings requires dateFrom and dateTo query parameters (ISO 8601 datetime or Unix seconds). Example: ?dateFrom=2026-05-01T00:00:00Z&dateTo=2026-05-31T23:59:59Z."
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | MISSING_REQUIRED_PARAMS |
Не переданы dateFrom или dateTo |
| 400 | INVALID_DATE |
Значение dateFrom или dateTo не является ISO 8601 или Unix-секундами |
| 400 | INVALID_PARAMS |
limit меньше 1 или не является числом |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа booking |
| 401 | MISSING_API_KEY |
Заголовок X-Api-Key не передан |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.
#Известные особенности
offset работает ненадёжно на малых значениях. Значения offset меньше размера страницы не гарантируют пропуск записей. Для выборки бронирований за стандартный рабочий период (день, неделя, месяц) все записи помещаются в одну страницу при достаточном limit — предпочтительнее одного запроса с большим limit вместо серии запросов с малым offset.