# Calendar resources

Calendar resources are named objects booked in the Bitrix24 calendar, such as a hall or a meeting room. Through the API you create, rename and delete resources and get their occupied intervals by ID.

Bitrix24 API: `calendar.resource.*`
Scope: `calendar`

## Operations

- [Create calendar resource](./calendar-resources/create.md) — `POST /v1/calendar-resources`
- [List calendar resources](./calendar-resources/list.md) — `GET /v1/calendar-resources`
- [Rename calendar resource](./calendar-resources/update.md) — `PATCH /v1/calendar-resources/:id`
- [Delete calendar resource](./calendar-resources/delete.md) — `DELETE /v1/calendar-resources/:id`
- [Calendar resource fields](./calendar-resources/fields.md) — `GET /v1/calendar-resources/fields`
- [Resource bookings](./calendar-resources/bookings.md) — `GET /v1/calendar-resources/bookings`

## Key fields

| Field | Description |
|------|---------|
| `id` | Resource ID. List: [`GET /v1/calendar-resources`](./calendar-resources/list.md) |
| `name` | Resource name — the only field that create and rename accept |
| `createdBy` | ID of the employee who created the resource. List: [`GET /v1/users`](/docs/entities/users) |

Full field list — [`GET /v1/calendar-resources/fields`](./calendar-resources/fields.md).

## What to know before you start

1. **There is no get-by-ID endpoint.** Find a resource in the [list](./calendar-resources/list.md): `GET /v1/calendar-resources/:id` returns `404 ROUTE_NOT_FOUND`. Create returns only `id`; rename returns the whole resource: `id`, `name`, `createdBy`.
2. **The list cannot be filtered or sorted.** A request with `filter` is rejected with `400 UNSUPPORTED_FILTER`; a request with `order` or `sort` is rejected with `400 INVALID_SORT_FIELD`. Pick the resource you need by `name` on your side.
3. **A calendar resource is not an online booking resource.** [Booking resources](/docs/entities/booking-resources) are a separate entity with their own IDs. The `resourceIds` parameter in [resource bookings](./calendar-resources/bookings.md) works only with IDs from the calendar resource list.
4. **Batch covers only create and read.** `POST /v1/calendar-resources/batch` accepts the `list` and `create` actions. The `update` and `delete` actions are rejected with `400 ACTION_NOT_SUPPORTED` — rename and delete resources with separate calls.

## Typical scenario

1. Get the resources: [`GET /v1/calendar-resources`](./calendar-resources/list.md).
2. Check when they are busy over a period: [`GET /v1/calendar-resources/bookings?resourceIds=57,59&from=2026-10-01&to=2026-11-01`](./calendar-resources/bookings.md).
3. Add a new resource or rename an existing one: [`POST /v1/calendar-resources`](./calendar-resources/create.md) / [`PATCH /v1/calendar-resources/:id`](./calendar-resources/update.md).

## Limits

| Limit | Value |
|-------|----------|
| Records in the list per call | up to 5000 (`limit`), 50 by default |
| List pagination | `offset` and `limit` set the window `[offset, offset + limit)` over the whole resource list |
| Bookings | all intervals for the period come in one response, without pagination |
| Batch calls | `list` and `create` in `POST /v1/calendar-resources/batch` |
| Rate limit | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Calendar events](/docs/entities/calendar-events)
- [Calendar sections](/docs/entities/calendar-sections)
- [Attendee availability](/docs/calendar/accessibility)
- [Calendar](/docs/calendar)
- [Entity API](/docs/entity-api)
