Skip to main content

Create cart booking

Method POST

https://my.easyweek.io/api/public/v2/bookings/cart

Description: This endpoint creates a multi-service ("cart") booking. It produces one order with one booking per item; the services within an item run sequentially from the item's start time. Single-service bookings continue to use Create booking.

Example Request

curl -i -X POST \
https://my.easyweek.io/api/public/v2/bookings/cart \
-H 'Authorization: Bearer <YOUR_SECRET>' \
-H 'Workspace: <YOUR_WORKSPACE>'

Request body

{
"location_uuid": "123b2980-3506-4f8c-abce-97e1ab653406",
"timezone": "America/New_York",
"customer_phone": "+12025550111",
"customer_first_name": "Jane",
"customer_last_name": "Doe",
"customer_email": "jane@example.com",
"booking_comment": "See you soon",
"source": "instagram",
"items": [
{
"datetime_start": "2026-08-15T14:00:00Z",
"services": [
{ "service_uuid": "43537759-435b-4871-bf11-e3ace6a4464b", "staffer_uuid": "eac5a506-69c0-40c4-8758-85c501d26bcb" },
{ "service_uuid": "6b9c2d1e-3f4a-4b5c-8d9e-0a1b2c3d4e5f" }
]
}
]
}

Body Parameters

  • location_uuid (string, required): The location the booking is made at.
  • items (array, required): 1–10 items. Each item is { datetime_start, services[] }. datetime_start is UTC ISO 8601 (YYYY-MM-DDTHH:MM:SSZ); services is 1–10 entries of { service_uuid, staffer_uuid? }. A service without staffer_uuid is auto-allocated.
  • customer_phone (string, required): The customer's phone number.
  • customer_first_name (string, required): The customer's first name.
  • customer_last_name (string, optional): The customer's last name.
  • customer_middle_name (string, optional): The customer's middle name.
  • customer_email (string, optional): The customer's email address.
  • timezone (string, optional): The customer's display timezone.
  • booking_comment (string, optional): A note for the booking.
  • source (string, optional): The booking source label.
  • customer_browser_language (string, optional): The customer's browser language.
  • customer_browser_tz (string, optional): The customer's browser timezone.
  • booking_callback (boolean, optional): Whether a callback is requested.
  • booking_google_meet_guest_emails (string, optional): Comma-separated Google Meet guest emails.

Example Response

{
"bookings": [
{
"uuid": "f017724b-d95a-4267-8704-df99a9edaf56",
"location_uuid": "123b2980-3506-4f8c-abce-97e1ab653406",
"start_time": "2026-08-15T14:00:00Z",
"end_time": "2026-08-15T15:00:00Z",
"timezone": "America/New_York",
"duration": {
"value": 60,
"label": "minutes",
"iso_8601": "PT1H"
},
"quantity": 1,
"slots_count": 1,
"cancel_reason": null,
"canceled_by": null,
"is_canceled": false,
"is_completed": false,
"public_notes": "See you soon",
"currency": "USD",
"policy": {
"policy_text": null,
"is_cancelable": true,
"cancellation_offset": 0,
"cancellation_text": null,
"is_changeable": true,
"change_offset": 0,
"change_text": null
},
"links": [
{ "type": "ical", "link": "https://my.easyweek.io/api/notifications/bookings/6929741/icalendar" },
{ "type": "google_meet", "link": "" },
{ "type": "zoom", "link": "" },
{ "type": "microsoft_teams", "link": "" }
],
"order": {
"tax": [],
"subtotal": 12000,
"subtotal_formatted": "$120.00",
"amount_paid": 0,
"amount_paid_formatted": "$0.00",
"total": 12000,
"total_formatted": "$120.00"
},
"ordered_services": [
{
"uuid": "ce889d66-dbf5-462f-bf67-a0dec4a48941",
"timezone": "America/New_York",
"reserved_on": "2026-08-15T14:00:00Z",
"reserved_until": "2026-08-15T14:30:00Z",
"quantity": 1,
"name": "Basic cut",
"currency": "USD",
"price": 2000,
"price_formatted": "$20.00",
"discount": 0,
"discount_formatted": "$0.00",
"original_price": 2000,
"original_price_formatted": "$20.00",
"tax_name": null,
"tax_value": null,
"duration": { "value": 30, "label": "minutes", "iso_8601": "PT30M" },
"original_duration": { "value": 30, "label": "minutes", "iso_8601": "PT30M" }
}
]
}
]
}