Check Bookeo availability and manage bookings, holds and customers; read payments.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Cancel a booking. It stays in the system (visible with includeCanceled) but frees its seats. The account's cancellation policy is NOT applied, so no cancellation fee is charged. Bookeo: DELETE /bookings/{bookingNumber}.
The booking number.
Why — included in the customer's cancellation email, if sent.
Email/SMS the business's staff.
Email the customer about the cancellation.
If part of a recurring series, also cancel all following bookings.
Count this in the customer's cancellation stats.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Cancel a booking. It stays in the system (visible with includeCanceled) but frees its seats. The account's cancellation policy is NOT applied, so no cancellation fee is charged. Bookeo: DELETE /bookings/{bookingNumber}.
| Argument | Type | Description |
|---|---|---|
| reason | string | Why — included in the customer's cancellation email, if sent. |
| notifyUsers | boolean | Email/SMS the business's staff. |
| bookingNumber* | string | The booking number. |
| notifyCustomer | boolean | Email the customer about the cancellation. |
| cancelRemainingSeries | boolean | If part of a recurring series, also cancel all following bookings. |
| trackInCustomerHistory | boolean | Count this in the customer's cancellation stats. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bookingNumber"
],
"properties": {
"reason": {
"type": "string",
"description": "Why — included in the customer's cancellation email, if sent."
},
"notifyUsers": {
"type": "boolean",
"description": "Email/SMS the business's staff."
},
"bookingNumber": {
"type": "string",
"description": "The booking number."
},
"notifyCustomer": {
"type": "boolean",
"description": "Email the customer about the cancellation."
},
"cancelRemainingSeries": {
"type": "boolean",
"description": "If part of a recurring series, also cancel all following bookings."
},
"trackInCustomerHistory": {
"type": "boolean",
"description": "Count this in the customer's cancellation stats."
}
}
}Create a confirmed booking for an existing customer (customerId) or a new one (customer). fixed/fixedCourse products need an eventId from the availability tools; flexibleTime products take eventId or startTime. Pass previousHoldId to convert a hold. Does NOT record any payment. Reversible with bookeo_cancel_booking. Bookeo: POST /bookings.
| Argument | Type | Description |
|---|---|---|
| mode | string | Set to "backend" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows). |
| endTime | string | Optional forced end time for flexibleTime products (otherwise Bookeo computes the duration) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| eventId | string | Slot id from bookeo_get_availability_slots / bookeo_search_matching_slots. REQUIRED for fixed and fixedCourse products; optional for flexibleTime (use startTime instead). |
| options | array | Product options (see bookeo_list_products). |
| customer | object | A NEW customer to create together with the booking. Use customerId instead for an existing customer. |
| productId* | string | Product id (see bookeo_list_products). |
Create a customer record. Not needed before booking — bookeo_create_booking can create the customer inline. Bookeo: POST /customers.
| Argument | Type | Description |
|---|---|---|
| gender | string | |
| lastName* | string | |
| firstName* | string | |
| middleName | string | |
| dateOfBirth | string | RFC 3339 full-date, e.g. 1990-04-23. |
| emailAddress | string | |
| languageCode | string | Preferred language, e.g. en_US (underscore, not dash). |
| phoneNumbers | array | |
| streetAddress | object | |
| acceptSmsReminders | boolean |
Temporarily reserve the seats/resources for a draft booking (default 300 s, max 600 s) and get the FINAL price, taxes and amount payable. The recommended step before bookeo_create_booking: pass the returned hold id as previousHoldId there. Holds expire automatically. Bookeo: POST /holds.
| Argument | Type | Description |
|---|---|---|
| endTime | string | Optional forced end time for flexibleTime products (otherwise Bookeo computes the duration) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| eventId | string | Slot id from bookeo_get_availability_slots / bookeo_search_matching_slots. REQUIRED for fixed and fixedCourse products; optional for flexibleTime (use startTime instead). |
| options | array | Product options (see bookeo_list_products). |
| customer | object | A NEW customer to create together with the booking. Use customerId instead for an existing customer. |
| productId* | string | Product id (see bookeo_list_products). |
| resources | array | Resources (e.g. a specific guide or instructor) — for flexibleTime products. |
| startTime | string |
Show which Bookeo account the credentials belong to and which permissions were granted (e.g. bookings_rw_all, customers_r_all, availability_r). A cheap way to confirm the setup works. Bookeo: GET /settings/apikeyinfo.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List available slots (eventId, start/end, seats available) for fixed and fixedCourse products in a time window of at most 31 days. Not for flexibleTime products — use bookeo_search_matching_slots for those. Bookeo: GET /availability/slots.
| Argument | Type | Description |
|---|---|---|
| mode | string | Set to "backend" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows). |
| endTime | string | Search window end, max 31 days after start (required unless paging) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| productId | string | Only this product. Omit for all fixed/fixedCourse products bookable by customers. |
| startTime | string | Search window start (required unless paging) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-300 (Bookeo default 50). |
| pageNavigationToken | string |
Get one booking by its booking number: product, times, participants, options, price, paid amount, status (canceled/accepted/noShow). Bookeo: GET /bookings/{bookingNumber}.
| Argument | Type | Description |
|---|---|---|
| bookingNumber* | string | The booking number (always a string). |
| expandCustomer | boolean | Include full customer details. |
| expandParticipants | boolean | Include full participant details. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bookingNumber"
],
"properties": {
"bookingNumber": {
"type": "string",
"description": "The booking number (always a string)."
},
"expandCustomer": {
"type": "boolean",
"description": "Include full customer details."
},
"expandParticipants": {
"type": "boolean",
"description": "Include full participant details."
}
}
}Get the business's name, contact details, address, website and description. Bookeo: GET /settings/business.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get one customer: contact details, next/previous booking, number of bookings, cancellations and no-shows, membership and store credit. Bookeo: GET /customers/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The customer id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The customer id."
}
}
}Get one payment: amount, method, reason, received time, customer and gateway transaction id. Bookeo: GET /payments/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The payment id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The payment id."
}
}
}List the payments (and refunds, as negative amounts) received for one booking. Bookeo: GET /bookings/{bookingNumber}/payments.
| Argument | Type | Description |
|---|---|---|
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| bookingNumber* | string | The booking number. |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bookingNumber"
],
"properties": {
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"bookingNumber": {
"type": "string",
"description": "The booking number."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}List bookings by start time (startTime+endTime) and/or by last change (lastUpdatedStartTime+lastUpdatedEndTime) — at least one pair is required, each spanning at most 31 days. Optionally filter by product, include canceled bookings, and expand customer/participant details. Bookeo: GET /bookings.
| Argument | Type | Description |
|---|---|---|
| endTime | string | Only bookings starting on/before this (max 31 days after startTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| productId | string | Only bookings for this product. |
| startTime | string | Only bookings starting on/after this (pair with endTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| expandCustomer | boolean | Include full customer details. |
| includeCanceled | boolean | Include canceled bookings (default false). |
List one customer's bookings, optionally between two dates. Bookeo: GET /customers/{id}/bookings.
| Argument | Type | Description |
|---|---|---|
| id* | string | The customer id. |
| endDate | string | Only bookings on/before this date (YYYY-MM-DD). |
| beginDate | string | Only bookings on/after this date (YYYY-MM-DD). |
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| expandParticipants | boolean | Include full participant details. |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The customer id."
},
"endDate": {
"type": "string",
"description": "Only bookings on/before this date (YYYY-MM-DD)."
},
"beginDate": {
"type": "string",
"description": "Only bookings on/after this date (YYYY-MM-DD)."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"expandParticipants": {
"type": "boolean",
"description": "Include full participant details."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}List or search customers — by name, firstName, lastName or emailAddress — optionally only members/non-members or those created since a date. Bookeo: GET /customers.
| Argument | Type | Description |
|---|---|---|
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| searchText | string | Text to search for. Omit to list all. |
| searchField | string | Field searchText applies to (default name). |
| createdSince | string | Only customers created since this time — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| currentMembers | boolean | Include current members (default true). |
| currentNonMembers | boolean | Include non-members (default true). |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
List payments received in a time period, optionally by payment method. Refunds are included with a negative amount. Bookeo: GET /payments.
| Argument | Type | Description |
|---|---|---|
| endTime | string | Period end — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| startTime | string | Period start — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-300 (Bookeo default 50). |
| paymentMethod | string | Only this payment method (Bookeo spells cheque "checque"). |
| paymentMethodOther | string | Custom method name — required when paymentMethod is "other". |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
List the participant categories the account uses (default Adults/Children/Infants plus custom ones like Students), with their ids and seats taken. Needed for peopleNumbers. Bookeo: GET /settings/peoplecategories.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the bookable products (tours, classes, courses, appointments) with their ids, type (fixed, fixedCourse, flexibleTime), duration, participant limits per people category, default rates and options. Bookeo: GET /settings/products.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language for names/descriptions, e.g. en-US. |
| type | string | Only this product type. Omit for all. |
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"type": "string",
"description": "Language for names/descriptions, e.g. en-US."
},
"type": {
"enum": [
"fixed",
"fixedCourse",
"flexibleTime"
],
"type": "string",
"description": "Only this product type. Omit for all."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}List resource types and their resources (guides, instructors, rooms, boats...) with ids. Bookeo: GET /settings/resources.
| Argument | Type | Description |
|---|---|---|
| pageNumber | integer | Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-100 (Bookeo default 50). |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}Find slots that can take a given party (participant counts per category, options, resources), with an estimated price. Works for all product types, including flexibleTime appointments. Window max 31 days. To page through results pass only pageNavigationToken (+ pageNumber). Read-only. Bookeo: POST /availability/matchingslots, GET /availability/matchingslots/{pageNavigationToken}.
| Argument | Type | Description |
|---|---|---|
| mode | string | Set to "backend" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows). |
| endTime | string | Search window end, max 31 days after start (required for a new search) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| options | array | Product options (see bookeo_list_products). |
| productId | string | Product id (required for a new search). |
| resources | array | Resources (e.g. a specific guide or instructor) — for flexibleTime products. |
| startTime | string | Search window start (required for a new search) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| pageNumber |
Change an existing booking — reschedule (eventId or startTime/endTime), change participant counts, options, resources or external reference. Fetches the current booking and sends it back with only your changes applied (Bookeo's PUT takes the full booking). Bookeo: GET then PUT /bookings/{bookingNumber}.
| Argument | Type | Description |
|---|---|---|
| mode | string | Set to "backend" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows). |
| endTime | string | New end time (flexibleTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| eventId | string | New slot id (reschedule a fixed/fixedCourse booking). |
| options | array | Product options (see bookeo_list_products). |
| resources | array | Resources (e.g. a specific guide or instructor) — for flexibleTime products. |
| startTime | string | New start time (flexibleTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| externalRef | string | |
Update a customer's contact details. Fetches the current record and sends it back with only your changes applied (Bookeo's PUT takes the full customer). Bookeo: GET then PUT /customers/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The customer id. |
| gender | string | |
| lastName | string | |
| firstName | string | |
| middleName | string | |
| dateOfBirth | string | RFC 3339 full-date, e.g. 1990-04-23. |
| emailAddress | string | |
| languageCode | string | Preferred language, e.g. en_US (underscore, not dash). |
| phoneNumbers | array | |
| streetAddress | object |
| resources |
| array |
| Resources (e.g. a specific guide or instructor) — for flexibleTime products. |
| startTime | string | Start time, for flexibleTime products when no eventId is given — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| customerId | string | Id of an EXISTING customer (see bookeo_list_customers). |
| externalRef | string | Your own reference for this booking (max 64 chars). |
| notifyUsers | boolean | Email/SMS the business's staff. |
| privateEvent | boolean | Reserve the entire event, if the product allows it. |
| peopleNumbers* | array | Participant counts per people category. |
| notifyCustomer | boolean | Send the customer a confirmation email. |
| previousHoldId | string | Hold id from bookeo_create_hold; it is released on success. |
| promotionCodeInput | string | Promotion code(s), comma-separated. |
| sendCustomerThankyou | boolean | Send the customer a thank-you after the booking. |
| sendCustomerReminders | boolean | Send the customer reminders before the booking. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"productId",
"peopleNumbers"
],
"properties": {
"mode": {
"enum": [
"backend"
],
"type": "string",
"description": "Set to \"backend\" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows)."
},
"endTime": {
"type": "string",
"description": "Optional forced end time for flexibleTime products (otherwise Bookeo computes the duration) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"eventId": {
"type": "string",
"description": "Slot id from bookeo_get_availability_slots / bookeo_search_matching_slots. REQUIRED for fixed and fixedCourse products; optional for flexibleTime (use startTime instead)."
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"id": {
"type": "string",
"description": "Option id (from the product's choice/number/onOff/textOptions)."
},
"name": {
"type": "string",
"description": "Option name, as an alternative to id."
},
"value": {
"type": "string",
"description": "Option value: \"true\"/\"false\" for on/off options, a number as a string, the chosen value's name, or free text."
}
}
},
"description": "Product options (see bookeo_list_products)."
},
"customer": {
"type": "object",
"required": [
"firstName",
"lastName"
],
"properties": {
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"emailAddress": {
"type": "string"
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"type"
],
"properties": {
"type": {
"enum": [
"mobile",
"work",
"home",
"fax"
],
"type": "string"
},
"number": {
"type": "string"
}
}
}
},
"streetAddress": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"postcode": {
"type": "string"
},
"countryCode": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. US."
}
}
}
},
"description": "A NEW customer to create together with the booking. Use customerId instead for an existing customer."
},
"productId": {
"type": "string",
"description": "Product id (see bookeo_list_products)."
},
"resources": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Resource id (see bookeo_list_resources)."
}
}
},
"description": "Resources (e.g. a specific guide or instructor) — for flexibleTime products."
},
"startTime": {
"type": "string",
"description": "Start time, for flexibleTime products when no eventId is given — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"customerId": {
"type": "string",
"description": "Id of an EXISTING customer (see bookeo_list_customers)."
},
"externalRef": {
"type": "string",
"maxLength": 64,
"description": "Your own reference for this booking (max 64 chars)."
},
"notifyUsers": {
"type": "boolean",
"description": "Email/SMS the business's staff."
},
"privateEvent": {
"type": "boolean",
"description": "Reserve the entire event, if the product allows it."
},
"peopleNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"peopleCategoryId",
"number"
],
"properties": {
"number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many people of this category."
},
"peopleCategoryId": {
"type": "string",
"description": "People category id, e.g. Cadults, Cchildren, Cinfants or a custom id (see bookeo_list_people_categories)."
}
}
},
"minItems": 1,
"description": "Participant counts per people category."
},
"notifyCustomer": {
"type": "boolean",
"description": "Send the customer a confirmation email."
},
"previousHoldId": {
"type": "string",
"description": "Hold id from bookeo_create_hold; it is released on success."
},
"promotionCodeInput": {
"type": "string",
"description": "Promotion code(s), comma-separated."
},
"sendCustomerThankyou": {
"type": "boolean",
"description": "Send the customer a thank-you after the booking."
},
"sendCustomerReminders": {
"type": "boolean",
"description": "Send the customer reminders before the booking."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"firstName",
"lastName"
],
"properties": {
"gender": {
"enum": [
"male",
"female",
"unknown"
],
"type": "string"
},
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"middleName": {
"type": "string"
},
"dateOfBirth": {
"type": "string",
"description": "RFC 3339 full-date, e.g. 1990-04-23."
},
"emailAddress": {
"type": "string"
},
"languageCode": {
"type": "string",
"description": "Preferred language, e.g. en_US (underscore, not dash)."
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"type"
],
"properties": {
"type": {
"enum": [
"mobile",
"work",
"home",
"fax"
],
"type": "string"
},
"number": {
"type": "string"
}
}
}
},
"streetAddress": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"postcode": {
"type": "string"
},
"countryCode": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. US."
}
}
},
"acceptSmsReminders": {
"type": "boolean"
}
}
}| Start time, for flexibleTime products when no eventId is given — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| customerId | string | Id of an EXISTING customer (see bookeo_list_customers). |
| externalRef | string | Your own reference for this booking (max 64 chars). |
| privateEvent | boolean | Reserve the entire event, if the product allows it. |
| peopleNumbers* | array | Participant counts per people category. |
| previousHoldId | string | A previous hold in the same session, replaced by this one. |
| promotionCodeInput | string | Promotion code(s), comma-separated. |
| holdDurationSeconds | integer | How long to hold, in seconds (default 300, max 600). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"productId",
"peopleNumbers"
],
"properties": {
"endTime": {
"type": "string",
"description": "Optional forced end time for flexibleTime products (otherwise Bookeo computes the duration) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"eventId": {
"type": "string",
"description": "Slot id from bookeo_get_availability_slots / bookeo_search_matching_slots. REQUIRED for fixed and fixedCourse products; optional for flexibleTime (use startTime instead)."
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"id": {
"type": "string",
"description": "Option id (from the product's choice/number/onOff/textOptions)."
},
"name": {
"type": "string",
"description": "Option name, as an alternative to id."
},
"value": {
"type": "string",
"description": "Option value: \"true\"/\"false\" for on/off options, a number as a string, the chosen value's name, or free text."
}
}
},
"description": "Product options (see bookeo_list_products)."
},
"customer": {
"type": "object",
"required": [
"firstName",
"lastName"
],
"properties": {
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"emailAddress": {
"type": "string"
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"type"
],
"properties": {
"type": {
"enum": [
"mobile",
"work",
"home",
"fax"
],
"type": "string"
},
"number": {
"type": "string"
}
}
}
},
"streetAddress": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"postcode": {
"type": "string"
},
"countryCode": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. US."
}
}
}
},
"description": "A NEW customer to create together with the booking. Use customerId instead for an existing customer."
},
"productId": {
"type": "string",
"description": "Product id (see bookeo_list_products)."
},
"resources": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Resource id (see bookeo_list_resources)."
}
}
},
"description": "Resources (e.g. a specific guide or instructor) — for flexibleTime products."
},
"startTime": {
"type": "string",
"description": "Start time, for flexibleTime products when no eventId is given — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"customerId": {
"type": "string",
"description": "Id of an EXISTING customer (see bookeo_list_customers)."
},
"externalRef": {
"type": "string",
"maxLength": 64,
"description": "Your own reference for this booking (max 64 chars)."
},
"privateEvent": {
"type": "boolean",
"description": "Reserve the entire event, if the product allows it."
},
"peopleNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"peopleCategoryId",
"number"
],
"properties": {
"number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many people of this category."
},
"peopleCategoryId": {
"type": "string",
"description": "People category id, e.g. Cadults, Cchildren, Cinfants or a custom id (see bookeo_list_people_categories)."
}
}
},
"minItems": 1,
"description": "Participant counts per people category."
},
"previousHoldId": {
"type": "string",
"description": "A previous hold in the same session, replaced by this one."
},
"promotionCodeInput": {
"type": "string",
"description": "Promotion code(s), comma-separated."
},
"holdDurationSeconds": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "How long to hold, in seconds (default 300, max 600)."
}
}
}| Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"backend"
],
"type": "string",
"description": "Set to \"backend\" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows)."
},
"endTime": {
"type": "string",
"description": "Search window end, max 31 days after start (required unless paging) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"productId": {
"type": "string",
"description": "Only this product. Omit for all fixed/fixedCourse products bookable by customers."
},
"startTime": {
"type": "string",
"description": "Search window start (required unless paging) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 300,
"minimum": 1,
"description": "Items per page, 1-300 (Bookeo default 50)."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}| expandParticipants |
| boolean |
| Include full participant details. |
| lastUpdatedEndTime | string | Only bookings changed/created on/before this (max 31 days) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
| pageNavigationToken | string | Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated. |
| lastUpdatedStartTime | string | Only bookings changed/created on/after this (pair with lastUpdatedEndTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"endTime": {
"type": "string",
"description": "Only bookings starting on/before this (max 31 days after startTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"productId": {
"type": "string",
"description": "Only bookings for this product."
},
"startTime": {
"type": "string",
"description": "Only bookings starting on/after this (pair with endTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"expandCustomer": {
"type": "boolean",
"description": "Include full customer details."
},
"includeCanceled": {
"type": "boolean",
"description": "Include canceled bookings (default false)."
},
"expandParticipants": {
"type": "boolean",
"description": "Include full participant details."
},
"lastUpdatedEndTime": {
"type": "string",
"description": "Only bookings changed/created on/before this (max 31 days) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
},
"lastUpdatedStartTime": {
"type": "string",
"description": "Only bookings changed/created on/after this (pair with lastUpdatedEndTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"searchText": {
"type": "string",
"description": "Text to search for. Omit to list all."
},
"searchField": {
"enum": [
"name",
"firstName",
"lastName",
"emailAddress"
],
"type": "string",
"description": "Field searchText applies to (default name)."
},
"createdSince": {
"type": "string",
"description": "Only customers created since this time — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"itemsPerPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (Bookeo default 50)."
},
"currentMembers": {
"type": "boolean",
"description": "Include current members (default true)."
},
"currentNonMembers": {
"type": "boolean",
"description": "Include non-members (default true)."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"endTime": {
"type": "string",
"description": "Period end — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"startTime": {
"type": "string",
"description": "Period start — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 300,
"minimum": 1,
"description": "Items per page, 1-300 (Bookeo default 50)."
},
"paymentMethod": {
"enum": [
"creditCard",
"paypal",
"bankTransfer",
"cash",
"checque",
"debitCard",
"existingCredit",
"accountCredit",
"moneyVoucher",
"other"
],
"type": "string",
"description": "Only this payment method (Bookeo spells cheque \"checque\")."
},
"paymentMethodOther": {
"type": "string",
"description": "Custom method name — required when paymentMethod is \"other\"."
},
"pageNavigationToken": {
"type": "string",
"description": "Token from a previous response's info.pageNavigationToken, to fetch another page. Search parameters need not be repeated."
}
}
}| integer |
| Page to fetch (1-based). Used together with pageNavigationToken. |
| itemsPerPage | integer | Items per page, 1-300 (Bookeo default 50). |
| peopleNumbers | array | Participant counts per people category (required for a new search). |
| pageNavigationToken | string | To fetch another page of a previous search: its info.pageNavigationToken. The other search fields are then ignored. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"backend"
],
"type": "string",
"description": "Set to \"backend\" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows)."
},
"endTime": {
"type": "string",
"description": "Search window end, max 31 days after start (required for a new search) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"id": {
"type": "string",
"description": "Option id (from the product's choice/number/onOff/textOptions)."
},
"name": {
"type": "string",
"description": "Option name, as an alternative to id."
},
"value": {
"type": "string",
"description": "Option value: \"true\"/\"false\" for on/off options, a number as a string, the chosen value's name, or free text."
}
}
},
"description": "Product options (see bookeo_list_products)."
},
"productId": {
"type": "string",
"description": "Product id (required for a new search)."
},
"resources": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Resource id (see bookeo_list_resources)."
}
}
},
"description": "Resources (e.g. a specific guide or instructor) — for flexibleTime products."
},
"startTime": {
"type": "string",
"description": "Search window start (required for a new search) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"pageNumber": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (1-based). Used together with pageNavigationToken."
},
"itemsPerPage": {
"type": "integer",
"maximum": 300,
"minimum": 1,
"description": "Items per page, 1-300 (Bookeo default 50)."
},
"peopleNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"peopleCategoryId",
"number"
],
"properties": {
"number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many people of this category."
},
"peopleCategoryId": {
"type": "string",
"description": "People category id, e.g. Cadults, Cchildren, Cinfants or a custom id (see bookeo_list_people_categories)."
}
}
},
"minItems": 1,
"description": "Participant counts per people category (required for a new search)."
},
"pageNavigationToken": {
"type": "string",
"description": "To fetch another page of a previous search: its info.pageNavigationToken. The other search fields are then ignored."
}
}
}| notifyUsers |
| boolean |
| Email/SMS the business's staff about the change. |
| bookingNumber* | string | The booking number. |
| peopleNumbers | array | New participant counts per category (replaces the current ones). |
| notifyCustomer | boolean | Email the customer about the change. |
| promotionCodeInput | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bookingNumber"
],
"properties": {
"mode": {
"enum": [
"backend"
],
"type": "string",
"description": "Set to \"backend\" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows)."
},
"endTime": {
"type": "string",
"description": "New end time (flexibleTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"eventId": {
"type": "string",
"description": "New slot id (reschedule a fixed/fixedCourse booking)."
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"id": {
"type": "string",
"description": "Option id (from the product's choice/number/onOff/textOptions)."
},
"name": {
"type": "string",
"description": "Option name, as an alternative to id."
},
"value": {
"type": "string",
"description": "Option value: \"true\"/\"false\" for on/off options, a number as a string, the chosen value's name, or free text."
}
}
},
"description": "Product options (see bookeo_list_products)."
},
"resources": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Resource id (see bookeo_list_resources)."
}
}
},
"description": "Resources (e.g. a specific guide or instructor) — for flexibleTime products."
},
"startTime": {
"type": "string",
"description": "New start time (flexibleTime) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone."
},
"externalRef": {
"type": "string",
"maxLength": 64
},
"notifyUsers": {
"type": "boolean",
"description": "Email/SMS the business's staff about the change."
},
"bookingNumber": {
"type": "string",
"description": "The booking number."
},
"peopleNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"peopleCategoryId",
"number"
],
"properties": {
"number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many people of this category."
},
"peopleCategoryId": {
"type": "string",
"description": "People category id, e.g. Cadults, Cchildren, Cinfants or a custom id (see bookeo_list_people_categories)."
}
}
},
"minItems": 1,
"description": "New participant counts per category (replaces the current ones)."
},
"notifyCustomer": {
"type": "boolean",
"description": "Email the customer about the change."
},
"promotionCodeInput": {
"type": "string"
}
}
}| acceptSmsReminders | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The customer id."
},
"gender": {
"enum": [
"male",
"female",
"unknown"
],
"type": "string"
},
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"middleName": {
"type": "string"
},
"dateOfBirth": {
"type": "string",
"description": "RFC 3339 full-date, e.g. 1990-04-23."
},
"emailAddress": {
"type": "string"
},
"languageCode": {
"type": "string",
"description": "Preferred language, e.g. en_US (underscore, not dash)."
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"type"
],
"properties": {
"type": {
"enum": [
"mobile",
"work",
"home",
"fax"
],
"type": "string"
},
"number": {
"type": "string"
}
}
}
},
"streetAddress": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"postcode": {
"type": "string"
},
"countryCode": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. US."
}
}
},
"acceptSmsReminders": {
"type": "boolean"
}
}
}