Skip to navigation

1 · Origins

List origin airports.

What: the origin airports you can fly from, canonicalised to IATA.

When: to build the “from” field of a search form, or a route picker.

How: POST with a JSON body { tripType? }. No query params.

Trip kind: leave tripType out to list every kind — airports with one-way flights AND airports that only round-trip packages leave from (the same meaning as /search without tripType). Send ONE_WAY or ROUND_TRIP to list only that kind. Round trips are asked only of suppliers that sell round-trip packages. Send the same tripType (or none) to discovery and to /search: a picker that lists every kind but a search that asks for one kind offers dates the search then finds nothing on.

After: POST /destinations (body { origin }) to get where you can fly to.

Each airport carries inventoryCategories — the inventory kinds YOU can book there (the kinds of your suppliers that list it): ["SERIES"] = pre-purchase/special fares, ["ONLINE"] = live online/GDS, [] = none/unknown. Render a badge, or show only series airports by keeping rows whose inventoryCategories include SERIES.

sources is optional. Omit it to use every supplier you have switched on. Send a subset to narrow the picker, and send the SAME list to /search so the routes and dates a user can pick match the suppliers that will be searched. Get the codes from GET /v1/flights/suppliers; a code your key is not switched on for returns 403.

Scope: this returns only YOUR bookable origins. For the full searchable airport master (reference data — every airport, with timezone/geo/ICAO) call GET /v1/airports/*.

Supplier health: meta.suppliers[] has one entry per supplier Kitionz considered, for each trip kind it was asked about: { sourceCode, tripType, status, tookMs }. With no tripType in the request, a supplier that sells round trips has two entries (ONE_WAY and ROUND_TRIP). status = ok, not_asked, or a classified error code. not_asked (with reason = ORIGIN_NOT_LISTED or DEST_NOT_LISTED) means the supplier was not called because its own saved list for the previous step did not contain the airport — an answer, not a fault; treat only error codes as failures, and treat an unrecognised status as opaque. If a supplier fails (or is backing off after rate-limiting Kitionz) and Kitionz holds a recent good answer from it, that answer is still included and its entry carries stale: true + staleAgeMs (route lists up to 24 h old, date lists up to 2 h old with past dates removed). Route lists are cached for up to 2 h and date lists for up to 15 min: a list is served from the cache inside its window and fetched again on the first request after it.

Example — request (an empty body lists every trip kind):

{}

Response (trimmed) — data is the airport array; meta.count is the total:

{ "data": [ { "iataCode": "DEL", "name": "Indira Gandhi Intl", "city": "Delhi", "inventoryCategories": ["SERIES"] } ], "meta": { "count": 1 } }

Authentication

AuthorizationBearer

Your Kitionz API key, sent as Authorization: Bearer keyId:secret. Create it in your Kitionz console under API → API keys.

Request

This endpoint expects an object.
tripTypeenumOptional

ONE_WAY or ROUND_TRIP lists only that kind of trip. Leave it out to list every kind: one-way flights and round-trip packages together (as /search does).

Allowed values:
sourceslist of stringsOptional

Optional. Leave it out to use every supplier your account has switched on. Send a list of sourceCodes only to narrow this call to some of them; a code you cannot use is refused (403), and blank entries are ignored.

Response

Default Response
successboolean
statusCodedouble
datalist of objects
metaobject