Files
Eunjae LeeGitHubClaude Haiku 4.5Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
12abc316e6 refactor: consolidate agent config into agents directory (#27427)
* refactor: consolidate agent config folders into agents directory

- Move .claude/skills and .claude/rules content to agents/
- Remove duplicate .cursor/ and .goose/ folders
- Create symlinks from .claude/ and .cursor/ to agents/
- Convert review.mdc to quality-review-checklist.md with proper frontmatter

Co-Authored-By: Claude Haiku 4.5 <[email protected]>

* feat: add Cal.com APIv2 skills to agents directory

Move the Cal.com API v2 skills from PR #27445 into the consolidated
agents/skills/ directory structure. This includes:
- SKILL.md - Main skill file with API overview
- references/authentication.md - Authentication methods
- references/bookings.md - Bookings API reference
- references/calendars.md - Calendars API reference
- references/event-types.md - Event types API reference
- references/schedules.md - Schedules API reference
- references/slots-availability.md - Slots and availability API reference
- references/webhooks.md - Webhooks API reference

Co-Authored-By: [email protected] <[email protected]>

* fix: update calcom-api skill to use Claude Code frontmatter format

Remove non-standard frontmatter fields (license, metadata) and keep only
the Claude Code supported fields (name, description) as per the
Claude Code skills specification.

Co-Authored-By: [email protected] <[email protected]>

* refactor: restructure calcom-api SKILL.md as index file

Convert SKILL.md from a comprehensive API doc (317 lines) to a concise
index file (108 lines) that references the detailed documentation in
the references/ folder. This follows the Claude Code skills pattern of
keeping SKILL.md focused with supporting files for detailed content.

The SKILL.md now:
- Provides a quick start guide with essential examples
- References all 7 detailed reference docs in a table
- Lists common workflows and best practices
- Points to external resources

Co-Authored-By: [email protected] <[email protected]>

* docs: preserve deleted content in reference files

Move content that was removed from SKILL.md to appropriate reference files:
- Add Error Handling and Pagination sections to authentication.md
- Add Organization endpoints to event-types.md
- Add Core Concepts section back to SKILL.md

This ensures no useful API documentation is lost during the restructuring.

Co-Authored-By: [email protected] <[email protected]>

---------

Co-authored-by: Claude Haiku 4.5 <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-02-03 14:14:41 +01:00

7.1 KiB

Bookings API Reference

Detailed documentation for booking-related endpoints in the Cal.com API v2.

Endpoints Overview

Method Endpoint Description
GET /v2/bookings List bookings
POST /v2/bookings Create a booking
GET /v2/bookings/{bookingUid} Get a booking
POST /v2/bookings/{bookingUid}/cancel Cancel a booking
POST /v2/bookings/{bookingUid}/reschedule Reschedule a booking
POST /v2/bookings/{bookingUid}/confirm Confirm a pending booking
POST /v2/bookings/{bookingUid}/decline Decline a booking
PATCH /v2/bookings/{bookingUid}/location Update booking location
POST /v2/bookings/{bookingUid}/mark-absent Mark attendee as no-show
POST /v2/bookings/{bookingUid}/reassign Reassign booking to another host
GET /v2/bookings/{bookingUid}/references Get booking references

List Bookings

GET /v2/bookings

Query Parameters

Parameter Type Required Description
status string No Filter by status: upcoming, recurring, past, cancelled, unconfirmed
attendeeEmail string No Filter by attendee email
attendeeName string No Filter by attendee name
eventTypeId number No Filter by event type ID
eventTypeIds string No Comma-separated event type IDs
teamsIds string No Comma-separated team IDs
afterStart string No Filter bookings starting after this ISO 8601 date
beforeEnd string No Filter bookings ending before this ISO 8601 date
sortStart string No Sort by start time: asc or desc
sortEnd string No Sort by end time: asc or desc
sortCreated string No Sort by creation time: asc or desc
take number No Number of results (default: 10, max: 250)
skip number No Pagination offset

Response

{
  "status": "success",
  "data": [
    {
      "id": 12345,
      "uid": "abc123def456",
      "title": "30 Minute Meeting",
      "description": "Discussion about project",
      "start": "2024-01-15T10:00:00.000Z",
      "end": "2024-01-15T10:30:00.000Z",
      "status": "accepted",
      "eventTypeId": 123,
      "attendees": [
        {
          "name": "John Doe",
          "email": "[email protected]",
          "timeZone": "America/New_York"
        }
      ],
      "hosts": [
        {
          "id": 456,
          "name": "Jane Smith",
          "email": "[email protected]"
        }
      ],
      "location": "https://cal.com/video/abc123",
      "meetingUrl": "https://cal.com/video/abc123",
      "metadata": {},
      "createdAt": "2024-01-10T08:00:00.000Z"
    }
  ]
}

Create a Booking

POST /v2/bookings

Request Body

{
  "start": "2024-01-15T10:00:00Z",
  "eventTypeId": 123,
  "attendee": {
    "name": "John Doe",
    "email": "[email protected]",
    "timeZone": "America/New_York",
    "language": "en"
  },
  "guests": ["[email protected]", "[email protected]"],
  "meetingUrl": "https://cal.com/team/meeting",
  "metadata": {
    "customField": "value"
  },
  "bookingFieldsResponses": {
    "notes": "Please prepare the quarterly report"
  }
}

Required Fields

Field Type Description
start string ISO 8601 booking start time
eventTypeId number ID of the event type to book
attendee.name string Attendee's full name
attendee.email string Attendee's email address
attendee.timeZone string Attendee's timezone (IANA format)

Optional Fields

Field Type Description
attendee.language string Attendee's preferred language
guests array Additional guest email addresses
meetingUrl string Custom meeting URL
metadata object Custom metadata
bookingFieldsResponses object Responses to custom booking fields

Response

{
  "status": "success",
  "data": {
    "id": 12345,
    "uid": "abc123def456",
    "title": "30 Minute Meeting",
    "start": "2024-01-15T10:00:00.000Z",
    "end": "2024-01-15T10:30:00.000Z",
    "status": "accepted",
    "eventTypeId": 123,
    "attendees": [...],
    "hosts": [...],
    "location": "https://cal.com/video/abc123"
  }
}

Get a Booking

GET /v2/bookings/{bookingUid}

Path Parameters

Parameter Type Description
bookingUid string Unique booking identifier

Response

Returns the full booking object with all details.

Cancel a Booking

POST /v2/bookings/{bookingUid}/cancel

Request Body

{
  "cancellationReason": "Schedule conflict"
}

Fields

Field Type Required Description
cancellationReason string No Reason for cancellation

Reschedule a Booking

POST /v2/bookings/{bookingUid}/reschedule

Request Body

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

Fields

Field Type Required Description
start string Yes New booking start time (ISO 8601)
reschedulingReason string No Reason for rescheduling

Confirm a Booking

For event types that require confirmation:

POST /v2/bookings/{bookingUid}/confirm

Decline a Booking

POST /v2/bookings/{bookingUid}/decline

Request Body

{
  "reason": "Not available at this time"
}

Update Booking Location

PATCH /v2/bookings/{bookingUid}/location

Request Body

{
  "location": "https://zoom.us/j/123456789"
}

Mark Attendee as No-Show

POST /v2/bookings/{bookingUid}/mark-absent

Request Body

{
  "attendeeEmail": "[email protected]",
  "noShow": true
}

Reassign Booking

Reassign a booking to a different host:

POST /v2/bookings/{bookingUid}/reassign

Or to a specific user:

POST /v2/bookings/{bookingUid}/reassign/{userId}

Get Booking References

Get external references (calendar events, video meetings) for a booking:

GET /v2/bookings/{bookingUid}/references

Response

{
  "status": "success",
  "data": [
    {
      "type": "google_calendar",
      "uid": "calendar-event-id",
      "meetingUrl": "https://meet.google.com/abc-defg-hij"
    }
  ]
}

Booking Statuses

Status Description
accepted Booking is confirmed
pending Awaiting confirmation
cancelled Booking was cancelled
rejected Booking was declined

Common Use Cases

Book a Meeting

  1. Get available slots: GET /v2/slots?eventTypeId=123&startTime=...&endTime=...
  2. Create booking: POST /v2/bookings with selected slot
  3. Store the booking UID for future operations

Reschedule Flow

  1. Get new available slots: GET /v2/slots?eventTypeId=123&startTime=...&endTime=...
  2. Reschedule: POST /v2/bookings/{uid}/reschedule with new start time

Cancel with Notification

  1. Cancel: POST /v2/bookings/{uid}/cancel with reason
  2. Attendees automatically receive cancellation emails