Skip to main content
All CollectionsEnterpriseUse cases
How to manage store and staff schedules using the Booxi API
How to manage store and staff schedules using the Booxi API
Updated yesterday
  • Use of this API requires a partner API Key. To obtain such a key, contact your Booxi representative.

  • Prior to use, consult Booxi's API fair use policy.

  • Remember that the URL at which you access the API depends on your hosting region. This article presents examples from a North American hosting only.

  • API documentation links:

What are store schedules?

Store schedules are by definition the hours during which a store is doing business and accepting bookings. While only one schedule can be active at a time, Booxi allows creating several schedules to meet specific needs or changing business hours throughout the year (i.e. end-of-year holidays, summer time, etc.).

What are staff schedules?

Staff schedules describe the period of time a member of staff is working or available for booking. A staff work schedule can be set by using one of the following options:

  • Open Hours

    • Used for staff that work during business hours.

  • Weekly Work Schedule

    • Used for staff requiring more flexible work hours (schedule defined on a weekly basis).

  • Calendar

    • Used for staff with no fixed schedule (by default unavailable, staff must create available time slots to make them available).

For more info about these options, see here.

Availability

Store availability is determined by the open hour schedule currently active (marked with a green dot in the Back Office). Availability can be changed by assigning a different schedule or by creating a new one.

Staff availability is determined by a staff member's work hour schedule (open hours, weekly work schedule or calendar) minus any busy time slots added to their calendar.

Schedules API

The Schedules API provides endpoints to retrieve, create, update and delete both store and staff schedules. Note that any operation performed on schedules will have an impact on availability and may result in limited booking opportunities. Make sure the operation to be performed will generate the expected result.

Store Schedule

Retrieving a store’s schedules

To retrieve schedules assigned to a store, use the GET/merchant/{merchantId}/schedule endpoint. Your request must minimally include a merchant Id. Additional parameters are available to limit the request’s range.

Mandatory Parameters

Parameter

Format

Description

merchantId

merchantId={merchantId}

merchantId=8099

The id of the target store.

Optional Parameters

Parameter

Format

Description

rangeStart

rangeStart={date}

rangeStart=2022-01-01

Beginning of the date range to retrieve schedules from.

rangeEnd

rageEnd={date}

rangeStart=2024-01-01

End of the date range to retrieve schedules from.

cursor

cursor={cursor}

"cursor": "sl_eJxjZGALcmVgYGdQTtjGAK"

A token to get the next set of results associated with a request.

When the cursor is set, all other query parameters should NOT be set.

Limitations

  • Retrieving schedules by date range is limited to 1 year in the past and 10 years in the future.

Request URL for North America

https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule

cURL

curl -X GET
"https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

Successful JSON Response

When the query is successful, the response will include schedules associated with the specified store for the range of time provided (if any).

Here’s an example of a successful response:

{
"schedules": [
{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-21",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}
],
"cursor": "sl_eJxjZGALcmVgYGdQTtjGAKJ9cvSBDNgBBjAAAFWgBPU"
}

Retrieving a specific store schedule

To retrieve a specific store schedule, use the GET/merchant/{merchantId}/schedule/{scheduleId} endpoint. Your request must minimally include a merchant Id and a schedule Id.

Mandatory Parameters

Parameter

Format

Description

merchantId

merchantId={merchantId}

merchantId=8099

The id of the target store.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

Request URL for North America

https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include the requested schedule and its details.

Here’s an example of a successful response:

{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-21",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Creating a new store schedule

To create a new store schedule, use the POST/merchant/{merchantId}/schedule endpoint. Your request must minimally include a merchant Id and a request body.

Mandatory Parameters

Parameter

Format

Description

merchantId

merchantId={merchantId}

merchantId=8099

The id of the target store.

requestBody

see below for details on its content.

All details related to the new schedule to create.

Limitations

  • Creating overlapping schedules is not permitted nor supported.

Request URL for North America

https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule

cURL

curl -X POST
"https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"
-d "{\"id\":1,\"name\":\"Holiday Season 2023\",\"description\":\"Holidays 2023\",
\"start\":\"2023-12-21\",\"end\":\"2023-12-31\",\"weeklyHours\":[{\"dow\":1,\"start\":\"10:00:00\",\"end\":\"18:00:00\"}]}"

Request Body

{
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-21",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

You can test this API at the following links.

Successful JSON Response

When the query is successful, the response will include the new schedule and its details.

Here’s an example of a successful response:

{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-24",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Updating a store schedule

To update a store schedule, use the PUT/merchant/{merchantId}/schedule/{scheduleId} endpoint. Your request must minimally include a merchant Id, a schedule Id and a request body.

Mandatory Parameters

Parameter

Format

Description

merchantId

merchantId={merchantId}

merchantId=8099

The id of the target store.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

requestBody

see below for details on its content.

All details related to the schedule to update.

Request URL for North America

https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"
-d "{\"id\":1,\"name\":\"Holiday Season 2023\",\"description\":\"Holidays 2023\",
\"start\":\"2023-12-24\",\"end\":\"2023-12-31\",\"weeklyHours\":[{\"dow\":1,\"start\":\"10:00:00\",\"end\":\"18:00:00\"}]}"

Request Body

{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-24",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

You can test this API at the following links.

Successful JSON Response

When the query is successful, the response will include the updated schedule and its details.

Here’s an example of a successful response:

{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-24",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Deleting a store schedule

To delete an existing store schedule, use the DELETE/merchant/{merchantId}/schedule/{scheduleId} endpoint. Your request must minimally include a merchant Id and a schedule Id. Note that this operation cannot be undone and may impact a store’s availability.

Mandatory Parameters

Parameter

Format

Description

merchantId

merchantId={merchantId}

merchantId=8099

The id of the target store.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

Request URL for North America

https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/merchant/YOUR_MERCHANT_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

Successful JSON Response

When the query is successful, the response will include the deleted schedule and its details.

Here’s an example of a successful response:

{
"id": 1,
"name": "Holiday Season 2023",
"description": "Holidays 2023",
"start": "2023-12-24",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Staff Schedule

Retrieving a staff member’s schedules

To retrieve schedules assigned to a staff member, use the GET/staff/{staffId}/schedule endpoint. Your request must minimally include a staff Id. Additional parameters are available to limit the request’s range.

Mandatory Parameters

Parameter

Format

Description

staffId

staffId={staffId}

staffId=21750

The id of the target staff member.

Optional Parameters

Parameter

Format

Description

rangeStart

rangeStart={date}

rangeStart=2022-01-01

Beginning of the date range to retrieve schedules from.

rangeEnd

rageEnd={date}

rangeStart=2024-01-01

End of the date range to retrieve schedules from.

cursor

cursor={cursor}

"cursor": "sl_eJxjZGALcmVgYGdQTtjGAK"

A token to get the next set of results associated with a request.

When the cursor is set, all other query parameters should NOT be set.

Request URL for North America

https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule

cURL

curl -X GET
"https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include schedules associated with the member of staff for the range of time provided (if any).

Here’s an example of a successful response:

{
"schedules": [
{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "10:00:00",
"end": "18:00:00"
}
]
}
]
"cursor": "sl_eJxjZGALcmVgYGdQTtjGAK"
}

Retrieving a specific staff schedule

To retrieve a specific staff schedule, use the GET/staff/{staffId}/schedule/{scheduleId} endpoint. Your request must minimally include a staff Id and a schedule Id.

Mandatory Parameters

Parameter

Format

Description

staffId

staffId={staffId}

stafId=21750

The id of the target staff member.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

Request URL for North America

https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include the requested schedule and its details.

Here’s an example of a successful response:

{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Creating a new staff schedule

To create a new staff schedule, use the POST/staff/{staffId}/schedule endpoint. Your request must minimally include a staff Id and a request body.

Mandatory Parameters

Parameter

Format

Description

staffId

staffId={staffId}

stafId=21750

The id of the target staff member.

requestBody

see below for details on its content.

All details related to the new schedule to create.

Request URL for North America

https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule

cURL

curl -X POST
"https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"
-d "{\"id\":1,\"name\":\"Holiday Season 2023\",\"description\":\"Holidays 2023\",
\"start\":\"2023-12-21\",\"end\":\"2023-12-31\",\"weeklyHours\":[{\"dow\":1,\"start\":\"10:00:00\",\"end\":\"18:00:00\"}]}"

Request Body

{
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include the new schedule and its details.

Here’s an example of a successful response:

{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "10:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "10:00:00",
"end": "18:00:00"
}
]
}

Updating a staff schedule

To update/modify a staff schedule, use the PUT/staff/{staffId}/schedule/{scheduleId} endpoint. Your request must minimally include a staff Id, a schedule Id and a request body.

Mandatory Parameters

Parameter

Format

Description

staffId

staffId={staffId}

stafId=21750

The id of the target staff member.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

requestBody

see below for details on its content.

All details related to the schedule to update.

Request URL for North America

https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"
-d "{\"id\":2,\"name\":\"Fourth Quarter 2023\",\"description\":\"4TH-2023\",
\"start\":\"2023-10-01\",\"end\":\"2023-12-31\",\"weeklyHours\":[{\"dow\":1,\"start\":\"12:00:00\",\"end\":\"18:00:00\"},{\"dow\":2,\"start\":\"12:00:00\",\"end\":\"18:00:00\"}]}"

Request Body

{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "12:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "12:00:00",
"end": "18:00:00"
}
]
}

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include the updated schedule and its details.

Here’s an example of a successful response:

{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "12:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "12:00:00",
"end": "18:00:00"
}
]
}

Deleting a staff schedule

To delete an existing staff schedule, use the DELETE/staff/{staffId}/schedule/{scheduleId} endpoint. Your request must minimally include a staffId and a schedule Id. Note that this operation cannot be undone and may impact staff availability.

Mandatory Parameters

Parameter

Format

Description

staffId

staffId={staffId}

stafId=21750

The id of the target staff member.

scheduleId

scheduleId={scheduleId}

scheduleId=13865

The id associated with the schedule to retrieve.

Request URL for North America

https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID

cURL

curl -X GET
"https://api.booxi.com/booking/v1/staff/YOUR_STAFF_ID/schedule/YOUR_SCHEDULE_ID"
-H "accept: application/json"
-H "Booxi-PartnerKey: YOUR_PARTNER_API_KEY"
-H "Content-Type: application/json"

You can test this API at the following links.

For North America

For Europe

Successful JSON Response

When the query is successful, the response will include the deleted schedule and its details.

Here’s an example of a successful response:

{
"id": 2,
"name": "Fourth Quarter 2023",
"description": "4TH-2023",
"start": "2023-10-01",
"end": "2023-12-31",
"weeklyHours": [
{
"dow": 1,
"start": "12:00:00",
"end": "18:00:00"
},
{
"dow": 2,
"start": "12:00:00",
"end": "18:00:00"
}
]
}

Status Codes & Error Messages

The API returns data in a JSON format as well as standard HTTP status codes.

Code

Status

Description

200

OK

The request was completed successfully.

400

Bad Request

Error caused by an invalid request.

Example: requesting a resource using an incorrect ID.

401

Unauthorized

The request hasn’t been completed because it lacks valid authentication credentials.

Example: Using an incorrect API Key.

403

Forbidden

The request hasn’t been completed because it lacks appropriate permissions.

Example:. Your API key doesn’t grant access to the requested resource (using a merchant API key where a partner API key is expected).

404

Not Found

The requested resource cannot be found on the server.

Example: requesting a resource that has been deleted.

409

Conflict

The request conflicts with the current state of the targeted resource.

Example: creating a new time slot that overlaps with an existing one.

500

Internal Server Error

The server encountered an unexpected condition that prevented it from fulfilling the request.

Example: a connection to the server cannot be established.

Limitations

  • Schedules shown in the Back Office (“My Business” > “Open hours” and “Personnel” > “Work schedule” > “Weekly work schedule”) are limited to 100 entries. If you create schedules for individual days (e.g.: from Jan 1-Jan 1, Jan 2-Jan 2), your schedule count may be higher than 100 and therefore some of your data will not be shown. For this reason, we strongly recommend creating schedules for a longer period of time, such as weekly, bi-weekly, monthly, yearly or seasonal (see here for more info); this is in fact how the schedule functionality is intended to be used.

  • Creating overlapping schedules is neither permitted nor supported.

  • Retrieving schedules by date range is limited to one year in the past and 10 years in the future.

  • The authentication method requires a secure environment.

  • The endpoint must not be exposed on a webpage but rather server side.

  • Endpoints may have their own limitations, please consult our online swagger for more information.

  • Calls per API key shall not exceed 5 requests per second with a maximum of 300 requests per minute. Exceeding this quota will return a 429 error. Respecting this quota and handling any 429 errors are the responsibility of the client. It is recommended to make API calls with an interval of at least 10 milliseconds between each request. Any API calls generating 400 errors will count as double requests for the quota.

  • The use of Booxi API is solely authorized to conduct legal business by the client or a consultant under contractual agreement. Any usage for spam or reported as abusive is strictly prohibited and will result in the revocation of the API access. It is also prohibited to resell the use of the API. For further details, please consult our terms of service.

Did this answer your question?