openapi: 3.0.3
info:
title: 'Slotkit Public API'
description: 'Generated Slotkit Public API contract.'
version: 1.0.0
servers:
- url: 'https://api.slotkit.app'
tags:
- name: 'Booking Invitations'
description: ''
- name: Bookings
description: ''
- name: 'Event Types'
description: ''
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'Create an API Key from Administration settings. Keys are displayed once and must remain in server-side secret storage.'
security:
-
default: []
paths:
/v1/booking-invitations:
get:
summary: 'List Booking Invitations'
operationId: listBookingInvitations
description: ''
parameters:
-
in: query
name: status
description: 'Optional effective Invitation status.'
example: active
required: false
schema:
type: string
description: 'Optional effective Invitation status.'
example: active
enum:
- not_yet_valid
- active
- expired
- exhausted
- revoked
-
in: query
name: event_type_id
description: 'Optional Event Type identifier. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
required: false
schema:
type: string
description: 'Optional Event Type identifier. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
-
in: query
name: cursor
description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.'
example: null
required: false
schema:
type: string
description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.'
example: null
-
in: query
name: limit
description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.'
example: 20
required: false
schema:
type: integer
description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.'
example: 20
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
next_cursor: null
properties:
data:
type: array
example:
-
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: []
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
items:
type: object
properties:
id:
type: string
example: biv_01J5N6WB5KGN
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
email:
type: string
example: guest@example.com
not_before:
type: string
example: null
nullable: true
expires_at:
type: string
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
example: 1
used_count:
type: integer
example: 0
status:
type: string
example: active
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
revoked_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
next_cursor:
type: string
example: null
nullable: true
tags:
- 'Booking Invitations'
post:
summary: 'Create a Booking Invitation'
operationId: createABookingInvitation
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: invitation_018fafe4
schema:
type: string
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
invitation_url: 'https://book.slotkit.example/invitations/example-one-time-credential'
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: biv_01J5N6WB5KGN
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
email:
type: string
example: guest@example.com
not_before:
type: string
example: null
nullable: true
expires_at:
type: string
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
example: 1
used_count:
type: integer
example: 0
status:
type: string
example: active
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
revoked_at:
type: string
example: null
nullable: true
invitation_url:
type: string
example: 'https://book.slotkit.example/invitations/example-one-time-credential'
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Booking Invitations'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event_type_id:
type: string
description: 'Invitation-only Event Type. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
email:
type: string
description: 'Optional recipient restriction. Must not be greater than 254 characters.'
example: guest@example.com
nullable: true
not_before:
type: string
description: 'Optional RFC 3339 UTC activation time. Must be a valid date.'
example: null
nullable: true
expires_at:
type: string
description: 'Required RFC 3339 UTC expiration. Must be a valid date.'
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
description: 'Maximum successful Booking uses. Must be between 1 and 100.'
example: 1
metadata:
type: object
description: 'Caller-owned JSON object.'
example:
external_id: crm_123
properties: {}
required:
- event_type_id
- expires_at
- max_uses
'/v1/booking-invitations/{bookingInvitation}':
get:
summary: 'Get a Booking Invitation'
operationId: getABookingInvitation
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: biv_01J5N6WB5KGN
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
email:
type: string
example: guest@example.com
not_before:
type: string
example: null
nullable: true
expires_at:
type: string
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
example: 1
used_count:
type: integer
example: 0
status:
type: string
example: active
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
revoked_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Booking Invitations'
parameters:
-
in: path
name: bookingInvitation
description: ''
example: architecto
required: true
schema:
type: string
'/v1/booking-invitations/{bookingInvitation}/revoke':
post:
summary: 'Revoke a Booking Invitation'
operationId: revokeABookingInvitation
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: invitation_revoke_018fafe4
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: biv_01J5N6WB5KGN
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
email:
type: string
example: guest@example.com
not_before:
type: string
example: null
nullable: true
expires_at:
type: string
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
example: 1
used_count:
type: integer
example: 0
status:
type: string
example: active
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
revoked_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Booking Invitations'
parameters:
-
in: path
name: bookingInvitation
description: ''
example: architecto
required: true
schema:
type: string
'/v1/booking-invitations/{bookingInvitation}/reissue':
post:
summary: 'Reissue a Booking Invitation'
operationId: reissueABookingInvitation
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: invitation_reissue_018fafe4
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: biv_01J5N6WB5KGN
event_type_id: evt_01J5N6W5KP7Y
email: guest@example.com
not_before: null
expires_at: '2026-09-01T00:00:00.000Z'
max_uses: 1
used_count: 0
status: active
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
revoked_at: null
invitation_url: 'https://book.slotkit.example/invitations/example-one-time-credential'
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: biv_01J5N6WB5KGN
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
email:
type: string
example: guest@example.com
not_before:
type: string
example: null
nullable: true
expires_at:
type: string
example: '2026-09-01T00:00:00.000Z'
max_uses:
type: integer
example: 1
used_count:
type: integer
example: 0
status:
type: string
example: active
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
revoked_at:
type: string
example: null
nullable: true
invitation_url:
type: string
example: 'https://book.slotkit.example/invitations/example-one-time-credential'
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Booking Invitations'
parameters:
-
in: path
name: bookingInvitation
description: ''
example: architecto
required: true
schema:
type: string
/v1/bookings:
get:
summary: 'List Bookings'
operationId: listBookings
description: ''
parameters:
-
in: query
name: status
description: 'Optional Booking status.'
example: confirmed
required: false
schema:
type: string
description: 'Optional Booking status.'
example: confirmed
enum:
- confirmed
- cancelled
-
in: query
name: starts_from
description: 'Inclusive RFC 3339 UTC lower bound. This field is required when starts_to is present. Must be a valid date.'
example: '2026-08-01T00:00:00.000Z'
required: false
schema:
type: string
description: 'Inclusive RFC 3339 UTC lower bound. This field is required when starts_to is present. Must be a valid date.'
example: '2026-08-01T00:00:00.000Z'
-
in: query
name: starts_to
description: 'Exclusive RFC 3339 UTC upper bound, at most 90 days later. This field is required when starts_from is present. Must be a valid date. Must be a date after starts_from.'
example: '2026-09-01T00:00:00.000Z'
required: false
schema:
type: string
description: 'Exclusive RFC 3339 UTC upper bound, at most 90 days later. This field is required when starts_from is present. Must be a valid date. Must be a date after starts_from.'
example: '2026-09-01T00:00:00.000Z'
-
in: query
name: event_type_id
description: 'Optional Event Type identifier. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
required: false
schema:
type: string
description: 'Optional Event Type identifier. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
-
in: query
name: cursor
description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.'
example: null
required: false
schema:
type: string
description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.'
example: null
-
in: query
name: limit
description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.'
example: 20
required: false
schema:
type: integer
description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.'
example: 20
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
next_cursor: null
properties:
data:
type: array
example:
-
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: []
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
items:
type: object
properties:
id:
type: string
example: bkg_01J5N6W8BT8D
status:
type: string
example: confirmed
version:
type: integer
example: 1
source:
type: string
example: api
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
guest:
type: object
properties:
name:
type: string
example: 'Guest Name'
email:
type: string
example: guest@example.com
timezone:
type: string
example: Asia/Bangkok
meeting:
type: object
properties:
type:
type: string
example: google_meet
join_url:
type: string
example: null
nullable: true
calendar:
type: object
properties:
status:
type: string
example: pending
error_code:
type: string
example: null
nullable: true
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
rescheduled_at:
type: string
example: null
nullable: true
cancelled_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
next_cursor:
type: string
example: null
nullable: true
tags:
- Bookings
post:
summary: 'Create a Booking'
operationId: createABooking
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: booking_018fafe4
schema:
type: string
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: bkg_01J5N6W8BT8D
status:
type: string
example: confirmed
version:
type: integer
example: 1
source:
type: string
example: api
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
guest:
type: object
properties:
name:
type: string
example: 'Guest Name'
email:
type: string
example: guest@example.com
timezone:
type: string
example: Asia/Bangkok
meeting:
type: object
properties:
type:
type: string
example: google_meet
join_url:
type: string
example: null
nullable: true
calendar:
type: object
properties:
status:
type: string
example: pending
error_code:
type: string
example: null
nullable: true
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
rescheduled_at:
type: string
example: null
nullable: true
cancelled_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- Bookings
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event_type_id:
type: string
description: 'Event Type to book. Must not be greater than 40 characters.'
example: evt_01J5N6W5KP7Y
start_at:
type: string
description: 'Selected Slot start as RFC 3339 UTC. Must be a valid date.'
example: '2026-08-20T03:00:00.000Z'
guest:
type: object
description: ''
example: []
properties:
name:
type: string
description: 'Guest display name. Must not be greater than 120 characters.'
example: 'Guest Name'
email:
type: string
description: 'Guest email address. Must not be greater than 254 characters.'
example: guest@example.com
timezone:
type: string
description: 'Guest IANA timezone.'
example: Asia/Bangkok
required:
- name
- email
- timezone
metadata:
type: object
description: 'Caller-owned JSON object.'
example:
external_id: crm_123
properties: {}
required:
- event_type_id
- start_at
- guest
'/v1/bookings/{booking}':
get:
summary: 'Get a Booking'
operationId: getABooking
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: bkg_01J5N6W8BT8D
status:
type: string
example: confirmed
version:
type: integer
example: 1
source:
type: string
example: api
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
guest:
type: object
properties:
name:
type: string
example: 'Guest Name'
email:
type: string
example: guest@example.com
timezone:
type: string
example: Asia/Bangkok
meeting:
type: object
properties:
type:
type: string
example: google_meet
join_url:
type: string
example: null
nullable: true
calendar:
type: object
properties:
status:
type: string
example: pending
error_code:
type: string
example: null
nullable: true
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
rescheduled_at:
type: string
example: null
nullable: true
cancelled_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- Bookings
parameters:
-
in: path
name: booking
description: 'The booking.'
example: architecto
required: true
schema:
type: string
'/v1/bookings/{booking}/cancel':
post:
summary: 'Cancel a Booking'
operationId: cancelABooking
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: booking_cancel_018fafe4
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: bkg_01J5N6W8BT8D
status:
type: string
example: confirmed
version:
type: integer
example: 1
source:
type: string
example: api
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
guest:
type: object
properties:
name:
type: string
example: 'Guest Name'
email:
type: string
example: guest@example.com
timezone:
type: string
example: Asia/Bangkok
meeting:
type: object
properties:
type:
type: string
example: google_meet
join_url:
type: string
example: null
nullable: true
calendar:
type: object
properties:
status:
type: string
example: pending
error_code:
type: string
example: null
nullable: true
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
rescheduled_at:
type: string
example: null
nullable: true
cancelled_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- Bookings
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
expected_version:
type: integer
description: 'Optional optimistic concurrency version. Must be at least 1.'
example: 2
parameters:
-
in: path
name: booking
description: 'The booking.'
example: architecto
required: true
schema:
type: string
'/v1/bookings/{booking}/reschedule':
post:
summary: 'Reschedule a Booking'
operationId: rescheduleABooking
description: ''
parameters:
-
in: header
name: Idempotency-Key
description: ''
example: booking_reschedule_018fafe4
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: bkg_01J5N6W8BT8D
status: confirmed
version: 1
source: api
event_type_id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
guest:
name: 'Guest Name'
email: guest@example.com
timezone: Asia/Bangkok
meeting:
type: google_meet
join_url: null
calendar:
status: pending
error_code: null
metadata: {}
created_at: '2026-08-12T00:00:00.000Z'
rescheduled_at: null
cancelled_at: null
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: bkg_01J5N6W8BT8D
status:
type: string
example: confirmed
version:
type: integer
example: 1
source:
type: string
example: api
event_type_id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
guest:
type: object
properties:
name:
type: string
example: 'Guest Name'
email:
type: string
example: guest@example.com
timezone:
type: string
example: Asia/Bangkok
meeting:
type: object
properties:
type:
type: string
example: google_meet
join_url:
type: string
example: null
nullable: true
calendar:
type: object
properties:
status:
type: string
example: pending
error_code:
type: string
example: null
nullable: true
metadata:
type: object
properties: {}
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
rescheduled_at:
type: string
example: null
nullable: true
cancelled_at:
type: string
example: null
nullable: true
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- Bookings
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
start_at:
type: string
description: 'New Slot start as RFC 3339 UTC. Must be a valid date.'
example: '2026-08-21T04:00:00.000Z'
expected_version:
type: integer
description: 'Required optimistic concurrency version. Must be at least 1.'
example: 1
required:
- start_at
- expected_version
parameters:
-
in: path
name: booking
description: 'The booking.'
example: architecto
required: true
schema:
type: string
/v1/event-types:
get:
summary: 'List Event Types'
operationId: listEventTypes
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
name: 'Intro call'
description: null
slug: intro-call
duration_minutes: 30
slot_interval_minutes: 30
buffer_before_minutes: 0
buffer_after_minutes: 0
minimum_notice_minutes: 60
maximum_advance_minutes: 43200
meeting_type: google_meet
status: active
bookable: true
unavailable_reason: null
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
meta:
request_id: req_0123456789abcdef0123456789abcdef
next_cursor: null
properties:
data:
type: array
example:
- id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
name: 'Intro call'
description: null
slug: intro-call
duration_minutes: 30
slot_interval_minutes: 30
buffer_before_minutes: 0
buffer_after_minutes: 0
minimum_notice_minutes: 60
maximum_advance_minutes: 43200
meeting_type: google_meet
status: active
bookable: true
unavailable_reason: null
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
items:
type: object
properties:
id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
name:
type: string
example: 'Intro call'
description:
type: string
example: null
nullable: true
slug:
type: string
example: intro-call
duration_minutes:
type: integer
example: 30
slot_interval_minutes:
type: integer
example: 30
buffer_before_minutes:
type: integer
example: 0
buffer_after_minutes:
type: integer
example: 0
minimum_notice_minutes:
type: integer
example: 60
maximum_advance_minutes:
type: integer
example: 43200
meeting_type:
type: string
example: google_meet
status:
type: string
example: active
bookable:
type: boolean
example: true
unavailable_reason:
type: string
example: null
nullable: true
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
next_cursor:
type: string
example: null
nullable: true
tags:
- 'Event Types'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
cursor:
type: string
description: 'Must not be greater than 2048 characters.'
example: b
limit:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
'/v1/event-types/{eventType}':
get:
summary: 'Get an Event Type'
operationId: getAnEventType
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: evt_01J5N6W5KP7Y
host_id: hst_01J5N6W4A1QX
name: 'Intro call'
description: null
slug: intro-call
duration_minutes: 30
slot_interval_minutes: 30
buffer_before_minutes: 0
buffer_after_minutes: 0
minimum_notice_minutes: 60
maximum_advance_minutes: 43200
meeting_type: google_meet
status: active
bookable: true
unavailable_reason: null
created_at: '2026-08-12T00:00:00.000Z'
updated_at: '2026-08-12T00:00:00.000Z'
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: object
properties:
id:
type: string
example: evt_01J5N6W5KP7Y
host_id:
type: string
example: hst_01J5N6W4A1QX
name:
type: string
example: 'Intro call'
description:
type: string
example: null
nullable: true
slug:
type: string
example: intro-call
duration_minutes:
type: integer
example: 30
slot_interval_minutes:
type: integer
example: 30
buffer_before_minutes:
type: integer
example: 0
buffer_after_minutes:
type: integer
example: 0
minimum_notice_minutes:
type: integer
example: 60
maximum_advance_minutes:
type: integer
example: 43200
meeting_type:
type: string
example: google_meet
status:
type: string
example: active
bookable:
type: boolean
example: true
unavailable_reason:
type: string
example: null
nullable: true
created_at:
type: string
example: '2026-08-12T00:00:00.000Z'
updated_at:
type: string
example: '2026-08-12T00:00:00.000Z'
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Event Types'
parameters:
-
in: path
name: eventType
description: ''
example: architecto
required: true
schema:
type: string
'/v1/event-types/{eventType}/slots':
get:
summary: 'List available Slots'
operationId: listAvailableSlots
description: ''
parameters:
-
in: query
name: from
description: 'First local date in the availability window. Must be a valid date in the format Y-m-d.'
example: '2026-08-20'
required: true
schema:
type: string
description: 'First local date in the availability window. Must be a valid date in the format Y-m-d.'
example: '2026-08-20'
-
in: query
name: to
description: 'Last local date in the availability window. Must be a valid date in the format Y-m-d.'
example: '2026-08-20'
required: true
schema:
type: string
description: 'Last local date in the availability window. Must be a valid date in the format Y-m-d.'
example: '2026-08-20'
-
in: query
name: timezone
description: 'IANA timezone for local Slot display.'
example: Asia/Bangkok
required: true
schema:
type: string
description: 'IANA timezone for local Slot display.'
example: Asia/Bangkok
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
local_start_at: '2026-08-20T10:00:00+07:00'
local_end_at: '2026-08-20T10:30:00+07:00'
timezone: Asia/Bangkok
meta:
request_id: req_0123456789abcdef0123456789abcdef
properties:
data:
type: array
example:
- start_at: '2026-08-20T03:00:00.000Z'
end_at: '2026-08-20T03:30:00.000Z'
local_start_at: '2026-08-20T10:00:00+07:00'
local_end_at: '2026-08-20T10:30:00+07:00'
timezone: Asia/Bangkok
items:
type: object
properties:
start_at:
type: string
example: '2026-08-20T03:00:00.000Z'
end_at:
type: string
example: '2026-08-20T03:30:00.000Z'
local_start_at:
type: string
example: '2026-08-20T10:00:00+07:00'
local_end_at:
type: string
example: '2026-08-20T10:30:00+07:00'
timezone:
type: string
example: Asia/Bangkok
meta:
type: object
properties:
request_id:
type: string
example: req_0123456789abcdef0123456789abcdef
tags:
- 'Event Types'
parameters:
-
in: path
name: eventType
description: ''
example: architecto
required: true
schema:
type: string