Seyaha calls POST /bookings/reserve when a customer selects a slot and begins checkout.
The hold prevents the slot from being double-booked while the customer completes payment.
If your platform does not support holds (instant-confirmation only), you can still
implement this endpoint — just return a confirmation code and a far-future expiresAt.
Seyaha will call POST /bookings/confirm immediately after payment.
Request
Request body
Unit item object
Response
Response body
Error responses
If the slot is no longer available, return 400:
Seyaha reads the message field and surfaces it to the customer.
Implementation notes
The reservationConfirmationCode must be globally unique and stable. Seyaha stores
it immediately after receiving this response and uses it as the key for all subsequent
confirm and cancel operations. Reusing codes across different reservations will cause
Seyaha to cancel the wrong hold.
- Timeout: 5 seconds (HEALTHY) / 10 seconds (DEGRADED)
- Decrease
vacancies on the slot immediately when a hold is created — concurrent checkout attempts should see updated availability.
- Set
expiresAt to a reasonable window (e.g. 15–30 minutes). Seyaha will release expired holds via DELETE /bookings/{code}.
- If you don’t support holds, set
expiresAt far in the future (e.g. 24 hours) — Seyaha will confirm immediately after payment and the hold will be cleaned up.