Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Calcom Api

ASecurity

Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that need to create or manage bookings, check availability, configure event types, or sync calendars with Cal.com's scheduling infrastructure.

76 stars
0 votes
0 copies
1 views
Added 2/8/2026
businessapi

Works with

api

Security Analysis

A100/100

Scanned 2/12/2026

Install to Claude Code

$npx -y skills add majiayu000/claude-skill-registry --skill calcom-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Calcom Api?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Calcom Api
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-calcom-api/badge)](https://www.skillsdirectory.com/skills/majiayu000-calcom-api)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: calcom-api
description: Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that need to create or manage bookings, check availability, configure event types, or sync calendars with Cal.com's scheduling infrastructure.
license: MIT
metadata:
  author: calcom
  version: "1.0.0"
  api-version: "v2"
---

# Cal.com API v2

This skill provides guidance for AI agents to interact with the Cal.com API v2, enabling scheduling automation, booking management, and calendar integrations.

## Base URL

All API requests should be made to:
```
https://api.cal.com/v2
```

## Authentication

All API requests require authentication via Bearer token in the Authorization header:

```
Authorization: Bearer cal_<your_api_key>
```

API keys must be prefixed with `cal_`. You can generate API keys from your Cal.com dashboard under Settings > Developer > API Keys.

## Core Concepts

### Event Types
Event types define bookable meeting configurations (duration, location, availability rules). Each event type has a unique slug used in booking URLs.

### Bookings
Bookings are confirmed appointments created when someone books an event type. Each booking has a unique UID for identification.

### Schedules
Schedules define when a user is available for bookings. Users can have multiple schedules with different working hours.

### Slots
Slots represent available time windows that can be booked based on event type configuration and user availability.

## Common Operations

### Check Available Slots

Before creating a booking, check available time slots:

```http
GET /v2/slots?startTime=2024-01-15T00:00:00Z&endTime=2024-01-22T00:00:00Z&eventTypeId=123&eventTypeSlug=30min
```

Query parameters:
- `startTime` (required): ISO 8601 start of range
- `endTime` (required): ISO 8601 end of range  
- `eventTypeId` or `eventTypeSlug`: Identify the event type
- `timeZone`: Timezone for slot display (default: UTC)

Response contains available slots grouped by date.

### Create a Booking

```http
POST /v2/bookings
Content-Type: application/json

{
  "start": "2024-01-15T10:00:00Z",
  "eventTypeId": 123,
  "attendee": {
    "name": "John Doe",
    "email": "john@example.com",
    "timeZone": "America/New_York"
  },
  "meetingUrl": "https://cal.com/team/meeting",
  "metadata": {}
}
```

Required fields:
- `start`: ISO 8601 booking start time
- `eventTypeId`: ID of the event type to book
- `attendee.name`: Attendee's full name
- `attendee.email`: Attendee's email address
- `attendee.timeZone`: Attendee's timezone

### Get Bookings

List bookings with optional filters:

```http
GET /v2/bookings?status=upcoming&take=10
```

Query parameters:
- `status`: Filter by status (upcoming, recurring, past, cancelled, unconfirmed)
- `attendeeEmail`: Filter by attendee email
- `eventTypeId`: Filter by event type
- `take`: Number of results (max 250)
- `skip`: Pagination offset

### Get a Single Booking

```http
GET /v2/bookings/{bookingUid}
```

### Cancel a Booking

```http
POST /v2/bookings/{bookingUid}/cancel
Content-Type: application/json

{
  "cancellationReason": "Schedule conflict"
}
```

### Reschedule a Booking

```http
POST /v2/bookings/{bookingUid}/reschedule
Content-Type: application/json

{
  "start": "2024-01-16T14:00:00Z",
  "reschedulingReason": "Conflict with another meeting"
}
```

### List Event Types

```http
GET /v2/event-types
```

Returns all event types for the authenticated user.

### Get a Single Event Type

```http
GET /v2/event-types/{eventTypeId}
```

### Create an Event Type

```http
POST /v2/event-types
Content-Type: application/json

{
  "title": "30 Minute Meeting",
  "slug": "30min",
  "lengthInMinutes": 30,
  "locations": [
    {
      "type": "integration",
      "integration": "cal-video"
    }
  ]
}
```

### List Schedules

```http
GET /v2/schedules
```

### Get Default Schedule

```http
GET /v2/schedules/default
```

### Create a Schedule

```http
POST /v2/schedules
Content-Type: application/json

{
  "name": "Working Hours",
  "timeZone": "America/New_York",
  "isDefault": true,
  "availability": [
    {
      "days": [1, 2, 3, 4, 5],
      "startTime": "09:00",
      "endTime": "17:00"
    }
  ]
}
```

Days are 0-indexed (0 = Sunday, 1 = Monday, etc.).

### Get Current User

```http
GET /v2/me
```

Returns the authenticated user's profile information.

## Team and Organization Endpoints

For team bookings and organization management, use the organization-scoped endpoints:

### List Organization Teams

```http
GET /v2/organizations/{orgId}/teams
```

### Get Team Event Types

```http
GET /v2/organizations/{orgId}/teams/{teamId}/event-types
```

### Create Team Booking

Team event types support different scheduling modes:
- `COLLECTIVE`: All team members must attend
- `ROUND_ROBIN`: Distributes bookings among team members

## Webhooks

Configure webhooks to receive real-time notifications:

### List Webhooks

```http
GET /v2/webhooks
```

### Create a Webhook

```http
POST /v2/webhooks
Content-Type: application/json

{
  "subscriberUrl": "https://your-app.com/webhook",
  "triggers": ["BOOKING_CREATED", "BOOKING_CANCELLED"],
  "active": true
}
```

Available triggers:
- `BOOKING_CREATED`
- `BOOKING_CANCELLED`
- `BOOKING_RESCHEDULED`
- `BOOKING_CONFIRMED`
- `MEETING_STARTED`
- `MEETING_ENDED`

## Calendar Integration

### List Connected Calendars

```http
GET /v2/calendars
```

### Check Busy Times

```http
GET /v2/calendars/busy-times?startTime=2024-01-15T00:00:00Z&endTime=2024-01-22T00:00:00Z
```

## Error Handling

The API returns standard HTTP status codes:

- `200`: Success
- `201`: Created
- `400`: Bad Request (invalid parameters)
- `401`: Unauthorized (invalid or missing API key)
- `403`: Forbidden (insufficient permissions)
- `404`: Not Found
- `422`: Unprocessable Entity (validation error)
- `500`: Internal Server Error

Error responses include a message field:

```json
{
  "status": "error",
  "message": "Booking not found"
}
```

## Rate Limiting

The API implements rate limiting. If you exceed the limit, you'll receive a `429 Too Many Requests` response. Implement exponential backoff for retries.

## Pagination

List endpoints support pagination via `take` and `skip` parameters:

- `take`: Number of items to return (default: 10, max: 250)
- `skip`: Number of items to skip

## Best Practices

1. Always check slot availability before creating bookings
2. Store booking UIDs for future reference (cancel, reschedule)
3. Handle timezone conversions carefully - always use ISO 8601 format
4. Implement webhook handlers for real-time booking updates
5. Cache event type data to reduce API calls
6. Use appropriate error handling for all API calls

## Additional Resources

- [Full API Reference](https://cal.com/docs/api-reference/v2)
- [OpenAPI Specification](https://api.cal.com/v2/docs)

Attribution

majiayu000majiayu000
View sourceMore from majiayu000 →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →