Browse the docs

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

scheduling.eventTypes.list

List your booking event types with their links.

get/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

200
The event types, in the order the page shows them.
Show schema

SchedulingEventTypeListResponse

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

scheduling.slots.list

Free times to book one of your event types.

get/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

200
The free start times, earliest first.
Show schema

SchedulingSlotsResponse

  • dataobjectrequired
    0
    + Show child fields
    • eventTypeIdstringrequired
      0
    • durationMinintegerrequired
      0
    • timeZonestringrequired

      Your booking page's time zone (IANA).

      0
    • fromnumberrequired

      Unix milliseconds.

      0
    • tonumberrequired

      Unix milliseconds.

      0
    • slotsarray of SchedulingSlotrequired
      0
    • truncatedbooleanrequired

      More free times exist in the range than were returned.

      0
  • metaResponseMetarequired

    Metadata on every success response.

    0

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"

scheduling.singleUseLinks.create

Create a single-use booking link for one guest.

post/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 with Idempotent-Replayed: true. Results over 64 KB are not stored; their replay is 409 IDEMPOTENCY_RESULT_UNAVAILABLE with details.originalRequestId (check state with a GET). Same key while the first request runs: 409 IDEMPOTENCY_IN_PROGRESS with Retry-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: a 402 INSUFFICIENT_CREDITS replays 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

  • namestring
    max length 120
  • emailstring
    max length 254
  • expiresInDaysinteger
    default 7min 1max 90

Responses

200
The link, shown once.
Show schema

SchedulingSingleUseLinkResponse

  • dataobjectrequired
    0
    + Show child fields
    • idstringrequired
      0
    • eventTypeIdstringrequired
      0
    • urlstringrequired

      The booking link. Shown once.

      0
    • labelstring | nullrequired

      Who the link is for, as listed in the app.

      0
    • expiresAtnumberrequired

      Unix milliseconds.

      0
  • metaResponseMetarequired

    Metadata on every success response.

    0

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

scheduling.bookings.list

List meetings guests booked with you.

get/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 is 400 CURSOR_MISMATCH.

  • viewquerystring
    upcomingpastcancelled

Responses

200
A page of bookings.
Show schema

SchedulingBookingListResponse

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
  • idstringrequired
    0
  • slugstringrequired
    0
  • titlestringrequired
    0
  • descriptionstring | nullrequired
    0
  • durationsarray of integerrequired

    Lengths a guest picks from, in minutes; the first is the default.

    0
  • locationKindstringrequired
    google_meetteamszoomphonein_personcustom_link
  • isActivebooleanrequired
    0
  • isHiddenbooleanrequired

    Booked by its link only, not listed on the booking page.

    0
  • isDefaultbooleanrequired
    0
  • bookablebooleanrequired

    The type and the booking page are both turned on.

    0
  • urlstringrequired

    The public booking link.

    0
ResponseMetaobject

Metadata on every success response.

  • requestIdstringrequired
    0
  • creditsCreditsMetarequired
    0
  • Cursor pagination. hasMore is the only end signal; pages may be short.

    0
  • dryRunboolean

    True only on a dry-run response (action operations).

    0
CreditsMetaobject
  • usednumberrequired

    Credits charged by this request. Reads are free.

    0
  • balancenumber
    0
  • estimatednumber

    Dry run only (action operations).

    0
  • availablenumber

    Dry run only (action operations).

    0
  • reservationIdstring | null

    Async operations only; the job settles this reservation.

    0
PageMetaobject

Cursor pagination. hasMore is the only end signal; pages may be short.

  • nextCursorstring | nullrequired
    0
  • hasMorebooleanrequired
    0
  • limitintegerrequired
    min 1max 200
SchedulingSlotobject
  • startAtnumberrequired

    Unix milliseconds.

    0
  • endAtnumberrequired

    Unix milliseconds.

    0
  • startIsostringrequired

    ISO 8601, UTC.

    0
  • endIsostringrequired

    ISO 8601, UTC.

    0
SchedulingBookingobject
  • idstringrequired
    0
  • eventTypeIdstringrequired
    0
  • titlestringrequired
    0
  • statusstringrequired
    confirmedcancelledrescheduled
  • startAtnumberrequired

    Unix milliseconds.

    0
  • endAtnumberrequired

    Unix milliseconds.

    0
  • startIsostringrequired
    0
  • endIsostringrequired
    0
  • guestNamestringrequired
    0
  • guestEmailstringrequired
    0
  • guestTimezonestringrequired
    0
  • guestNotesstring | nullrequired
    0
  • answersarray of objectrequired
    0
    + Show child fields
    • labelstringrequired
      0
    • valuestringrequired
      0
  • locationKindstringrequired
    google_meetteamszoomphonein_personcustom_link
  • conferenceUrlstring | nullrequired
    0
  • contactIdstring | nullrequired

    The workspace contact the guest was matched to or created as.

    0
  • cancelledBystring | nullrequired
    guesthost
  • cancelReasonstring | nullrequired
    0
  • createdAtnumberrequired
    0
PagedResponseMetaobject

Metadata on a paginated success response.

  • requestIdstringrequired
    0
  • creditsCreditsMetarequired
    0
  • pagePageMetarequired

    Cursor pagination. hasMore is the only end signal; pages may be short.

    0

← All operations