Skip to main content
This topic introduces the Calendar product, including how to activate Calendar, the API capabilities exposed by Calendar, and how to integrate Calendar capabilities.

What is Calendar

DingTalk Calendar is deeply integrated with instant messaging. Colleagues can share events, easily start event meetings, and view important matters at a glance, enabling more efficient team collaboration and a great experience for employees. For more information, see DingTalk User Guide - Calendar.

Precise notifications for event meetings

Create a meeting event with one click. Invitations are sent directly to each attendee as chat messages, ensuring nothing is missed.

Unified event management

Connect with Alibaba Mail to view and edit events in a unified way within the DingTalk calendar. Update in one place and sync everywhere, so you never miss a meeting or schedule.

How to activate Calendar

On mobile: Tap Collaboration > Calendar, or tap Calendar in the toolbar. On desktop: Click Calendar.

Open capabilities overview

API list

Calendar provides a rich set of open APIs. Developers can use these APIs to integrate Calendar with their organization’s business systems.

Notes

  1. The New Event, Update Event, Add Event Attendees, and Delete Event Attendees APIs each support up to 500 attendees per operation, and a maximum of 5,000 attendees per event.
  2. To add or remove event attendees, we recommend using the Add Event Attendees and Delete Event Attendees APIs.

User access control

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
Create access controlAdd access control to the specified calendar.Create access control-
Delete access controlDelete access control.Delete access control-
Get access control listGet the calendar access control list.Get access control list-

Event

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
New EventCreate an event.New Event-
Delete EventDelete the specified event.Delete Event-
Update eventUpdate information about a single event.Update event-
Query event detailsQuery the details of a single event.Query event details-
Query event listQuery a user’s events within a given time range.Query event list-
Query event viewQuery the event view of a user’s primary DingTalk calendar within a time range.Query event view-

Event attendees

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
Add event attendeesAdd event attendees.Add event attendees
Delete event attendeesRemove the specified users from the event attendees.Delete event attendees-
Get event attendeesGet the list of event attendees.Get event attendees-
Set event invitation response statusSet the response status of an event invitation.Set event invitation response status-

Free/busy

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
Get user free/busy informationQuery the free/busy information of a specified user list within a given time range.Get user free/busy information-

Calendar

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
Query calendarCall this API to query a user’s calendar.Query calendar-
Subscribe to public calendarCall this API to subscribe to a public calendar.Subscribe to public calendar-
Unsubscribe from public calendarCall this API to unsubscribe from a public calendar.Unsubscribe from public calendar-
Create subscription calendarCall this API to create a subscription calendar.Create subscription calendar-
Query subscription calendar detailsCall this API to query the details of a subscription calendar.Query subscription calendar details-
Update subscription calendarCall this API to update information about a single subscription calendar.Update subscription calendar-
Delete subscription calendarCall this API to delete a subscription calendar.Delete subscription calendar-

Check-in

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
View check-in details of a single eventCall this API to view the check-in details of a single event.View check-in details of a single event-
Check in for a single eventCheck in for the specified event by event ID.Check in for a single event-
Check out for a single eventCheck out for the specified event by event ID.Check out for a single event-
View check-in details of a single eventQuery the list of checked-in and not-checked-in users for a single event by event ID.View check-out details of a single event-
Get check-in linkQuery the check-in link by calendar ID, user unionId, and event eventId.Get check-in link-
Get check-out linkQuery the check-out link by calendar ID, user unionId, and event eventId.Get check-out link-

Room

APIDescriptionNew specification (new Server API)Legacy specification (Server API)
Get room free/busy informationGet room free/busy information.Get room free/busy information-
Book a roomBook a room.Book a room-
Cancel a room bookingCancel a room booking.Cancel a room booking-

Callback event list

Calendar supports callback events triggered when a user makes event changes.

Tutorials

DingTalk provides example workflows for common scenarios such as creating and deleting events, and managing event attendees:

Glossary

Permission valueDescription
free_busy_readerCheck free/busy
title_readerView title
readerView details
writerCreate and edit

Resource definitions

AttributeTypeDescription
idStringThe globally unique ID of the event.
summaryStringEvent title.
descriptionStringEvent description.
startObjectEvent start time.
start.dateStringEvent start date in the format yyyy-MM-dd. Required for all-day events; must be empty for non-all-day events.
start.dateTimeStringEvent start time in ISO-8601 date-time format. Required for non-all-day events; must be empty for all-day events.
start.timeZoneStringTime zone of the event start time. Required for non-all-day events; must be empty for all-day events.
endObjectEvent end time.
end.dateStringEvent end date in the format yyyy-MM-dd. Required for all-day events; must be empty for non-all-day events.
end.dateTimeStringEvent end time in ISO-8601 date-time format. Required for non-all-day events; must be empty for all-day events.
end.timeZoneStringTime zone of the event end time. Must match the time zone of the start time, in TZ database name format. Required for non-all-day events; must be empty for all-day events.
isAllDayBooleanWhether the event is an all-day event.
recurrenceObjectEvent recurrence rule.
recurrence.patternObjectRecurrence pattern.
recurrence.pattern.typeStringRecurrence pattern type: - daily: Repeats every interval days. - weekly: Repeats on daysOfWeek every interval weeks. - absoluteMonthly: Repeats on the dayOfMonth day every interval months. - relativeMonthly: Repeats on daysOfWeek of the index week every interval months. - absoluteYearly: Repeats every interval years.
recurrence.pattern.dayOfMonthIntegerWhen type=absoluteMonthly, specifies the day of the month.
recurrence.pattern.daysOfWeekStringSpecifies the day of the week as a lowercase English word. Separate multiple values with commas.
recurrence.pattern.indexStringWhen type=relativeMonthly, specifies the week of the month: - first - second - third - fourth - last last indicates the last week of the month.
recurrence.pattern.intervalIntegerThe recurrence interval. The unit varies by type. For example, when type=daily, the interval is in days; when type=absoluteYearly, the interval is in years.
recurrence.rangeObjectRecurrence range.
recurrence.range.typeStringRecurrence range type: - noEnd: Never ends. - endDate: Ends on a specified date. - numbered: Ends after a specified number of occurrences.
recurrence.range.endDateStringThe end date of the recurrence.
recurrence.range.numberOfOccurrencesIntegerThe number of occurrences.
attendeesArrayList of event attendees.
attendees.idStringThe unionId of the user.
attendees.displayNameStringUser name.
attendees.responseStatusStringAttendee status: - needsAction: No action taken (default status). - accepted: Accepted. - declined: Declined. - tentative: Tentatively accepted.
attendees.selfBooleanWhether this is the current operating user.
organizerObjectEvent organizer.
organizer.idStringThe unionId of the organizer.
organizer.displayNameStringThe user name of the organizer.
organizer.responseStatusStringThe response status of the organizer.
organizer.selfBooleanWhether this is the current user.
locationObjectEvent location.
location.displayNameStringLocation name.
remindersArrayEvent reminders.
reminders.methodStringReminder method: - dingtalk: In-app reminder. - sms: SMS reminder. - phone: Phone reminder.
reminders.minutesStringHow many minutes before the event to send the reminder.
onlineMeetingInfoObjectCreate an online meeting along with the event.
onlineMeetingInfo.typeStringOnline meeting type: - dingtalk: DingTalk video meeting.
onlineMeetingInfo.conferenceIdStringMeeting ID.
onlineMeetingInfo.urlStringMeeting URL.
onlineMeetingInfo.extraInfoMapAdditional extended information.
seriesMasterIdStringThe master event ID of a recurring event. Empty for non-recurring events.
createTimeStringCreated time.
updateTimeStringUpdate time.
statusStringEvent status: - confirmed: Normal. - cancelled: Cancelled.