Calendly v2

Provides integration with Calendly to retrieve users, event types, availability, scheduled events, invitees, and organization information. You can also create single-use scheduling links, mark invitees as no-shows, cancel scheduled events, and remove no-show markers.

Revision History

0.0.3.11 - Initial release.

Connection

Use a Connection to store the credentials used by all methods. Choose personal access token or OAuth authentication.

Property Type Description
AuthenticationType Enum Select PersonalAccessToken or OAuth.
PersonalAccessToken Masked Your Calendly personal access token. Available only for PersonalAccessToken authentication.
ClientId String Your Calendly OAuth application's client ID. Available only for OAuth.
ClientSecret Masked Your Calendly OAuth application's client secret. Available only for OAuth.
AccessToken Masked The OAuth access token obtained when you authorize the account. Available only for OAuth.
RefreshToken Masked The OAuth refresh token used for automatic renewal. Flowgear saves the replacement token after renewal. Available only for OAuth.
Scopes String Space-separated OAuth scopes. Defaults to users:read event_types:read availability:read scheduled_events:read scheduled_events:write organizations:read scheduling_links:write. Available only for OAuth.
TimeoutSeconds Integer Maximum duration of an API or OAuth token request, in seconds. Defaults to 30 and must be greater than zero.
PendingAuthorization Masked Hidden, automatically managed OAuth authorization state. You do not need to enter a value.

Setup Notes

Personal Access Token

  1. Obtain a Calendly personal access token for the account whose resources you want to access.
  2. Create a Calendly Connection and select PersonalAccessToken for AuthenticationType.
  3. Enter the token in PersonalAccessToken.
  4. Save and test the Connection.

A rejected personal access token must be replaced. The Node does not renew it automatically.

OAuth

  1. Create or reuse a Calendly web OAuth application with the scopes needed by your Workflow.
  2. Register the Flowgear OAuth callback URI with the application.
  3. Create a Calendly Connection and select OAuth for AuthenticationType.
  4. Enter ClientId and ClientSecret from the same OAuth application, and set Scopes as required.
  5. Authorize the Calendly account through the Connection's OAuth authorization flow.
  6. Save and test the Connection.

Flowgear obtains the access and refresh tokens during authorization and renews them automatically when needed. Complete authorization within 15 minutes. Starting another authorization attempt replaces the previous attempt.

If token exchange fails with invalid_client or HTTP 401, check that ClientId and ClientSecret belong to the same Calendly web OAuth application, then start a new authorization attempt. For invalid_grant, also check the registered callback URI. Successful browser approval alone does not confirm that the client secret is correct.

Connection testing retrieves the current user. The API and OAuth endpoints are fixed to Calendly. Switching authentication modes keeps personal access token and OAuth credentials separate; enter the credentials for the selected mode.

If you have an older personal access token Connection that stored its token in Access Token, enter that token in PersonalAccessToken and select PersonalAccessToken for AuthenticationType. OAuth token renewal also recognizes the older Access Token and Refresh Token fields, but use the AccessToken and RefreshToken Properties when configuring a Connection.

Methods

Select a template for the operation you want to run. The template supplies OperationId and describes the operation's Options, request fields, and Response fields. OperationId is a stable GUID represented as a String; use the value supplied by the template.

Existing Workflows that use Calendly operation names in OperationId remain supported. Reselect the corresponding template to use its GUID.

Provider field names remain unchanged. Use Options for route and query values and Items for request bodies. Only operations exposed by the selected method's templates are supported.

Retrieve

Retrieves Calendly resources. Supported operations include:

  • Retrieve the current user or a user by UUID.
  • List event types, retrieve an event type, list event-type hosts, or list available times for an event type.
  • Retrieve a user availability schedule, list user availability schedules, or list user busy times.
  • List scheduled events or retrieve a scheduled event.
  • List a scheduled event's invitees or retrieve an invitee.
  • Retrieve an invitee no-show marker.
  • Retrieve an organization, retrieve an organization membership, or list organization memberships.
Parameter Type Description
Connection Connection Calendly credentials.
OperationId String The identifier supplied by the selected retrieve template.
Options Object Route values and query filters for the selected operation. Can be omitted for operations without required options, such as retrieving the current user.
Return Type Description
Response Array One row per retrieved resource. Collection and pagination wrappers are removed. A single-resource response returns the object inside its resource wrapper.

Pagination is automatic. An empty collection succeeds with no response rows. A missing resource that returns HTTP 404 causes a failure.

The organization retrieval template includes id, Calendly's numeric organization identifier. This is distinct from the organization's API URI in uri. Organization membership templates include user.time_notation, the member's preferred time notation, such as 12h or 24h.

Create

Creates a single-use scheduling link or marks an invitee as a no-show. Select the corresponding template and supply one request object per Items row.

Parameter Type Description
Connection Connection Calendly credentials.
OperationId String The identifier supplied by the selected create template.
Options Object Route or query values accepted by the selected operation, if any.
Items Array Request objects for the selected operation. Scheduling links use max_event_count, owner, and owner_type. No-show markers use the invitee's API URI in invitee. Must be connected.
Return Type Description
Response Array Created-resource rows with Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request.

Creating a scheduling link does not book an event. Calendly rejects no-show creation for an event that has not started.

Cancel

Cancels a scheduled event identified by its UUID. You can optionally provide a cancellation reason.

Parameter Type Description
Connection Connection Calendly credentials.
OperationId String The identifier supplied by the scheduled-event cancellation template.
Options Object Must include uuid, the scheduled event's UUID.
Items Array Cancellation request objects with optional reason. Must be connected, even when no reason is supplied. Use one empty object to cancel without a reason.
Return Type Description
Response Array Cancellation response rows with Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request.

Delete

Removes an invitee no-show marker. This undoes the no-show designation; it does not delete the invitee or scheduled event.

Parameter Type Description
Connection Connection Calendly credentials.
OperationId String The identifier supplied by the no-show deletion template.
Options Object Must include uuid, the no-show marker's UUID.
Return Type Description
Response Array One response row with Flowgear.IsSuccess, Flowgear.Message, and the supplied Options in Flowgear.Request. Successful deletion has no provider response body.

Delete executes once per invocation and has no Items parameter.

Usage Notes

Options and Resource References

Supply only route and query fields exposed by the selected template. The Node manages count and page_token; supplying either manually causes a failure. Where pagination is supported, the Node requests pages of 100 records and retrieves subsequent pages as response rows are consumed.

When listing event types, scheduled events, or organization memberships, provide at least one nonempty String scope accepted by that operation's template, such as user, organization, or group. Use Calendly API resource URIs for URI fields, rather than public scheduling links. Use the resource UUID for a route field named uuid.

Available-time requests require future start_time and end_time values with a range of at most 31 days. Busy-time requests allow a range of at most seven days. In both cases, end_time must be later than start_time.

Sort syntax depends on the operation. For example, event types use name:asc, scheduled events use start_time:asc, and invitees use created_at:asc.

Response Handling

Retrieve rows contain Calendly resource fields without added Flowgear metadata. Write responses preserve provider fields and add:

  • Flowgear.IsSuccess: Whether the request succeeded.
  • Flowgear.Message: A success message or sanitized provider rejection details.
  • Flowgear.Request: The request object that produced the row, or Options for Delete.

The first provider request completes before response streaming begins. A failure on that first request fails the Node. Later write requests rejected with HTTP 400, 404, or 409 can return rows with Flowgear.IsSuccess set to false. Check this field when processing write results. Transport or authentication failures still abort execution.

Provider validation details are included in the first-request error or in a later failed row's Flowgear.Message. For example, a no-show request for a future event can report Event is not started yet. Later failed rows can also include title, message, details, and required_scopes when supplied by Calendly. Credentials are redacted from provider diagnostics, and the error message is limited to 500 characters.

For Create and Cancel, an empty connected Items array performs no writes. Later items are processed as their response rows are consumed. Options applies to all items in an invocation; invoke the Node separately when you need different route values, such as another event UUID.

OAuth HTTP 401 responses can trigger token renewal. HTTP 403 responses do not. Rate-limit responses can be retried using Calendly's retry delay, with at most two retries shared with token recovery. Transport failures and server errors are not automatically replayed.

Collection Fields

Nested arrays of objects remain structured. Fields declared as arrays of Strings or Integers use CSV Strings, including event-type answer choices and duration options. Quote values containing commas, quotes, newlines, or surrounding whitespace. An empty CSV String represents an empty array; "" represents one empty String. Null values remain null.

Supply integer collection values as comma-separated integers, for example, 15,30,60. Invalid integer values cause a failure.

Supported Scope

The Node does not expose event booking, event-type configuration writes, contacts, webhook management or listeners, data-compliance deletion, or administration operations.

Examples

List Your Event Types

  1. Select the current-user template on Retrieve and run it with your Connection.
  2. Copy the returned uri value.
  3. Select the list-event-types template on another Retrieve Node.
  4. Set Options.user to the returned URI and set Options.sort to name:asc if you want results sorted by name.
  5. Consume Response to process the event types. The Node handles pagination automatically.

For example, your Options object could be:

{
  "user": "https://api.calendly.com/users/00000000-0000-0000-0000-000000000000",
  "sort": "name:asc"
}

Replace the example URI with the URI returned for your account.

  1. Select the scheduling-link template on Create.
  2. Supply an Items row with the event type's API URI in owner, EventType in owner_type, and the String 1 in max_event_count.
  3. Read the scheduling URL from Response.booking_url.

For example, supply this request object as one Items row:

{
  "max_event_count": "1",
  "owner": "https://api.calendly.com/event_types/00000000-0000-0000-0000-000000000000",
  "owner_type": "EventType"
}

Replace owner with the URI of the event type you want to share.

Cancel a Scheduled Event

  1. Select the scheduled-event cancellation template on Cancel.
  2. Set Options.uuid to the event's UUID.
  3. Supply one Items row with an optional reason.

For example, supply this request object as one Items row:

{
  "reason": "The meeting is no longer required."
}

Supply {} as the row when no reason is needed. An empty array would perform no cancellation.

See also