Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that nee...
Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that nee...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
This skill provides guidance for AI agents to interact with the Cal.com API v2, enabling scheduling automation, booking management, and calendar integrations.
All API requests should be made to: https://api.cal.com/v2
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.
Event types define bookable meeting configurations (duration, location, availability rules). Each event type has a unique slug used in booking URLs.
Bookings are confirmed appointments created when someone books an event type. Each booking has a unique UID for identification.
Schedules define when a user is available for bookings. Users can have multiple schedules with different working hours.
Slots represent available time windows that can be booked based on event type configuration and user availability.
Before creating a booking, check available time slots: 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.
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
List bookings with optional filters: 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 /v2/bookings/{bookingUid}
POST /v2/bookings/{bookingUid}/cancel Content-Type: application/json { "cancellationReason": "Schedule conflict" }
POST /v2/bookings/{bookingUid}/reschedule Content-Type: application/json { "start": "2024-01-16T14:00:00Z", "reschedulingReason": "Conflict with another meeting" }
GET /v2/event-types Returns all event types for the authenticated user.
GET /v2/event-types/{eventTypeId}
POST /v2/event-types Content-Type: application/json { "title": "30 Minute Meeting", "slug": "30min", "lengthInMinutes": 30, "locations": [ { "type": "integration", "integration": "cal-video" } ] }
GET /v2/schedules
GET /v2/schedules/default
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 /v2/me Returns the authenticated user's profile information.
For team bookings and organization management, use the organization-scoped endpoints:
GET /v2/organizations/{orgId}/teams
GET /v2/organizations/{orgId}/teams/{teamId}/event-types
Team event types support different scheduling modes: COLLECTIVE: All team members must attend ROUND_ROBIN: Distributes bookings among team members
Configure webhooks to receive real-time notifications:
GET /v2/webhooks
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
GET /v2/calendars
GET /v2/calendars/busy-times?startTime=2024-01-15T00:00:00Z&endTime=2024-01-22T00:00:00Z
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: { "status": "error", "message": "Booking not found" }
The API implements rate limiting. If you exceed the limit, you'll receive a 429 Too Many Requests response. Implement exponential backoff for retries.
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
Always check slot availability before creating bookings Store booking UIDs for future reference (cancel, reschedule) Handle timezone conversions carefully - always use ISO 8601 format Implement webhook handlers for real-time booking updates Cache event type data to reduce API calls Use appropriate error handling for all API calls
Full API Reference OpenAPI Specification
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.