Skip to main content
Every booking runs through a lifecycle from request to meeting, decline or cancel. The status field is the source of truth for where a booking sits at any moment.

Booking statuses

Manual approval mode (every booking starts pending until you accept or decline) is Pro only. On the free tier, bookings go straight to accepted.

Booking fields

The booking object returned by the API contains the following fields:
string
Unique ID for the booking. Use it to retrieve or reference the booking in API calls.
string
Current state. One of pending, accepted, declined or cancelled. See Booking statuses.
string
When the request was submitted, as a UTC ISO 8601 timestamp (e.g. 2025-09-15T08:42:00Z).
string | null
When the meeting starts, as a UTC ISO 8601 timestamp (e.g. 2025-09-15T10:00:00Z). null if not yet scheduled.
integer
Meeting length in minutes, as set on the service at booking time.
string
Free-text description of what the booker wants to cover.
object
object
Name and email of the person who made the booking.
array
Additional attendees for group bookings, each with a name and email. Empty for one-to-one bookings.
object
Video call URL when location is video. null for in-person or none.
object
string | null
Reason given on decline or cancel. null while active.
string | null
Any extra notes from you or the booker.

Payment info

Amounts are in minor currency units, the smallest denomination of the currency. For EUR and USD, divide by 100.
Free services always return payment.status = "none" and payment.amount = 0. pending means the invoice is issued but not yet paid.
For paid bookings that haven’t been paid yet, the booking object also has a meeting_link field. That’s the checkout link the booker uses to pay. It’s not the same as conference_link, which is the video URL for the meeting itself. Don’t present meeting_link as where the meeting happens.
Fetch bookings via the API: