Create Booking

cal.create_booking
ActionBusiness appsconnection required

Calls the Cal.com API with the connection's credentials.

Book a slot on an event type for an attendee, returning the booking Cal.com created.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Cal.com
Secret shape
the Cal.com API key (cal_live_… / cal_test_…), or {"api_key": "…"}
Config it needs
base_url
Resolved by
config.connection_id, else node.connection_id

Configuration

11 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
start
When the booking starts, ISO-8601 in UTC. Must be a slot Cal.com currently offers for this event type.
stringYes—iso8601 format2026-08-13T09:00:00Z
attendee
The person being booked, as a JSON object. Cal.com requires name and timeZone; include email for the confirmation mail, and language for a localised one.
objectYes——{"email":"john.doe@example.com","language":"en","name":"John Doe","timeZone":"America/New_York"}
event_type_id
Numeric id of the event type. Use this or event_type_slug, not both.
stringNo——100
event_type_slug
Slug of the event type, e.g. intro-call. Needs username or team_slug alongside it so Cal.com knows whose event type it is.
stringNo——intro-call
username
Cal.com username that owns the event type named by event_type_slug.
stringNo——alice
team_slug
Team slug that owns the event type named by event_type_slug.
stringNo——sales
guests
Extra guest email addresses to add to the invite, as a JSON array of strings.
arrayNo—array of string—
location
Which of the event type's locations to use, as the JSON object Cal.com's booking schema defines (for example {"type": "attendeePhone", "phone": "+12025550123"}).
objectNo——{"phone":"+12025550123","type":"attendeePhone"}
metadata
Free-form key/value metadata stored on the booking. Cal.com allows at most 50 keys of up to 40 characters each.
objectNo———
booking_fields_responses
Answers to the event type's custom booking fields, keyed by field slug.
objectNo———
length_in_minutes
Book one of a multi-duration event type's lengths. Leave empty for its default. The 1-1440 range here is a sanity bound, not a Cal.com rule.
numberNo—1–1440—
  • At least one of event_type_id, event_type_slug must be set.

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "attendee": {
    "email": "john.doe@example.com",
    "language": "en",
    "name": "John Doe",
    "timeZone": "America/New_York"
  },
  "event_type_id": "100",
  "event_type_slug": "intro-call",
  "location": {
    "phone": "+12025550123",
    "type": "attendeePhone"
  },
  "start": "2026-08-13T09:00:00Z",
  "team_slug": "sales",
  "username": "alice"
}

Output

One shape.

result

FieldTypeExample
booking
The booking Cal.com returned, with id, uid, title, status, start, end, duration, eventTypeId, attendees and hosts. Empty when the uid named a recurring booking — see recurrences.
object—
recurrences
Every occurrence, when the uid named a recurring booking. Empty for a normal booking.
array—
is_recurring
True when Cal.com answered with a list of occurrences rather than a single booking, so the next node reads the right key.
booleanfalse
count
How many bookings this result carries.
number1
{
  "booking": {},
  "count": 1,
  "is_recurring": false,
  "recurrences": []
}

Notes

  • Name the event type either by event_type_id, or by event_type_slug together with username or team_slug.
  • A recurring event type answers with every occurrence, so read recurrences rather than booking.

See Create Booking run in a workflow.

In a technical demo we add the Cal.com connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.