Reference · 4 operations
Scheduling
Your booking page, its event types, free times, bookings and single-use links.
Last updated from API version 2026-10-06 at (live spec, refreshed hourly). openapi.json
Event types
List your booking event types with their links.
/api/v1/scheduling/event-types- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
bookable is false when the type or your booking page is turned off.
These are the event types of your own booking page (the signed-in
member's, or those of the member who created the API key), each with
its public link; empty when you have no booking page in this
workspace.
Responses
200The event types, in the order the page shows them.Show schema
SchedulingEventTypeListResponse
- 0
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/scheduling/event-types" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Slots
Free times to book one of your event types.
/api/v1/scheduling/event-types/{id}/slots- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
From your working hours, connected calendars and bookings.
from and to are ISO 8601 date-times or Unix milliseconds
(default: now to 7 days later, at most 14 days).
duration is one of the type's durations (default its first). At
most limit times (default 50); truncated says more exist. An
event type that is not yours is 404 NOT_FOUND; a type or page that
is turned off is 409 SCHEDULING_UNAVAILABLE.
Parameters
- idpathstringrequired
Opaque resource id.
- fromquerystring
ISO 8601 or Unix ms (default now).
- toquerystring
ISO 8601 or Unix ms, at most 14 days after from.
- durationqueryinteger
Minutes (default the type's first).
min 1 - limitqueryinteger
Most times returned.
min 1max 200
Responses
200The free start times, earliest first.Show schema
SchedulingSlotsResponse
- dataobjectrequired0
+ Show child fields− Hide child fields
- eventTypeIdstringrequired0
- durationMinintegerrequired0
- timeZonestringrequired0
Your booking page's time zone (IANA).
- fromnumberrequired0
Unix milliseconds.
- tonumberrequired0
Unix milliseconds.
- 0
- truncatedbooleanrequired0
More free times exist in the range than were returned.
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 409 IDEMPOTENCY_IN_PROGRESS (the first request with this key is still
running; `Retry-After` is the lease left, at most 60 s) or
IDEMPOTENCY_RESULT_UNAVAILABLE (the original result was too large to
store; `details.originalRequestId`).
· 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/scheduling/event-types/$ID/slots" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Single use links
scheduling.singleUseLinks.create
Create a single-use booking link for one guest.
/api/v1/scheduling/event-types/{id}/single-use-links- Scope
- write
- Credits
- Free
- Idempotency-Key
- optional
name and email pre-fill the form; the link is shown once.
It books one meeting then stops working, expires after expiresInDays
(1 to 90, default 7) and works even for a hidden event type. Only a
fingerprint is kept, so url is
in this answer only: a replay with the same Idempotency-Key is
409 IDEMPOTENCY_RESULT_UNAVAILABLE, create another link instead. Free.
An event type that is not yours is 404 NOT_FOUND; a type or page that
is turned off is 409 SCHEDULING_UNAVAILABLE.
Parameters
- idpathstringrequired
Opaque resource id.
- Idempotency-Keyheaderstring
1 to 255 printable ASCII characters, scoped to the API key (a rotated key shares its predecessor's keys) and kept 24 h. Accepted on every POST, PATCH and DELETE (ignored on GET); required from v1 keys where the operation says
x-owlbound-idempotent: required(missing:400 VALIDATION_ERROR,param: Idempotency-Key). Same key and body after completion: the stored response is replayed withIdempotent-Replayed: true. Results over 64 KB are not stored; their replay is409 IDEMPOTENCY_RESULT_UNAVAILABLEwithdetails.originalRequestId(check state with a GET). Same key while the first request runs:409 IDEMPOTENCY_IN_PROGRESSwithRetry-After. Same key, other body or operation:422 IDEMPOTENCY_KEY_REUSED. A request that ended 5xx may be retried with the same key. 4xx results are stored and replayed too: a402 INSUFFICIENT_CREDITSreplays even after a top-up, so use a new Idempotency-Key after adding credits.min length 1max length 255
Request body (required) · application/json
SchedulingSingleUseLinkCreateRequest
- namestringmax length 120
- emailstringmax length 254
- expiresInDaysintegerdefault 7min 1max 90
Responses
200The link, shown once.Show schema
SchedulingSingleUseLinkResponse
- dataobjectrequired0
+ Show child fields− Hide child fields
- idstringrequired0
- eventTypeIdstringrequired0
- urlstringrequired0
The booking link. Shown once.
- labelstring | nullrequired0
Who the link is for, as listed in the app.
- expiresAtnumberrequired0
Unix milliseconds.
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 409 IDEMPOTENCY_IN_PROGRESS (the first request with this key is still
running; `Retry-After` is the lease left, at most 60 s) or
IDEMPOTENCY_RESULT_UNAVAILABLE (the original result was too large to
store; `details.originalRequestId`).
· 422 IDEMPOTENCY_KEY_REUSED (the key was used with another body or operation), or an action that cannot run · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl -X POST "https://app.owlbound.ai/api/v1/scheduling/event-types/$ID/single-use-links" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "My first table",
"email": "ada@example.com",
"expiresInDays": 7
}'Bookings
List meetings guests booked with you.
/api/v1/scheduling/bookings- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
view: upcoming (default), past or cancelled.
Upcoming bookings come earliest first and the others latest first;
these are your own bookings in this workspace (the signed-in member's,
or those of the member who created the API key), cursor-paginated
(meta.page).
Parameters
- limitqueryinteger
Page size.
default 50min 1max 200 - cursorquerystring
Opaque cursor from
meta.page.nextCursor. Reusing it with other filters is400 CURSOR_MISMATCH. - viewquerystringupcomingpastcancelled
Responses
200A page of bookings.Show schema
SchedulingBookingListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/scheduling/bookings" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Models on this page
Shared objects the operations above link to. Clients must ignore fields they do not know.
SchedulingEventTypeobject
- idstringrequired0
- slugstringrequired0
- titlestringrequired0
- descriptionstring | nullrequired0
- durationsarray of integerrequired0
Lengths a guest picks from, in minutes; the first is the default.
- locationKindstringrequiredgoogle_meetteamszoomphonein_personcustom_link
- isActivebooleanrequired0
- isHiddenbooleanrequired0
Booked by its link only, not listed on the booking page.
- isDefaultbooleanrequired0
- bookablebooleanrequired0
The type and the booking page are both turned on.
- urlstringrequired0
The public booking link.
ResponseMetaobject
Metadata on every success response.
- requestIdstringrequired0
- 0
- pagePageMeta0
Cursor pagination.
hasMoreis the only end signal; pages may be short. - dryRunboolean0
True only on a dry-run response (action operations).
CreditsMetaobject
- usednumberrequired0
Credits charged by this request. Reads are free.
- balancenumber0
- estimatednumber0
Dry run only (action operations).
- availablenumber0
Dry run only (action operations).
- reservationIdstring | null0
Async operations only; the job settles this reservation.
PageMetaobject
Cursor pagination. hasMore is the only end signal; pages may be short.
- nextCursorstring | nullrequired0
- hasMorebooleanrequired0
- limitintegerrequiredmin 1max 200
SchedulingSlotobject
- startAtnumberrequired0
Unix milliseconds.
- endAtnumberrequired0
Unix milliseconds.
- startIsostringrequired0
ISO 8601, UTC.
- endIsostringrequired0
ISO 8601, UTC.
SchedulingBookingobject
- idstringrequired0
- eventTypeIdstringrequired0
- titlestringrequired0
- statusstringrequiredconfirmedcancelledrescheduled
- startAtnumberrequired0
Unix milliseconds.
- endAtnumberrequired0
Unix milliseconds.
- startIsostringrequired0
- endIsostringrequired0
- guestNamestringrequired0
- guestEmailstringrequired0
- guestTimezonestringrequired0
- guestNotesstring | nullrequired0
- answersarray of objectrequired0
+ Show child fields− Hide child fields
- labelstringrequired0
- valuestringrequired0
- locationKindstringrequiredgoogle_meetteamszoomphonein_personcustom_link
- conferenceUrlstring | nullrequired0
- contactIdstring | nullrequired0
The workspace contact the guest was matched to or created as.
- cancelledBystring | nullrequiredguesthost
- cancelReasonstring | nullrequired0
- createdAtnumberrequired0
PagedResponseMetaobject
Metadata on a paginated success response.
- requestIdstringrequired0
- 0
- 0
Cursor pagination.
hasMoreis the only end signal; pages may be short.