ResourcesBookings

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.

PATCH
/v2/bookings/{booking}

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

booking*string

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."
    ]
  }
}
PATCH
/v2/bookings/{booking}/status

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

booking*integer

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."
    ]
  }
}