List bookings by departure window, confirmation number, buyer email, or free text
const url = 'https://quikstik-core.fly.dev/bookings';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://quikstik-core.fly.dev/bookings \ --header 'Authorization: Bearer <token>'Live operator read (session, or an operator key scoped bookings.read). Exactly ONE
selector: the window pair (window_start + window_end), ref, email, or q. Two
selectors answer 422 conflicting_selectors. Every selector answers the same window-shaped
rows; cancelled bookings ride along with status: cancelled (the caller filters).
ref— the guest’sQS-XXXXXXXXconfirmation number (obligation-ref hex prefix).email— case-insensitive exact match on the buyer’snotify_email.q— case-insensitive substring over buyer name, buyer email and rider display names (riders found through the roster of either the obligation or the booking). At least 3 characters, else 422query_too_short.
email and q return at most 100 rows, newest departure first.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Required together with window_end when no other selector is given.
Guest confirmation number, e.g. QS-F395741B (case-insensitive).
Buyer email, case-insensitive exact match.
Free text, minimum 3 characters.
Responses
Section titled “Responses”Bookings with departures in the window
BookingDto plus departure_start_time, and — when the booking’s agreement carries them — agreed_start_time (RFC3339, only when it differs from the departure) and agreed_meeting_point {name, address}. These are booking facts (a delivery address, a named meet-up place, an amended time) and override the departure row on any sheet; their absence means the departure is the truth. Added 2026-09-25: a departure row is shared (resolved on variant + start time), so per-booking place/time must never be written to it.
object
Example generated
[ {}]Invalid_session
Invalid_window, invalid_reference, invalid_email, query_too_short, or conflicting_selectors
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}Backend unavailable