Setu Recipes: reusable workflows across every app.Browse templates

Integrations / Calendly

Calendly

See booked meetings, event types and open slots in Calendly, create single-use booking links and cancel meetings.

8 actions OAuth 2 6 read1 write1 destructive Calls api.calendly.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "calendly" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
users:readIdentify which Calendly account you connected
event_types:readList your Calendly event types
scheduled_events:readRead the meetings booked with you and their invitees
scheduled_events:writeCancel meetings booked with you
availability:readSee the open booking slots of your event types
scheduling_links:writeCreate single-use booking links for your event types

Actions

Cancel scheduled eventdestructivecalendly.cancel_scheduled_eventCancel a booked Calendly meeting. The invitees are notified by Calendly, and a reason can be included.

Needs scope: scheduled_events:write

InputTypeDescription
event_uuidstringRequiredEvent UUID: the last part of the event URI
reasonstringOptionalOptional reason shown to the invitees
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.cancel_scheduled_event",
  input: {
    "event_uuid": "<event_uuid>"
  },
  confirm: true,
});
Get current userreadcalendly.get_current_userGet the connected Calendly user: their URI (needed by the list actions), name, email, time zone, scheduling page and organization URI.

Needs scope: users:read

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.get_current_user",
  input: {},
});
Get scheduled eventreadcalendly.get_scheduled_eventGet one booked Calendly meeting by its UUID (the last part of its URI): time, status, location and hosts.

Needs scope: scheduled_events:read

InputTypeDescription
event_uuidstringRequiredEvent UUID: the last part of the event URI, for example GBGBDCAADAEDCRZ2
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.get_scheduled_event",
  input: {
    "event_uuid": "<event_uuid>"
  },
});
List event inviteesreadcalendly.list_event_inviteesList the people who booked a Calendly meeting, with their names, emails, answers and status.

Needs scope: scheduled_events:read

InputTypeDescription
event_uuidstringRequiredEvent UUID: the last part of the event URI
statusstringOptionalFilter by status
countintegerOptionalNumber of results per page (default 20, maximum 100)
page_tokenstringOptionalPage token from a previous reply to fetch the next page
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.list_event_invitees",
  input: {
    "event_uuid": "<event_uuid>"
  },
});
List available timesreadcalendly.list_event_type_available_timesList the open booking slots of an event type within a date range of up to 31 days, starting no earlier than now.

Needs scope: availability:read

InputTypeDescription
event_typestringRequiredEvent type URI from list_event_types
start_timestringRequiredStart of the range in UTC, not in the past, for example 2020-01-02T20:00:00.000000Z
end_timestringRequiredEnd of the range in UTC, at most 31 days after start_time
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.list_event_type_available_times",
  input: {
    "event_type": "<event_type>",
    "start_time": "<start_time>",
    "end_time": "<end_time>"
  },
});
List event typesreadcalendly.list_event_typesList a user's Calendly event types (the meeting templates people can book), with their URIs, durations and booking links.

Needs scope: event_types:read

InputTypeDescription
userstringRequiredUser URI from get_current_user
activebooleanOptionaltrue for active event types only, false for inactive
countintegerOptionalNumber of results per page (default 20, maximum 100)
page_tokenstringOptionalPage token from a previous reply to fetch the next page
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.list_event_types",
  input: {
    "user": "<user>"
  },
});
List scheduled eventsreadcalendly.list_scheduled_eventsList meetings booked with a user through Calendly, filtered by status, start-time range or invitee email. Returns event URIs, times and locations.

Needs scope: scheduled_events:read

InputTypeDescription
userstringRequiredUser URI from get_current_user
statusstringOptionalFilter by status
min_start_timestringOptionalOnly events starting at or after this UTC time, for example 2020-01-02T03:04:05.678123Z
max_start_timestringOptionalOnly events starting at or before this UTC time
invitee_emailstringOptionalOnly events with this invitee
countintegerOptionalNumber of results per page (default 20, maximum 100)
page_tokenstringOptionalPage token from a previous reply to fetch the next page
TypeScript
await setu.execute({
  userId: "user_1",
  action: "calendly.list_scheduled_events",
  input: {
    "user": "<user>"
  },
});