API reference
Bookings
On this page
List bookings
/bookingsRequired scopes:read_bookings
Query parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Page size, 1–250 (default 50). default 50 · min 1 · max 250 |
cursor | string | next_cursor from the previous page. |
updated_since | string<date-time> | Only objects changed at or after this ISO-8601 time. |
created_since | string<date-time> | Only objects created at or after this ISO-8601 time. |
status | string | Status. One of: |
customer_id | integer | Of this customer. |
order_id | integer | From this order. |
starts_after | string<date-time> | Starting at or after (ISO-8601). |
starts_before | string<date-time> | Starting before (ISO-8601). |
Example request
curl "https://api.sellorchard.com/v1/bookings?limit=50" \
-H "Authorization: Bearer $SELLORCHARD_API_KEY"Response200Bookings.
ShowHide response schema
dataarray of BookingrequiredShowHide item attributes
objectstringrequiredidintegerrequiredId.
numberstringrequiredBooking number.
statusstringrequiredStatus.
One of:
pendingconfirmedcancelledcompletedno_showsourcestringrequiredWhere it was made.
One of:
webadminposservice_namestringrequiredService.
variant_titlestring | nullrequiredOption (duration).
product_idinteger | nullrequiredBooking product.
variant_idinteger | nullrequiredVariant.
order_idinteger | nullrequiredOrder.
customer_idinteger | nullrequiredCustomer.
customer_namestring | nullrequiredName.
customer_emailstring | nullrequiredEmail.
customer_phonestring | nullrequiredPhone.
starts_atstring<date-time>requiredStart (UTC).
ends_atstring<date-time>requiredEnd (UTC).
timezonestringrequiredTime zone it was booked in.
seatsintegerrequiredSeats (classes).
resource_idinteger | nullrequiredResource (staff, room…).
location_idinteger | nullrequiredLocation.
notesstring | nullrequiredNotes.
pricestring | nullrequiredPrice.
pattern ^-?\d+\.\d{2}$
depositstring | nullrequiredDeposit paid.
pattern ^-?\d+\.\d{2}$
balance_duestring | nullrequiredDue at the appointment.
pattern ^-?\d+\.\d{2}$
currencystringrequiredCurrency.
cancel_reasonstring | nullrequiredWhy it was cancelled.
cancelled_atstring<date-time> | nullrequiredCancelled.
created_atstring<date-time>requiredCreated.
updated_atstring<date-time>requiredLast changed.
has_morebooleanrequiredMore pages after this one.
next_cursorstring | nullrequiredPass as
cursorfor the next page; null on the last page.
{
"data": [
{
"object": "booking",
"id": 15,
"number": "B-1015",
"status": "confirmed",
"source": "web",
"service_name": "Haircut",
"variant_title": "30 minutes",
"product_id": 140,
"variant_id": 402,
"order_id": 5521,
"customer_id": 880,
"customer_name": "Ann Lee",
"customer_email": "ann@example.com",
"customer_phone": null,
"starts_at": "2026-11-10T15:00:00Z",
"ends_at": "2026-11-10T15:30:00Z",
"timezone": "America/Chicago",
"seats": 1,
"resource_id": 3,
"location_id": 1,
"notes": null,
"price": "35.00",
"deposit": "0.00",
"balance_due": "0.00",
"currency": "USD",
"cancel_reason": null,
"cancelled_at": null,
"created_at": "2026-11-02T15:00:00Z",
"updated_at": "2026-11-03T09:30:00Z"
}
],
"has_more": false,
"next_cursor": null
}Error responses
- 400
invalid_requestMalformed request (e.g. a bad cursor). - 401
authenticationMissing, invalid, expired or revoked API key. - 403
permissionThe key lacks the scope, or the store's plan doesn't include the API. - 422
invalid_requestInvalid parameters;errorslists each field. - 429
rate_limitedToo many requests. - 500
serverSomething went wrong on our side; safe to retry with the same Idempotency-Key.
Get a booking
/bookings/{id}Required scopes:read_bookings
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer | The object id. |
Example request
curl "https://api.sellorchard.com/v1/bookings/120" \
-H "Authorization: Bearer $SELLORCHARD_API_KEY"Response200A booking.
ShowHide response schema
dataBookingrequiredShowHide child attributes
objectstringrequiredidintegerrequiredId.
numberstringrequiredBooking number.
statusstringrequiredStatus.
One of:
pendingconfirmedcancelledcompletedno_showsourcestringrequiredWhere it was made.
One of:
webadminposservice_namestringrequiredService.
variant_titlestring | nullrequiredOption (duration).
product_idinteger | nullrequiredBooking product.
variant_idinteger | nullrequiredVariant.
order_idinteger | nullrequiredOrder.
customer_idinteger | nullrequiredCustomer.
customer_namestring | nullrequiredName.
customer_emailstring | nullrequiredEmail.
customer_phonestring | nullrequiredPhone.
starts_atstring<date-time>requiredStart (UTC).
ends_atstring<date-time>requiredEnd (UTC).
timezonestringrequiredTime zone it was booked in.
seatsintegerrequiredSeats (classes).
resource_idinteger | nullrequiredResource (staff, room…).
location_idinteger | nullrequiredLocation.
notesstring | nullrequiredNotes.
pricestring | nullrequiredPrice.
pattern ^-?\d+\.\d{2}$
depositstring | nullrequiredDeposit paid.
pattern ^-?\d+\.\d{2}$
balance_duestring | nullrequiredDue at the appointment.
pattern ^-?\d+\.\d{2}$
currencystringrequiredCurrency.
cancel_reasonstring | nullrequiredWhy it was cancelled.
cancelled_atstring<date-time> | nullrequiredCancelled.
created_atstring<date-time>requiredCreated.
updated_atstring<date-time>requiredLast changed.
{
"data": {
"object": "booking",
"id": 15,
"number": "B-1015",
"status": "confirmed",
"source": "web",
"service_name": "Haircut",
"variant_title": "30 minutes",
"product_id": 140,
"variant_id": 402,
"order_id": 5521,
"customer_id": 880,
"customer_name": "Ann Lee",
"customer_email": "ann@example.com",
"customer_phone": null,
"starts_at": "2026-11-10T15:00:00Z",
"ends_at": "2026-11-10T15:30:00Z",
"timezone": "America/Chicago",
"seats": 1,
"resource_id": 3,
"location_id": 1,
"notes": null,
"price": "35.00",
"deposit": "0.00",
"balance_due": "0.00",
"currency": "USD",
"cancel_reason": null,
"cancelled_at": null,
"created_at": "2026-11-02T15:00:00Z",
"updated_at": "2026-11-03T09:30:00Z"
}
}Error responses
- 401
authenticationMissing, invalid, expired or revoked API key. - 403
permissionThe key lacks the scope, or the store's plan doesn't include the API. - 404
not_foundNo such object in this store. - 429
rate_limitedToo many requests. - 500
serverSomething went wrong on our side; safe to retry with the same Idempotency-Key.
Cancel a booking
/bookings/{id}/cancelFrees the slot and refunds as asked. Fires booking.cancelled.
Required scopes:write_bookings
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer | The object id. |
Headers
| Name | Type | Description |
|---|---|---|
Idempotency-Key | string | Any unique string (e.g. a UUID, up to 255 characters). A retry with the same key and body within 24 hours gets the first response again (Idempotent-Replayed: true); the same key with a different body is a 409 conflict. |
Request body
reasonstring | nullWhy.
refundstring | nullfull (to the original payment), credit (store credit) or none; default: the service's policy.
One of:
fullcreditnonenotifybooleanEmail the customer (default true).
Example request
curl -X POST "https://api.sellorchard.com/v1/bookings/120/cancel" \
-H "Authorization: Bearer $SELLORCHARD_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"reason": "Stylist unavailable",
"refund": "full"
}'Response200The booking, with the amount refunded.
ShowHide response schema
dataobjectrequiredShowHide child attributes
refundedstringRefunded for it.
pattern ^-?\d+\.\d{2}$
objectstringrequiredidintegerrequiredId.
numberstringrequiredBooking number.
statusstringrequiredStatus.
One of:
pendingconfirmedcancelledcompletedno_showsourcestringrequiredWhere it was made.
One of:
webadminposservice_namestringrequiredService.
variant_titlestring | nullrequiredOption (duration).
product_idinteger | nullrequiredBooking product.
variant_idinteger | nullrequiredVariant.
order_idinteger | nullrequiredOrder.
customer_idinteger | nullrequiredCustomer.
customer_namestring | nullrequiredName.
customer_emailstring | nullrequiredEmail.
customer_phonestring | nullrequiredPhone.
starts_atstring<date-time>requiredStart (UTC).
ends_atstring<date-time>requiredEnd (UTC).
timezonestringrequiredTime zone it was booked in.
seatsintegerrequiredSeats (classes).
resource_idinteger | nullrequiredResource (staff, room…).
location_idinteger | nullrequiredLocation.
notesstring | nullrequiredNotes.
pricestring | nullrequiredPrice.
pattern ^-?\d+\.\d{2}$
depositstring | nullrequiredDeposit paid.
pattern ^-?\d+\.\d{2}$
balance_duestring | nullrequiredDue at the appointment.
pattern ^-?\d+\.\d{2}$
currencystringrequiredCurrency.
cancel_reasonstring | nullrequiredWhy it was cancelled.
cancelled_atstring<date-time> | nullrequiredCancelled.
created_atstring<date-time>requiredCreated.
updated_atstring<date-time>requiredLast changed.
{
"data": {
"object": "booking",
"id": 15,
"number": "B-1015",
"status": "cancelled",
"source": "web",
"service_name": "Haircut",
"variant_title": "30 minutes",
"product_id": 140,
"variant_id": 402,
"order_id": 5521,
"customer_id": 880,
"customer_name": "Ann Lee",
"customer_email": "ann@example.com",
"customer_phone": null,
"starts_at": "2026-11-10T15:00:00Z",
"ends_at": "2026-11-10T15:30:00Z",
"timezone": "America/Chicago",
"seats": 1,
"resource_id": 3,
"location_id": 1,
"notes": null,
"price": "35.00",
"deposit": "0.00",
"balance_due": "0.00",
"currency": "USD",
"cancel_reason": null,
"cancelled_at": null,
"created_at": "2026-11-02T15:00:00Z",
"updated_at": "2026-11-03T09:30:00Z",
"refunded": "35.00"
}
}Error responses
- 401
authenticationMissing, invalid, expired or revoked API key. - 403
permissionThe key lacks the scope, or the store's plan doesn't include the API. - 404
not_foundNo such object in this store. - 409
conflictThe Idempotency-Key was used with a different request, or that request is still running. - 422
invalid_requestInvalid parameters;errorslists each field. - 429
rate_limitedToo many requests. - 500
serverSomething went wrong on our side; safe to retry with the same Idempotency-Key.