In the sandbox these endpoints work against real carrier test inventory: a search returns real offers and you can create a real booking with a carrier PNR. Two things are worth knowing before you build against them.
- Sandbox orders are test reservations. Nobody flies on them, and they raise no booking or servicing fee — the calls themselves are metered like any other. Cancel what you create; anything left over expires on its own payment time limit.
- Sandbox tickets are test documents. A paid order comes back
ticketedwith test ticket and EMD numbers intickets[]; a hold comes backconfirmedwith none. Readstatusandtickets[], not the HTTP code — that is the check production relies on too.
Price calendar
The cheapest fare per passenger your recent searches found on a route, day by day.
/v1/shopping/calendarRequires X-API-KeyFor drawing prices on a date picker. Each day carries the cheapest fare your own searches in this key's environment found, divided by the search's adults and children, for as long as the airline honours the offers behind it (the search answer's expires_at). A day with no such search is absent from days: show no price there.
The call never reaches an airline and starts no search, so a price is a hint of what a day costs, not a quote. Search the day to get one. Each call is a metered data request (€0.0025 past the free allowance).
On a round trip without departure_date the days are departure days (any return). With departure_date they are return days for that outbound.
Request example
curl --request GET \
--url https://api.norba.io/v1/shopping/calendar \
--header "X-API-Key: $NORBA_KEY"Response example
{
"currency": "EUR",
"days": [
{
"date": "2026-11-04",
"amount": 412.5,
"searched_at": "2026-10-21T18:02:11Z"
},
{
"date": "2026-11-06",
"amount": 386.1,
"searched_at": "2026-10-22T07:45:40Z"
}
]
}Query parameters
originstringRequiredIATA airport code.
BCNdestinationstringRequiredIATA airport code.
JFKfromstringRequiredFirst day, YYYY-MM-DD, inclusive.
2026-11-01tostringRequiredLast day, inclusive; at most 400 days after from.
2026-12-31trip_typestringone_way (default) or round_trip.
round_tripdeparture_datestringRound trip only: the outbound whose return days you want.
2026-11-10cabin_classstringeconomy (default), premium_economy, business or first.
economycurrencystringPrices in this currency only. Default EUR.
EURError codes
400invalid_search — a bad route, trip_type, cabin_class, currency, or departure_date without round_trip; invalid_date — a date that is not YYYY-MM-DD; date_out_of_range — to before from, or more than 400 days after it.