Skip to main content
Calendly logo

Overview

Add Calendly to any ModuleX agent or workflow. Scheduling-platform integration for Calendly: events, invitees, event types, scheduling links, availability, organization members, groups, and webhook subscriptions. All against api.calendly.com.
Categories: Scheduling & Events · Productivity · Calendar · Productivity · Meetings · Auth: OAuth 2.0, Personal Access Token · Actions: 11

Authentication

OAuth 2.0 Authentication

Authenticate using Calendly OAuth 2.0 flow

Required Credentials

FieldDescriptionRequiredFormat
Client IDCalendly App Client IDYes-
Client SecretCalendly App Client SecretYes-

OAuth Configuration

  • Authorization URL: https://auth.calendly.com/oauth/authorize
  • Token URL: https://auth.calendly.com/oauth/token
  • Scopes: default

Available Actions

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "resource": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resource"
    }
  },
  "required": [
    "success"
  ],
  "title": "GetCurrentUserOutput",
  "type": "object"
}

Parameters

user
string
User URI to filter events. Defaults to the authenticated user.
organization
string
Organization URI to filter events
invitee_email
string
Filter by invitee email
status
string
Filter by event status (‘active’ or ‘canceled’)
min_start_time
string
Minimum start time (ISO 8601)
max_start_time
string
Maximum start time (ISO 8601)
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination
sort
string
Sort order (‘start_time:asc’ or ‘start_time:desc’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "events": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Events",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListEventsOutput",
  "type": "object"
}

Parameters

event_uuid
string
required
The UUID of the event to retrieve

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "resource": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resource"
    }
  },
  "required": [
    "success"
  ],
  "title": "GetEventOutput",
  "type": "object"
}

Parameters

event_uuid
string
required
The UUID of the event
email
string
Filter by invitee email
status
string
Filter by invitee status (‘active’ or ‘canceled’)
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination
sort
string
Sort order (‘created_at:asc’ or ‘created_at:desc’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "invitees": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Invitees",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListEventInviteesOutput",
  "type": "object"
}

Parameters

user
string
User URI to filter event types
organization
string
Organization URI to filter event types
active
boolean
Filter by active status
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination
sort
string
Sort order (‘name:asc’ or ‘name:desc’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "event_types": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Event Types",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListEventTypesOutput",
  "type": "object"
}

Parameters

invitee_uri
string
required
URI of the invitee to mark as no-show

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "resource": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resource"
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateInviteeNoShowOutput",
  "type": "object"
}

Parameters

user
string
required
URI or UUID of the user

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "schedules": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Schedules",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListUserAvailabilitySchedulesOutput",
  "type": "object"
}

Parameters

organization
string
Organization URI. Defaults to the authenticated user’s organization.
user
string
Filter by user URI
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "members": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Members",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListOrganizationMembersOutput",
  "type": "object"
}

Parameters

organization
string
required
Organization URI to list groups for
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "groups": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Groups",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListGroupsOutput",
  "type": "object"
}

Parameters

organization
string
required
Organization URI
scope
string
required
Scope (‘organization’ or ‘user’)
user
string
User URI (required if scope is ‘user’)
count
integer
Number of results to return (max 100) (Default: 20)
page_token
string
Token for pagination
sort
string
Sort order (‘created_at:asc’ or ‘created_at:desc’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page"
    },
    "webhooks": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Webhooks",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListWebhookSubscriptionsOutput",
  "type": "object"
}

Limits & Quotas

  • Auto-resolves missing user / organization filters via a side call to /users/me (same as legacy). This costs one extra request per call but matches Calendly’s expected pattern when the operator doesn’t pass a filter explicitly.
  • Count parameters are clamped to 100 (Calendly’s max page size).
  • owner / user parameters accept either a bare UUID or a full Calendly URI; bare UUIDs are promoted to the canonical https://api.calendly.com/<resource>/<uuid> form.
  • Failures (non-2xx, exceptions) surface as success=False + error.

Cal.com

ClickUp

Fellow