Update an appointment
Reschedule or cancel a customer appointment.
Patch the appointment with a future slot_start_at to reschedule it. To cancel it, patch the dedicated status endpoint with status: "cancelled". Rescheduling rechecks availability and refuses stale or conflicting changes.
Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The appointment UUID or numeric ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://sell.app/api/v2/bookings/string" \ -H "Content-Type: application/json" \ -d '{ "slot_start_at": "2028-03-27T10:00:00+01:00", "timezone": "Europe/London" }'{
"data": {
"id": "018f61d6-1c46-7b42-8a94-522bc6b5c53f",
"product_id": 41,
"product_variant_id": 73,
"order_id": 501,
"invoice_id": 901,
"customer_id": 301,
"customer_email": "buyer@example.com",
"slot_start_at": "2028-03-26T09:00:00Z",
"slot_end_at": "2028-03-26T09:30:00Z",
"timezone": "Europe/London",
"quantity": 1,
"status": "confirmed",
"calendar_sync_status": "synced",
"external_event_link": "https://calendar.google.com/calendar/event?eid=example",
"video_join_url": "https://meet.google.com/abc-defg-hij",
"confirmed_at": "2028-03-01T12:00:00Z",
"cancelled_at": null,
"created_at": "2028-03-01T11:59:00Z",
"updated_at": "2028-03-01T12:00:00Z",
"product": {
"id": 41,
"title": "Writing consultation"
},
"variant": {
"id": 73,
"title": "Thirty minutes"
}
}
}{
"message": "Unauthenticated."
}{
"message": "This action is unauthorized."
}{
"message": "Rule not found."
}{
"message": "The given data was invalid.",
"errors": {
"data": [
"The data field is required."
]
}
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The booking path parameter.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://sell.app/api/v2/bookings/0/status" \ -H "Content-Type: application/json" \ -d '{ "status": "cancelled" }'{
"data": {
"id": "018f61d6-1c46-7b42-8a94-522bc6b5c53f",
"product_id": 41,
"product_variant_id": 73,
"order_id": 501,
"invoice_id": 901,
"customer_id": 301,
"customer_email": "buyer@example.com",
"slot_start_at": "2028-03-26T09:00:00Z",
"slot_end_at": "2028-03-26T09:30:00Z",
"timezone": "Europe/London",
"quantity": 1,
"status": "confirmed",
"calendar_sync_status": "synced",
"external_event_link": "https://calendar.google.com/calendar/event?eid=example",
"video_join_url": "https://meet.google.com/abc-defg-hij",
"confirmed_at": "2028-03-01T12:00:00Z",
"cancelled_at": null,
"created_at": "2028-03-01T11:59:00Z",
"updated_at": "2028-03-01T12:00:00Z",
"product": {
"id": 41,
"title": "Writing consultation"
},
"variant": {
"id": 73,
"title": "Thirty minutes"
}
}
}{
"message": "Unauthenticated."
}{
"message": "This action is unauthorized."
}{
"message": "Rule not found."
}{
"message": "The given data was invalid.",
"errors": {
"data": [
"The data field is required."
]
}
}