Only show these results:

Meeting types in the Nylas Scheduler

The Nylas Scheduler enables you to book calendar events using the Nylas Calendar APIs. Calendar events can be single occurrences, recurring events, or a series of events that span a booking timespan.

This page discusses the different types of events that you can book, and the roles and configuration for each. This includes one-on-one, group, and collective meetings.

Scheduler roles

The following roles are available for Nylas Scheduler users:

  • Organizer: The meeting organizer. This user's account is authenticated and connected to the Nylas Scheduler.
  • Invitee: An external user who can book an event, receive invitations, and accept invitations.
  • Attendee: A meeting guest. Guests can be users from the organizer's team or company who have access to free/busy information.

One-on-one meetings

ℹ️ The one-on-one meeting type is the default when you create an event using Scheduler. To create a group or collective meeting, set the maximum number of attendees to more than one.

One-on-one meetings involve a single organizer and a single invitee.

A visual representation of a one-on-one meeting.

To create a one-on-one meeting, set the maximum number of attendees to one and set yourself as the Organizer, as below.

The Event Info dialog displaying configuration options for an event.

Group meetings

Group meetings are in beta: To enable group meetings, contact Nylas Support.

Group meetings involve a single organizer and multiple invitees and attendees. The organizer sets the event time and duration, and the maximum attendee capacity.

A visual representation of a group meeting.

To create a group meeting, set the maximum number of attendees to more than one and set yourself as the Organizer, as below.

The Event Info dialog displaying configuration options for an event.

Example: Create a group meeting

The following JSON sample demonstrates how to format a group meeting request.

{
// Add all organizers' access_tokens here.
"access_tokens": [
"<ACCESS_TOKEN_ORGANIZER>",
],
"config": {
"appearance": {
"color": "red",
"company_name": "Nylas",
"logo": "<YOUR LOGO>",
"privacy_policy_redirect": "",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "",
"thank_you_redirect": "",
"thank_you_text": "",
"thank_you_text_secondary": ""
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": false,
"available_days_in_future": 30,
"calendar_invite_to_guests": true,
"cancellation_policy": "",
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"interval_minutes": null,
"min_booking_notice": 5,
"min_buffer": 5,
"min_cancellation_notice": 10,
"name_field_hidden": false,
"opening_hours": [
// You can set specific opening hours for each organizer here.
{
"account_id": "<ORGANIZER_ACCOUNT_ID>",
"days": [
0,
1,
2,
3,
4
],
"end": "17:00",
"start": "09:00"
}
],
"scheduling_method": "round-robin-maximize-fairness"
},
// Specify which calendar to use for booking/availability by passing calendar IDs for each account.
"calendar_ids": {
"<ORGANIZER_ACCOUNT_ID>": {
"availability": [
"<ORGANIZER_1_CALENDAR_ID>"
],
"booking": "<ORGANIZER_1_CALENDAR_ID>"
}
},
"disable_emails": false,
"event": {
"capacity": 1, // Optional
"duration": 30,
"location": "TBD",
"title": "Group Meeting",
},
"locale": "en",
"page_hostname": "schedule.nylas.com",
"reminders": [{
"delivery_method": "email",
"delivery_recipient": "both",
"email_subject": "Reminder - meeting about to start",
"time_before_event": 15,
"webhook_url": ""
}],
"timezone": "America/Chicago"
},
"name": "Group Demo",
"slug": "group-kr-example"
}

Collective meetings

Collective meetings are in beta: To enable collective meetings, contact Nylas Support.

Collective meetings allow you to host an event with another organizer or an assigned attendee. They also allow attendees the option to pick a mutually available time slot for the meeting.

A visual representation of a collective meeting.

Example: Create a collective meeting

To create a collective meeting, make a request to the Nylas Scheduler API's /manage/pages endpoint. The following JSON samples demonstrate how to format a collective meeting request, and the expected response.

{
// Add all organizers' access_tokens here.
"access_tokens": [
"<ACCESS_TOKEN_ORGANIZER1>",
"<ACCESS_TOKEN_ORGANIZER2>",
"<ACCESS_TOKEN_ORGANIZER3>"
],
"config": {
"appearance": {
"color": "red",
"company_name": "{{Company_Name}}",
"logo": "<YOUR LOGO>",
"privacy_policy_redirect": "",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "",
"thank_you_redirect": "",
"thank_you_text": "",
"thank_you_text_secondary": ""
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": false,
"available_days_in_future": 30,
"calendar_invite_to_guests": true,
"cancellation_policy": "",
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"interval_minutes": null,
"min_booking_notice": 5,
"min_buffer": 5,
"min_cancellation_notice": 10,
"name_field_hidden": false,
"opening_hours": [
// You can set specific opening hours for each organizer here.
{
"account_id": "<ORGANIZER_1_ACCOUNT_ID>",
"days": ["M", "T", "W", "R", "F"],
"end": "17:00",
"start": "09:00"
},
{
"account_id": "<ORGANIZER_2_ACCOUNT_ID>",
"days": ["M", "T", "W", "R", "F"],
"end": "13:00",
"start": "09:00"
},
{
"account_id": "<ORGANIZER_3_ACCOUNT_ID>",
"days": ["T", "W", "R"],
"end": "17:00",
"start": "09:00"
}
],
// Set this to collective. Make sure Nylas Support has enabled this feature for you.
"scheduling_method": "collective"
},
// Specify which calendar to use for booking/availability by passing calendar IDs for each account.
"calendar_ids": {
"<ORGANIZER_1_ACCOUNT_ID>": {
"availability": ["<ORGANIZER_1_CALENDAR_ID>"],
"booking": "<ORGANIZER_1_CALENDAR_ID>"
},
"<ORGANIZER_2_ACCOUNT_ID>": {
"availability": ["<ORGANIZER_2_CALENDAR_ID>"],
"booking": "<ORGANIZER_2_CALENDAR_ID>"
},
"<ORGANIZER_3_ACCOUNT_ID>": {
"availability": ["<ORGANIZER_3_CALENDAR_ID>"],
"booking": "<ORGANIZER_3_CALENDAR_ID>"
}
},
"disable_emails": false,
"event": {
"capacity": 4, //Optional
"duration": 30,
"location": "TBD",
"title": "Meeting Title",
"participants": [
// Pass each of the users to include in every booking here (this should mirror the access_tokens array).
{
"confirmation_method": "calendar",
"email": "[email protected]",
"name": "Dorothy A",
"role": "organizer"
},
{
"confirmation_method": "calendar",
"email": "[email protected]",
"name": "Kat B",
"role": "organizer"
},
{
"confirmation_method": "calendar",
"email": "[email protected]",
"name": "Mae C",
"role": "organizer"
}
]
},
"locale": "en",
"page_hostname": "schedule.nylas.com",
"reminders": [{
"delivery_method": "email",
"delivery_recipient": "both",
"email_subject": "Reminder - meeting about to start",
"time_before_event": 15,
"webhook_url": ""
}],
"timezone": "America/Chicago"
},
"name": "{{SchedulerName}}",
"slug": "{{SchedulerSlug}}"
}
[
{
"account_id": "exampleaccountid1",
"calendar_id": "examplecalendaridA",
"end": 1634922900,
"host_name": "[email protected]",
"start": 1634920200
},
{
"account_id": "exampleaccountid2",
"calendar_id": "examplecalendaridB",
"end": 1634925600,
"host_name": "[email protected]",
"start": 1634922900
},
{
"account_id": "exampleaccountid3",
"calendar_id": "examplecalendaridC",
"end": 1634928300,
"host_name": "[email protected]",
"start": 1634925600
}
]

Configure attendee availability with Round Robin

ℹ️ Round Robin Availability is available for Core and Plus plans.

Round Robin meetings distribute bookings across a group of organizers. By using this with the Nylas Scheduler's Smart Integration configurations, you can find availability between multiple users.

A visual representation of a meeting that uses Round Robin to determine attendee availability.

Round Robin meetings can use two modes: Maximum Availability and Maximum Fairness. For more information, see Round Robin modes.

Round Robin: Maximum Availability

The Maximum Availability mode spreads event bookings evenly across calendars, based on calendar availability. This means that hosts who have more availability in their calendars will see more bookings.

A visual representation of the Round Robin Maximum Availability mode.

The following JSON samples show an example Maximum Availability request, and the expected response.

{
"duration_minutes": 15,
"start_time": 1647986400,
"end_time": 1647993600,
"interval_minutes": 5,
"emails": [
"[email protected]",
"[email protected]"
],
"free_busy": [],
"buffer": 30,
"round_robin": "max-availability",
"open_hours": [{
"emails": [
"[email protected]",
"[email protected]"
],
"days": [
0,
1,
2,
3,
4
],
"timezone": "America/Los_Angeles",
"start": "10:00",
"end": "16:00",
"object_type": "open_hours"
}]
}
{
"object": "availability",
"order": ["[email protected]", "[email protected]"],
"time_slots": [
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987300,
"end_time": 1647987300,
"object": "time_slot",
"start": 1647986400,
"start_time": 1647986400,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987600,
"end_time": 1647987600,
"object": "time_slot",
"start": 1647986700,
"start_time": 1647986700,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987900,
"end_time": 1647987900,
"object": "time_slot",
"start": 1647987000,
"start_time": 1647987000,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988200,
"end_time": 1647988200,
"object": "time_slot",
"start": 1647987300,
"start_time": 1647987300,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988500,
"end_time": 1647988500,
"object": "time_slot",
"start": 1647987600,
"start_time": 1647987600,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988800,
"end_time": 1647988800,
"object": "time_slot",
"start": 1647987900,
"start_time": 1647987900,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989100,
"end_time": 1647989100,
"object": "time_slot",
"start": 1647988200,
"start_time": 1647988200,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989400,
"end_time": 1647989400,
"object": "time_slot",
"start": 1647988500,
"start_time": 1647988500,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989700,
"end_time": 1647989700,
"object": "time_slot",
"start": 1647988800,
"start_time": 1647988800,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647990000,
"end_time": 1647990000,
"object": "time_slot",
"start": 1647989100,
"start_time": 1647989100,
"status": "free"
}
]
}

Round Robin: Maximum Fairness

The Maximum Fairness mode spreads event bookings evenly across calendars, regardless of calendar availability. This may result in participants seeing less availability when booking meetings.

A visual representation of the Round Robin Maximum Fairness mode.

The following JSON samples show an example Maximum Fairness request, and the expected response.

{
"duration_minutes": 15,
"start_time": 1647986400,
"end_time": 1647993600,
"interval_minutes": 5,
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"free_busy": [],
"buffer": 30,
"round_robin": "max-fairness",
"open_hours": [{
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"days": [
0,
1,
2,
3,
4
],
"timezone": "America/Los_Angeles",
"start": "10:00",
"end": "16:00",
"object_type": "open_hours"
}]
}
{
"object": "availability",
"order": ["[email protected]", "[email protected]"],
"time_slots": [
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987300,
"end_time": 1647987300,
"object": "time_slot",
"start": 1647986400,
"start_time": 1647986400,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987600,
"end_time": 1647987600,
"object": "time_slot",
"start": 1647986700,
"start_time": 1647986700,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647987900,
"end_time": 1647987900,
"object": "time_slot",
"start": 1647987000,
"start_time": 1647987000,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988200,
"end_time": 1647988200,
"object": "time_slot",
"start": 1647987300,
"start_time": 1647987300,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988500,
"end_time": 1647988500,
"object": "time_slot",
"start": 1647987600,
"start_time": 1647987600,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647988800,
"end_time": 1647988800,
"object": "time_slot",
"start": 1647987900,
"start_time": 1647987900,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989100,
"end_time": 1647989100,
"object": "time_slot",
"start": 1647988200,
"start_time": 1647988200,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989400,
"end_time": 1647989400,
"object": "time_slot",
"start": 1647988500,
"start_time": 1647988500,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647989700,
"end_time": 1647989700,
"object": "time_slot",
"start": 1647988800,
"start_time": 1647988800,
"status": "free"
},
{
"emails": ["[email protected]", "[email protected]"],
"end": 1647990000,
"end_time": 1647990000,
"object": "time_slot",
"start": 1647989100,
"start_time": 1647989100,
"status": "free"
}
]
}