For AI agents: markdown of this page — /docs-content-en/entities/calendar-events/list.md documentation index — /llms.txt

List events

GET /v1/calendar-events

Returns calendar events for a fixed period around the current date: from one month back to three months ahead.

Parameters

Parameter Type Req. Default Description
type (query) string yes Calendar type: user, group, company_calendar
ownerId (query) number yes Calendar owner ID: employee (GET /v1/users) or workgroup
limit (query) number no 50 Result window size — up to 5000 occurrences
offset (query) number no 0 Window start: skip the first N occurrences of the sorted set

Examples

curl — personal key

Terminal
curl "https://vibecode.bitrix24.com/v1/calendar-events?type=user&ownerId=1&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/calendar-events?type=user&ownerId=1&limit=10" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const params = new URLSearchParams({ type: 'user', ownerId: '1', limit: '10' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/calendar-events?${params}`, {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
console.log(`Found ${meta.total} events`)

JavaScript — OAuth application

javascript
const params = new URLSearchParams({ type: 'user', ownerId: '1', limit: '10' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/calendar-events?${params}`, {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data, meta } = await res.json()

Response fields

Field Type Description
success boolean Always true on success
data array Array of events (all fields — see Event fields)
meta.total number Total number of occurrences in the set. Recurring events are expanded — one row per occurrence
meta.hasMore boolean true while records remain beyond the offset + limit window

The card URL for any event in the data array depends on the calendar type:

type URL
user https://<portal>.bitrix24.com/company/personal/user/<ownerId>/calendar/?EVENT_ID=<id>&EVENT_DATE=<dd.mm.yyyy>
group https://<portal>.bitrix24.com/workgroups/group/<ownerId>/calendar/?EVENT_ID=<id>&EVENT_DATE=<dd.mm.yyyy>
company_calendar https://<portal>.bitrix24.com/calendar/?EVENT_ID=<id>&EVENT_DATE=<dd.mm.yyyy>

<dd.mm.yyyy> — the event start date (the from field) in dot-separated "day.month.year" format. <portal> — your Bitrix24 portal domain. Access is limited by the employee's permissions in Bitrix24.

Response example

JSON
{
  "success": true,
  "data": [
    {
      "id": 7773,
      "parentId": 7773,
      "active": true,
      "deleted": false,
      "type": "user",
      "ownerId": 1,
      "name": "Team call",
      "from": "2026-06-10T10:00:00+00:00",
      "to": "2026-06-10T11:00:00+00:00",
      "skipTime": false,
      "durationSeconds": 3600,
      "createdBy": 1,
      "dateCreate": "06/05/2026 09:12:00 am",
      "updatedAt": "06/05/2026 09:12:00 am",
      "description": "Weekly sync",
      "accessibility": "busy",
      "importance": "normal",
      "isMeeting": false,
      "meetingStatus": "H",
      "meetingHost": 1,
      "sectionId": 3,
      "attendeeList": [
        { "id": 1, "entryId": "7773", "status": "H" }
      ]
    }
  ],
  "meta": {
    "total": 1,
    "hasMore": false
  }
}

Error response example

400 — the required type and ownerId parameters are missing:

JSON
{
  "success": false,
  "error": {
    "code": "MISSING_REQUIRED_PARAMS",
    "message": "GET /v1/calendar-events requires query parameters: type, ownerId. Example: GET /v1/calendar-events?type=...&ownerId=..."
  }
}

Errors

HTTP Code Description
400 MISSING_REQUIRED_PARAMS type and/or ownerId is missing
403 SCOPE_DENIED The API key does not have the calendar scope
401 TOKEN_MISSING The API key has no configured tokens
429 RATE_LIMITED Rate limit exceeded: 300 requests per minute per portal, all API keys of the portal share one limit. The exact value arrives in the x-ratelimit-limit header (the cap is divided across replicas). Retry after the delay in the Retry-After header

Full list of common API errors — Errors.

Known specifics

The whole range comes as one set. Bitrix24 delivers the requested period as a single unpaginated array. The platform sorts it deterministically — by the event start from, ties broken by id, then by occurrenceIndex — and returns the window from offset to offset + limit. The element order is reproducible across requests. Windows with different offset values do not overlap and together cover the whole set.

Recurring events. An event with the rrule field is returned in the list as a separate item for each occurrence of the series that falls within the selection window. All items share the same id and parentId, differing in from / to and occurrenceIndex — the id + occurrenceIndex pair uniquely identifies a row of the set.

Timezone offset across the set. The instant in from and to is exact in every row, but the offset suffix is not the same across all rows of the response — occurrences of a recurring series carry the offset in effect at the start of the series. Parse the values into instants and convert them to the timezone you need. Hours and minutes read straight from the string can differ from the time the employee sees in the calendar.

Change tracking. The version field is a monotonic counter of changes to the event, independent of the account's regional settings. Request the list with select=id,version, compare the pairs against your snapshot and re-read the changed events. Both fields are described in Event fields.

See also