Skip to main content
Help travelers choose where they sit and follow their seat confirmation, charges, and refunds. Seats follow the same flow as every ancillary: see Ancillaries.

Find available seats

Show travelers the seats available for their flight before payment. Seat offers contain a numbered seat_map for one flight segment. Each seat lists its availability and characteristics, with price_money for a paid seat. Availability depends on the flight, and the traveler can book without selecting seats.

Open the seat map

Read GET /v1/trip/{trip_id} after adding the flight and travelers. When a seat map is available and the trip can still be changed, the response includes seat_map_url. Open that link to let the traveler pick seats on a seat map. No API key is needed to use the page. The link expires. Read the trip again for a fresh link. Builder MCP get_trip / trip and the CLI command jinko trip-status show the same link.

Wait for availability

A seat offer in items[].available_ancillaries[] carries seat_map_status beside seat_map: Example questions
  1. “Can I choose my seats before paying?”
  2. “Are seats available on both flights?”
  3. “Can I book without choosing a seat?”

Choose seats

Help each traveler choose an available seat for each flight segment.

Seat map page

Open the Jinko seat map page using seat_map_url so the traveler can choose seats before payment. Paid seats are priced in the trip currency. Free seats have no price.

Integration selection

Select seats through the API, Builder MCP trip with select_ancillaries, or CLI jinko select-ancillaries. To select a seat, send the seat offer’s offer_id, its one segment_ref_ids entry, a seat_number whose available is true, and the traveler’s traveler_ref from the trip response. For example, a selection can identify traveler pax_1, segment ["seg_1"], and seat 12A. Choose one seat per traveler per segment. Send every ancillary that should remain selected: select_ancillaries replaces the item’s previous selections. This illustrative trip response shows selected fields. The paid seat costs EUR 15.00; free seats omit the price.
Example questions
  1. “Can we sit together, with one window seat?”
  2. “Which seats have extra legroom?”
  3. “Change my seat and keep the checked bag I selected.”

Check out

Include the traveler’s current seats in the payment flow. Review the seat choices and prices before creating checkout. See Trips and checkout for the payment flow.
After choosing or changing seats, check out again. Pay with the latest checkout link or agent payment parameters, so payment includes the current selections.
Example questions
  1. “How much do these seats add to my trip?”
  2. “Does this payment include the seats I just chose?”

Manage after booking

Track each seat separately from the flight confirmation. Read booked_ancillaries for each seat’s status, assigned seat_number, and any failure_reason. Flight confirmation does not guarantee that every selected seat is confirmed.

Confirmation and charges

Jinko sends the booking.completed event and booking confirmation email once the flight is ticketed, even if a seat is still pending. Check each seat’s outcome in booked_ancillaries. not_charged: true means this seat is not charged to the traveler. failure_reason explains why the seat is pending or failed. If a failed seat had already been charged, it is refunded. Example questions
  1. “My flight is confirmed. Is my seat confirmed too?”
  2. “Why could the airline not confirm my seat?”
  3. “What does this seat’s status mean?”

Cancel and refund

If a booking with a charged seat is canceled, the seat is refunded once the airline refunds Jinko. Until then, its refund.status reads pending_airline_refund. Show that refund as pending, rather than already returned. Example questions
  1. “Was my paid seat refunded too?”
  2. “Is my seat refund still waiting for the airline?”
  1. Flight booking
  2. Bags
  3. Ancillaries
  4. Trips and checkout
  5. Flight refunds and cancellations