GET /v1/flights/fares/{fareId}/options
Returns a Book-on-Wego fare’s bookable options (price, baggage, refundability, penalties, and the carrier’s terms links when it publishes any), ordered by leg then price. A multi-leg trip needs ONE option per leg - read the top-level price, never min(options). Non-wego fareId 400; stale 404.
Operation ID: getFareOptions
Parameters
| Name | In | Type | Required | Constraints | Description |
|---|---|---|---|---|---|
fareId |
path | string | yes | pattern ^[A-Za-z0-9._:~=-]{1,256}$ |
The Book-on-Wego fare id from a flight-search trip detail. |
currency |
query | string | no | pattern ^[A-Z]{3}$; default "USD" |
Pricing currency as a 3-letter ISO 4217 code. |
locale |
query | string | no | length 1..35; default "en" |
Response language tag. |
Responses
| Status | Description |
|---|---|
200 |
The fare options, ordered by leg then cheapest-first within a leg. |
400 |
Invalid request query/path parameters, or the fares service rejected the fareId or currency (validation_failed; the detail names the recovery). |
401 |
Missing or invalid bearer token. |
404 |
The fare was not found or its search has expired. |
429 |
Rate limit exceeded; retry after the Retry-After seconds. |
502 |
The upstream flights service returned an invalid response. |
503 |
The flights service is temporarily unavailable (upstream_unavailable) or rate-limited upstream (upstream_rate_limited); retry after the Retry-After seconds. |
200 body
| Field | Type | Always present | Description |
|---|---|---|---|
fareId |
string | yes | The fare id these options are for. |
currencyCode |
string | yes | The currency the prices are quoted in – the same value as metadata.currencyCode, which carries currencyCodeSource beside it. Unlike the results read, this route quotes in the currency it asked for, so the two cannot disagree. |
price |
object | no | The whole-trip price for this fare, so no caller has to add per-leg options together. Absent when the upstream did not state one. |
↳ total |
number | yes | Whole-trip, whole-party total for the cheapest combination of options, as the upstream states it. Not computed here. |
↳ totalUsd |
number | no | The same figure in USD. |
↳ currency |
string | yes | ISO 4217 currency of total. |
↳ scope |
string | yes | total covers the whole party (adults + children + infants), not per-person. |
legs |
object[] | no | The legs the options are attributed to, in upstream leg order. Present only when every option carries a legId that matches one of them. |
↳ legId |
number | yes | The leg this group of options prices, as the upstream numbers it (1 = the first leg). |
↳ from |
string | no | Departure airport code of the leg. |
↳ to |
string | no | Arrival airport code of the leg. |
↳ departsAt |
string | no | Local departure date-time of the leg. |
↳ airlines |
string[] | no | Marketing airline codes on the leg. |
options |
object[] | yes | The full fare option list – no filter, no pagination. Ordered by legId, then cheapest-first inside each leg, so the two legs of a split fare never interleave. |
↳ fareOptionId |
string | yes | The fare option id (a UUID); sent to wego.com as the booking link’s branded_fare param. |
↳ name |
string | yes | The marketing name, e.g. Economy Lite. |
↳ price |
object | yes | The price of one fare option (pass-through display values). Always whole-party for passengers; read covers for how much of the trip it pays for. |
↳ refundable |
boolean | yes | Whether this option is refundable. |
↳ exchangeable |
boolean | yes | Whether this option allows a date or flight change. |
↳ baggage |
object | yes | Baggage allowance display strings for one fare option. |
↳ penalties |
object[] | yes | Always both change and cancel, in that order. |
↳ termsUrls |
string[] | no | The airline’s terms and conditions links for this option, in the order the carrier lists them. Absent when the carrier publishes its rules as text rather than links, or when the terms read was unavailable - never an empty array. These are the carrier’s own pages, not a machine-readable rulebook: refundability, exchangeability, baggage and the change/cancel penalties are the fields on this option, and are what an agent should reason over. |
↳ legId |
number | no | The leg this option prices, matching a legs[] entry. Present when the upstream attributes it; absent when it does not. |
metadata |
object | yes | What this read resolved currency and locale to, and how each was decided. |
↳ currencyCode |
string | yes | The currency this read ASKED upstream for, and the one every price on it is meant to be in. Read it beside currencyCodeSource before you show a number: a price computed in the wrong currency renders as a perfectly normal price, with no error and no odd shape to notice, so the response states which one rather than leaving it to be inferred. Where the operation also publishes a top-level currencyCode, that field reports the currency the prices actually came back in; the two agree unless upstream declined to reprice. |
↳ currencyCodeSource |
explicit | default |
yes | How the API resolved currencyCode: explicit (the caller sent currency – including a value equal to the default) or default (USD, no currency sent). A default here is the one signal that the request never carried the currency you meant. |
↳ locale |
string | yes | The language tag this read asked upstream for – what any localized text on it was resolved in (room and board names, airline and airport names, review prose). |
↳ localeSource |
explicit | default |
yes | How the API resolved locale: explicit (the caller sent locale – including a value equal to the default) or default (en, no locale sent). A default here explains text that came back in a language the caller did not ask for. |
Example
curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.wego.com/v1/flights/fares/$FARE_ID/options"