A flight trip carries one or more fares, each with kind "wego", "airline" or "partner". Wego fares are bookable on wego.com and continue into getFareOptions (/v1/flights/fares/{fareId}/options, the fare’s bookable options such as Saver and Flex; an option’s id is its fareOptionId) and getFareBookingLink (/v1/flights/fares/{fareId}/booking-link). Airline and partner fares are fulfilled by the airline or the travel agency directly and do not work with the fare endpoints: getFareOptions rejects a non-wego fareId with a 400. Every fare carries a handoffUrl on the trip read (GET /v1/flights/trips/{tripId}, fares[].handoffUrl), whatever its kind, so it is not what tells the kinds apart: on a wego fare it points at wego.com checkout, on the other two at the provider.
One option, or one per leg
getFareOptions returns the options ordered by leg first, then price within a leg, so options[0] is the cheapest option of leg 1 rather than the cheapest of the fare. How many ids you carry into getFareBookingLink depends on what each option prices, which it states in price.covers:
"trip"– the option covers the whole journey. Pass exactly onefareOptionId."leg"– the option covers only its own leg, and itslegIdnames which. Pass one id per leg, as a comma-separatedfareOptionId(at most 8, none repeated, order irrelevant). The response’slegs[]is the set to cover; it is present whenever every option carries alegIdmatching one of them, which is the case this branch describes.
Passing a single "leg" id is the failure worth knowing about, because nothing rejects it: the booking page opens on the whole round trip while pricing one leg of it, so the traveler sees a total that is not the trip’s. covers is a positive witness – absent means the upstream did not let us attribute the option, never that it covers the trip.
For the trip total, read the response’s own top-level price, which is the whole-trip price for the fare. Never sum the options and never take min(options): one is wrong on a "trip" fare, the other on a "leg" one.
From the CLI, wego flights fares <fareId> lists them and wego flights booking-link takes --fare-option once per leg.
Hotel rates
Hotel rates follow the same rule: everything getHotelRates (/v1/hotels/{hotelId}/rates) returns is bookable on wego.com, each rate carrying board and refundability fields plus a rate id for the checkout link.