Booking endpoints support scheduled reservations for users and business accounts. Use them for booking availability search, station selection, price calculation, booking creation, pickup, check-in, extension, update, cancellation, and group booking views.
| Related reference: User API | User API Guide | Discovery And Vehicle Guide | Rental Guide | Error Codes |
A booking reserves a future time window. A rental is the live trip container that is created or associated when the booking is picked up or otherwise converted into an active rental workflow.
Booking availability depends on branch, station, category, time window, vehicle availability, booking station capacity, opening hours, cooldowns, pricing, rental requirements, and business-account context.
Booking price can be calculated before booking creation. The booking price can change if the user changes time, branch/station, category, additions, pricing bundle, or business context.
The booking flow has two distinct parts: pre-booking search and booking management.
| Phase | Goal | Main endpoints |
|---|---|---|
| Pre-booking | Find what can be booked for the desired time and place. | GET /bookings/bookable-categories, GET /bookings/available-categories, GET /bookings/available-stations, POST /bookings/available-stations, GET /booking-price-calculator |
| Create | Create the scheduled booking. | POST /bookings |
| Manage | Update, cancel, check in, extend, or pick up the booking. | GET /bookings/{bookingId}, PATCH /bookings/{bookingId}, DELETE /bookings/{bookingId}, POST /bookings/{bookingId}/check-in, POST /bookings/{bookingId} |
| Convert | Move from booking into live rental behavior. | POST /bookings/{bookingId}, GET /rentals/{rentalId} where returned/linked |
| Task | Endpoint |
|---|---|
| List booking availability days | GET /bookings/availability |
| List available categories | GET /bookings/available-categories |
| List bookable categories | GET /bookings/bookable-categories |
| List available stations | GET /bookings/available-stations |
| Search available stations with time slots | POST /bookings/available-stations |
| Calculate booking price | GET /booking-price-calculator |
Use GET /bookings/bookable-categories to show generally bookable categories, then availability endpoints for a concrete time window.
Recommended pre-booking sequence:
GET /bookings/bookable-categories.GET /bookings/available-categories.GET /bookings/available-stations or POST /bookings/available-stations to find station/time-slot combinations.GET /booking-price-calculator, passing branchId, vehicleCategoryId or pricingBundleId, startTime, endTime, optional additions, optional distance, optional userGroupCode, and optional pricing bundle version.POST /bookings.| Task | Endpoint |
|---|---|
| Create booking | POST /bookings |
| List current user’s bookings | GET /bookings |
| Get upcoming or active bookings | GET /bookings/active |
| Get booking detail | GET /bookings/{bookingId} |
| List group bookings | GET /bookings/user-group/{userGroupId} |
When creating a booking, collect the selected branch/station, end station where relevant, category, time window, additions, group/cost-center context, and pricing information.
Important creation fields:
| Field | Purpose |
|---|---|
branchId |
Start branch or station context. Required. |
endBranchId |
End branch/station for one-way station bookings where supported. |
vehicleCategoryId |
Category the user wants to book. |
startTime / endTime |
Booking time window. Required. |
startPosition / startPositionRadius |
Floating booking context where supported. |
userGroupCode |
Business account context. |
costCenterId |
Business billing/reporting context. |
additions |
Optional extras selected for the booking. |
bookingRequest |
Create as a request that needs operator approval where configured. |
reason / externalReference |
Business or integration metadata. |
| Task | Endpoint |
|---|---|
| Update booking | PATCH /bookings/{bookingId} |
| Pick up booking | POST /bookings/{bookingId} |
| Cancel booking | DELETE /bookings/{bookingId} |
| Check in for booking | POST /bookings/{bookingId}/check-in |
| Check whether booking can be extended | GET /bookings/{bookingId}/extendable |
| Estimate booking extension | GET /bookings/{bookingId}/estimate-extension |
Recalculate availability and price before updating a booking’s time, station, category, vehicle, additions, or business context. Re-fetch the booking after updates, pickup, check-in, extension, or cancellation.
Booking management guidance:
GET /bookings/active for the app home screen or upcoming trip widget.GET /bookings/{bookingId} before showing high-impact actions.PATCH /bookings/{bookingId}, re-run availability and price checks for the proposed change.POST /bookings/{bookingId}/check-in and re-fetch the booking.GET /bookings/{bookingId}/extendable, then GET /bookings/{bookingId}/estimate-extension before presenting the extension action.POST /bookings/{bookingId}. Pickup can fail if the booking is in the wrong state, the pickup window is invalid, requirements are no longer fulfilled, payment is not ready, or the vehicle/station/category configuration changed.| Area | Endpoints |
|---|---|
| Booking CRUD | POST /bookings, GET /bookings, GET /bookings/active, GET /bookings/{bookingId}, PATCH /bookings/{bookingId}, DELETE /bookings/{bookingId} |
| Booking actions | POST /bookings/{bookingId}, POST /bookings/{bookingId}/check-in, GET /bookings/{bookingId}/extendable, GET /bookings/{bookingId}/estimate-extension |
| Availability | GET /bookings/availability, GET /bookings/available-categories, GET /bookings/bookable-categories, GET /bookings/available-stations, POST /bookings/available-stations |
| Pricing and groups | GET /booking-price-calculator, GET /bookings/user-group/{userGroupId} |