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
- Obtain a Calendly personal access token for the account whose resources you want to access.
- Create a
CalendlyConnection and selectPersonalAccessTokenforAuthenticationType. - Enter the token in
PersonalAccessToken. - Save and test the Connection.
A rejected personal access token must be replaced. The Node does not renew it automatically.
OAuth
- Create or reuse a Calendly web OAuth application with the scopes needed by your Workflow.
- Register the Flowgear OAuth callback URI with the application.
- Create a
CalendlyConnection and selectOAuthforAuthenticationType. - Enter
ClientIdandClientSecretfrom the same OAuth application, and setScopesas required. - Authorize the Calendly account through the Connection's OAuth authorization flow.
- 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, orOptionsforDelete.
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
- Select the current-user template on
Retrieveand run it with your Connection. - Copy the returned
urivalue. - Select the list-event-types template on another
RetrieveNode. - Set
Options.userto the returned URI and setOptions.sorttoname:ascif you want results sorted by name. - Consume
Responseto 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.
Create a Single-Use Scheduling Link
- Select the scheduling-link template on
Create. - Supply an
Itemsrow with the event type's API URI inowner,EventTypeinowner_type, and the String1inmax_event_count. - 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
- Select the scheduled-event cancellation template on
Cancel. - Set
Options.uuidto the event's UUID. - Supply one
Itemsrow with an optionalreason.
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.