Checkout flow
The end-to-end white-label flow, from browsing to reserving to checkout.
Jetron Fluid powers a complete ticket-buying flow on your own frontend. The flow has three phases: browse, reserve, and order.
Browse events and tickets
Use GET /events to list your host's
public events. Each item is an EventSummary, with the fields needed for an
event listing such as its name, poster, date, location, status, and cheapest
price.
For an event page, use
GET /events/{slug}. It returns
the full Event, including headliners: the public guests and performers
featured on the event page. A headliner has a name, optional role and image,
an isMainArtist flag, and an optional Spotify or Deezer artist profile.
Load supporting images from
GET /events/{slug}/gallery.
Its items are returned in stable creation order, and each includes an
imageURL plus optional altText. Then use
GET /events/{slug}/tickets
to show
the purchasable ticket types. Each ticket includes live availability
(quantityLeft), pricing, and a status such as AVAILABLE or SOLD_OUT.
Reserve tickets
When the attendee picks tickets, call
POST /events/{slug}/reservations.
This
prices the cart and holds the stock for the checkout window, and returns:
reservationToken: identifies the attendee's cart. Echo it as theX-Device-IDheader on the order and release calls.quoteReference: an opaque handle to the priced, server-held quote.total,totalFees,items: the priced cart, in the smallest currency unit.promoCode,discount: the event-scoped promo code and discount, when one was applied.clientExpiresAt: drive a countdown timer on your checkout page.
Calling it again with the same X-Device-ID refreshes/extends the same
reservation instead of holding fresh stock. See
Reservations for the details.
To apply a promo code, include promoCode in the reservation body. Codes must
belong to the event in {slug}; global promo codes are not supported. The
reservation response is the source of truth for the applied discount. See
Promo codes.
Render your checkout page
Collect the attendee's details (email, first name, last name) on your own checkout UI while the countdown runs. Tickets are issued to the email you submit.
Create the order
Call
POST /events/{slug}/orders
with the
quoteReference in the body and the reservationToken echoed as
X-Device-ID:
- Free (zero-total) orders are fulfilled immediately and return
status: "confirmed"with the orderreference. - Paid orders return
status: "pending_payment"and acheckoutUrl. This is the payment link the attendee uses to pay. After payment, the attendee is sent to yourcallbackUrlwith areferencequery parameter.
A duplicate order for the same reservation returns 409.
Releasing a hold early
If the attendee abandons checkout, you can free the stock immediately with
DELETE /events/{slug}/reservations (echo the token as X-Device-ID). Holds
otherwise expire on their own.
Limitations
Seat Map events
Seat Map events cannot be sold through the API yet, and the checkout
endpoints return 400 for them. Use the checkout embed to sell
those events, which supports seat selection in full.
Reservations and orders are never cached.

