Skip to main content
POST
Create a team Event

Headers

Authorization
string
required

value must be Bearer <token> where <token> is api key prefixed with cal_, managed user access token, or OAuth access token

Path Parameters

teamId
required

The team's uuid (preferred), its short-uuid (Flickr Base58) form, or its numeric id.

Body

application/json
title
string
required

The Event's title.

Required string length: 1 - 255
Example:

"Team offsite"

startTime
string
required

When the Event starts, in ISO 8601 format in UTC timezone. It must not be in the past.

Example:

"2030-01-01T10:00:00.000Z"

endTime
string
required

When the Event ends, in ISO 8601 format in UTC timezone. It must be after startTime.

Example:

"2030-01-01T11:00:00.000Z"

timeZone
string
required

The IANA time zone the Event's times are shown in.

Example:

"Europe/Berlin"

slug
string

Public page slug (cal.com/{slug}): 10-100 lowercase letters, digits and hyphens. Generated from the title when omitted.

Example:

"team-offsite-2030"

description
string | null

What the Event is about, shown on its page.

Maximum string length: 5000
visibility
enum<string>
default:PUBLIC

Once published: PUBLIC is listed on the owner's page, UNLISTED only opens from its link. Defaults to PUBLIC.

Available options:
PUBLIC,
UNLISTED
capacity
number | null

The most guests the Event can take. Omit or pass null for unlimited. Ignored once any location has its own capacity: the Event then takes the sum of the location capacities, or is unlimited if any location has none. The waitlist only opens when the Event or the chosen location is full, so it only works when capacity is set on the Event or on a location.

Required range: 1 <= x <= 100000
waitlistEnabled
boolean
default:false

Let guests join a waitlist when the Event is full. The waitlist only opens when the Event or the chosen location is full, so it only works when capacity is set on the Event or on a location.

paymentTimeoutMinutes
number | null

How many minutes a guest's seat is held while they pay. null uses the default of 10 minutes.

Required range: 10 <= x <= 10080
requiresApproval
boolean
default:false

Registrations wait for a host's approval.

showOrganizerEmail
boolean
default:true

Show the organizer's email to guests.

guestList
enum<string>
default:names

Who guests can see on the Event's page. names lists them, count shows how many, hidden shows neither. Defaults to names.

Available options:
hidden,
names,
count
showPresentedBy
boolean
default:true

Show who the Event is presented by.

theme
enum<string> | null

Default theme of the event page. null follows the visitor's system setting.

Available options:
light,
dark
background
object | null

Animated background of the event page.

lineup
object | null

Speakers or performers on the event page. Avatars need the Event uuid, so create people without avatarUrl and upload avatars with the person avatar endpoint afterwards.

schedule
object[]

Agenda on the event page. Each item has either a startTime or a timeLabel. Avatars need the Event uuid, so create people without avatarUrl and upload avatars with the person avatar endpoint afterwards.

Maximum array length: 50
registrationFields
(Default Full Name · object | Default Split Name · object | Default Email · object | Default Location · object | Default Title · object | Default Notes · object | Default Guests · object | Default Reschedule Reason · object | Default Attendee Phone · object | Workflow-added SMS Reminder · object | Workflow-added AI Agent Phone · object | Custom Email · object | Custom Phone · object | Custom Address · object | Custom Short Text · object | Custom Number · object | Custom Long Text · object | Custom Select · object | Custom Multi-Select · object | Custom Multiple Emails · object | Custom Checkbox Group · object | Custom Checkbox · object | Custom Radio Group · object | Custom URL · object)[]

The questions guests answer when they register.

hosts
object[]

The Event's hosts. The creator is always a host and always listed first, even when not passed. Personal Events can only have the creator, so passing other ids returns a 400. On team Events every id must be an accepted team member, otherwise it returns a 400.

liveStreams
object[]

Links where people can watch the event live.

Maximum array length: 5
category
enum<string>

What kind of event it is. If not passed, it's guessed from the title.

Available options:
meetup,
conference,
music,
sports
locations
object[]

Where the Event happens. Links can repeat. An Event can have one address and one conferencing location, either an integration or the organizer's default app.

Response

status
enum<string>
required
Available options:
success,
error
Example:

"success"

data
object
required