Skip to content
AI & Agents
Agent

event-types

Detailed documentation for event type endpoints in the Cal.diy API v2.

From plugin
caldiy
47k95 skills95 agents
Install
$ npx -y skills add calcom/cal.com --agent claude-code

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Detailed documentation for event type endpoints in the Cal.diy API v2.

Agent definition

event-types.md

Event Types API Reference

Detailed documentation for event type endpoints in the Cal.diy API v2.

Endpoints Overview

| Method | Endpoint | Description | |--------|----------|-------------| | GET | /v2/event-types | List event types | | POST | /v2/event-types | Create an event type | | GET | /v2/event-types/{eventTypeId} | Get an event type | | PATCH | /v2/event-types/{eventTypeId} | Update an event type | | DELETE | /v2/event-types/{eventTypeId} | Delete an event type |

List Event Types

GET /v2/event-types

Query Parameters

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | take | number | No | Number of results (default: 10, max: 250) | | skip | number | No | Pagination offset |

Response

{
  "status": "success",
  "data": [
    {
      "id": 123,
      "title": "30 Minute Meeting",
      "slug": "30min",
      "description": "A quick 30 minute call",
      "lengthInMinutes": 30,
      "locations": [
        {
          "type": "integration",
          "integration": "cal-video"
        }
      ],
      "bookingFields": [],
      "disableGuests": false,
      "slotInterval": null,
      "minimumBookingNotice": 120,
      "beforeEventBuffer": 0,
      "afterEventBuffer": 0,
      "schedulingType": null,
      "metadata": {},
      "requiresConfirmation": false,
      "price": 0,
      "currency": "usd",
      "hidden": false
    }
  ]
}

Create an Event Type

POST /v2/event-types

Request Body

{
  "title": "30 Minute Meeting",
  "slug": "30min",
  "description": "A quick 30 minute call to discuss your needs",
  "lengthInMinutes": 30,
  "locations": [
    {
      "type": "integration",
      "integration": "cal-video"
    }
  ],
  "bookingFields": [
    {
      "type": "textarea",
      "name": "notes",
      "label": "Additional Notes",
      "required": false,
      "placeholder": "Any additional information..."
    }
  ],
  "disableGuests": false,
  "slotInterval": 15,
  "minimumBookingNotice": 120,
  "beforeEventBuffer": 5,
  "afterEventBuffer": 5,
  "scheduleId": 1,
  "requiresConfirmation": false,
  "hidden": false
}

Required Fields

| Field | Type | Description | |-------|------|-------------| | title | string | Display name of the event type | | slug | string | URL-friendly identifier | | lengthInMinutes | number | Duration of the event |

Optional Fields

| Field | Type | Description | |-------|------|-------------| | description | string | Description shown on booking page | | locations | array | Meeting location options | | bookingFields | array | Custom form fields | | disableGuests | boolean | Prevent attendees from adding guests | | slotInterval | number | Minutes between available slots | | minimumBookingNotice | number | Minimum minutes before booking | | beforeEventBuffer | number | Buffer time before event (minutes) | | afterEventBuffer | number | Buffer time after event (minutes) | | scheduleId | number | ID of schedule to use | | requiresConfirmation | boolean | Require host confirmation | | hidden | boolean | Hide from public profile |

Location Types

Cal Video (Built-in)

{
  "type": "integration",
  "integration": "cal-video"
}

Zoom

{
  "type": "integration",
  "integration": "zoom"
}

Google Meet

{
  "type": "integration",
  "integration": "google-meet"
}

Microsoft Teams

{
  "type": "integration",
  "integration": "msteams"
}

In-Person

{
  "type": "address",
  "address": "123 Main St, City, Country"
}

Phone Call (Host Calls)

{
  "type": "userPhone"
}

Phone Call (Attendee Provides)

{
  "type": "attendeePhone"
}

Custom Link

{
  "type": "link",
  "link": "https://custom-meeting.com/room"
}

Booking Fields

Custom form fields for collecting information from attendees.

Text Field

{
  "type": "text",
  "name": "company",
  "label": "Company Name",
  "required": true,
  "placeholder": "Enter your company name"
}

Textarea

{
  "type": "textarea",
  "name": "notes",
  "label": "Additional Notes",
  "required": false
}

Select (Dropdown)

{
  "type": "select",
  "name": "topic",
  "label": "Meeting Topic",
  "required": true,
  "options": [
    { "value": "sales", "label": "Sales Inquiry" },
    { "value": "support", "label": "Support" },
    { "value": "other", "label": "Other" }
  ]
}

Radio Buttons

{
  "type": "radio",
  "name": "preference",
  "label": "Preferred Contact Method",
  "required": true,
  "options": [
    { "value": "email", "label": "Email" },
    { "value": "phone", "label": "Phone" }
  ]
}

Checkbox

{
  "type": "checkbox",
  "name": "terms",
  "label": "I agree to the terms",
  "required": true
}

Phone Number

{
  "type": "phone",
  "name": "phone",
  "label": "Phone Number",
  "required": false
}

Get an Event Type

GET /v2/event-types/{eventTypeId}

Path Parameters

| Parameter | Type | Description | |-----------|------|-------------| | eventTypeId | number | Event type ID |

Update an Event Type

PATCH /v2/event-types/{eventTypeId}

Request Body

Only include fields you want to update:

{
  "title": "Updated Meeting Title",
  "lengthInMinutes": 45,
  "hidden": false
}

Delete an Event Type

DELETE /v2/event-types/{eventTypeId}

Team Event Types

For team event types, use the team-scoped endpoints:

List Team Event Types

GET /v2/teams/{teamId}/event-types

Create Team Event Type

POST /v2/teams/{teamId}/event-types

Additional fields for team event types:

{
  "title": "Team Meeting",
  "slug": "team-meeting",
  "lengthInMinutes": 30,
  "schedulingType": "ROUND_ROBIN",
  "hosts": [
    { "userId": 1, "isFixed": false },
    { "userId": 2, "isFixed": false }
  ]
}

S

Read more
Ships withcaldiy

Scheduling infrastructure for absolutely everyone.

Get the whole plugin