Agent skill
calendly
Calendly scheduling API. Use when user mentions "Calendly", "calendly.com", "schedule a meeting", "booking link", "event types", or asks about interview scheduling.
Install this agent skill to your Project
npx add-skill https://github.com/vm0-ai/vm0-skills/tree/main/calendly
SKILL.md
Calendly API
Read scheduling data, list event types, retrieve scheduled meetings, and access invitee information via the Calendly API v2.
Official docs:
https://developer.calendly.com/api-docs/
When to Use
- List available event types (e.g., 30-min intro call, 60-min interview)
- Retrieve scheduled meetings for a user or organization
- Get invitee details for a specific event
- Set up webhook subscriptions to receive real-time booking notifications
- Look up user and organization details
Prerequisites
Alternatively, generate a Personal Access Token from your Calendly account under Integrations > API & Webhooks, then export it:
export CALENDLY_TOKEN=your_personal_access_token
Note: Calendly's API is primarily read-only — you can retrieve scheduling data but cannot directly create bookings via API. Share Calendly scheduling links to let users self-book.
Important: When using
$CALENDLY_TOKENin commands that contain a pipe (|), always wrap the curl command inbash -c '...'to avoid silent variable clearing — a known Claude Code issue.
Core APIs
Get Current User
Returns the authenticated user's URI and organization URI — needed for subsequent calls:
bash -c 'curl -s "https://api.calendly.com/users/me" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '{uri, name, email, organization: .current_organization}'
List Event Types
List all event types for the current user. First get your user URI from the step above.
Replace <user-uri> with the full URI from GET /users/me (e.g., https://api.calendly.com/users/AAAAAAA):
bash -c 'curl -s "https://api.calendly.com/event_types?user=<user-uri>" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '[.collection[] | {uri, name, duration, active, scheduling_url}]'
List Scheduled Events
List upcoming scheduled events for a user. Replace <user-uri> with your user URI:
bash -c 'curl -s "https://api.calendly.com/scheduled_events?user=<user-uri>&status=active&count=20" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '[.collection[] | {uri, name, status, start_time, end_time, location: .location.type}]'
List Past Scheduled Events
Replace <user-uri> with your user URI:
bash -c 'curl -s "https://api.calendly.com/scheduled_events?user=<user-uri>&status=canceled&count=20" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '[.collection[] | {uri, name, status, start_time}]'
Get a Scheduled Event
Replace <event-uuid> with the UUID portion from a scheduled event URI:
bash -c 'curl -s "https://api.calendly.com/scheduled_events/<event-uuid>" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '{uri, name, status, start_time, end_time, invitees_counter}'
List Invitees for an Event
Get all invitees (attendees) for a specific scheduled event. Replace <event-uuid>:
bash -c 'curl -s "https://api.calendly.com/scheduled_events/<event-uuid>/invitees" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '[.collection[] | {uri, name, email, status, created_at}]'
Create Webhook Subscription
Receive real-time notifications when events are booked or canceled. Replace <organization-uri> with your org URI from GET /users/me.
Write to /tmp/calendly_request.json:
{
"url": "https://your-server.com/webhooks/calendly",
"events": ["invitee.created", "invitee.canceled"],
"organization": "<organization-uri>",
"scope": "organization"
}
bash -c 'curl -s -X POST "https://api.calendly.com/webhook_subscriptions" --header "Authorization: Bearer $CALENDLY_TOKEN" --header "Content-Type: application/json" -d @/tmp/calendly_request.json' | jq '{uri, callback_url: .resource.callback_url, events: .resource.events}'
List Webhook Subscriptions
bash -c 'curl -s "https://api.calendly.com/webhook_subscriptions?organization=<organization-uri>&scope=organization" --header "Authorization: Bearer $CALENDLY_TOKEN"' | jq '[.collection[] | {uri, callback_url, events, state}]'
Delete Webhook Subscription
Replace <webhook-uuid> with the UUID from the webhook URI:
bash -c 'curl -s -X DELETE "https://api.calendly.com/webhook_subscriptions/<webhook-uuid>" --header "Authorization: Bearer $CALENDLY_TOKEN"' -w "\nHTTP Status: %{http_code}\n"
Guidelines
- URIs as identifiers: Calendly uses full URIs (e.g.,
https://api.calendly.com/users/XXXXX) as identifiers — not bare IDs. Always use the full URI in filter parameters. - Read-only API: You cannot create bookings or force-schedule meetings via API. Direct users to a Calendly scheduling link (
scheduling_urlin event types) for self-booking. - Webhooks require paid plan: Webhook subscriptions are only available on Standard plan and above.
- Scope: Use
userscope for individual events;organizationscope for team-wide data. - Pagination: Use
page_tokenfrompagination.next_page_tokento fetch subsequent pages. - Event status:
active= upcoming/confirmed;canceled= canceled events.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
brave-search
Brave Search API for web search. Use when user says "search web", "Brave search", or asks to "find on web" without specifying Google.
supadata
Supadata API for YouTube/web data. Use when user mentions "Supadata", "YouTube data", "channel stats", or web scraping data.
roadmap-planning
Build and prioritize product roadmaps using scoring models like RICE, ICE, and value-effort matrices. Activate when creating a product roadmap, prioritizing features, sequencing initiatives, mapping dependencies, balancing team capacity, choosing between Now/Next/Later or quarterly planning, or communicating roadmap tradeoffs to executives and stakeholders.
qdrant
Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.
stripe
Stripe API for payments. Use when user mentions "Stripe", "payment", "subscription", "billing", "invoice", or asks about payment processing.
customer-io
Customer.io behavioral email and messaging platform. Use when user mentions "Customer.io", "behavioral emails", "lifecycle emails", "triggered messages", or asks about event-based email automation.
Didn't find tool you were looking for?