v1.0.0
OpenAPI 3.1.0

Logostream Aviation Data API

This reference covers two separate APIs that share the same API key:

API Base URL Purpose
Aviation Data API aviation-api.logostream.dev Structured data — airlines, airports, cities, countries, routes, maps
Carbon API aviation-api.logostream.dev POST /v1/carbon — CO₂ emissions per ICAO CEC v13.1, accepts structured or raw text input
Logo API airlines-api.logostream.dev Airline logos, airport logos, country flags (image responses)
Livery API airlines-api.logostream.dev High-resolution aircraft livery images by airline ICAO/IATA or AWB number (PNG only)
MCP Server aviation-mcp.logostream.dev Model Context Protocol server — use the Aviation API directly from AI agents and Claude Desktop

All APIs authenticate via the x-api-key header.

Get your API key →

Aviation Data API — airlines, airports, cities, countries, routes

Client Libraries

Aviation Data API

​

List airlines

​

Retrieve airline profiles including colors, alliances, ratings, hubs, and editorial content.

Community plan: At least one filter required. Max 50 results per page.

Query Parameters

  • IATA code(s), comma-separated

  • ICAO code

  • Fuzzy name search

  • Alliance filter

  • ISO 2-letter country code

  • BCP 47 language code for translated fields (name, description, overview, key_fact, category). Defaults to en.

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
  • application/json
  • application/json
Request Example for get/v1/airlines
curl 'https://aviation-api.logostream.dev/v1/airlines?iata=LH%2CBA%2CAF&icao=DLH&name=Emirates&alliance=star_alliance&country_code=DE&lang=de&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "id": 1042,
      "iata": "LH",
      "icao": "DLH",
      "name": "Lufthansa",
      "three_digit_code": "020",
      "country_code": "DE",
      "home_region": "Europe",
      "alliance": "star_alliance",
      "airline_group": "Lufthansa Group",
      "type": "Full service carrier",
      "category": "Passenger",
      "is_oneworld": true,
      "is_staralliance": true,
      "is_skyteam": true,
      "active": true,
      "defunct": "2019",
      "defunct_reason": "string",
      "callsign": "LUFTHANSA",
      "year_founded": 1953,
      "commenced_operations": "1955",
      "hubs": [
        {
          "airport_iata": "FRA",
          "notes": "Primary hub"
        }
      ],
      "focus_cities": [
        {
          "airport_iata": "FRA",
          "notes": "Primary hub"
        }
      ],
      "colors": "#05164d",
      "color2": "string",
      "color3": "string",
      "color4": "string",
      "color5": "string",
      "color6": "string",
      "text_color": "string",
      "text_color2": "string",
      "rating_tripadvisor": 3.5,
      "rating_skytrax_stars": 1,
      "website": "string",
      "phone": "string",
      "description": "string",
      "long_description": "string",
      "hq_address": "string",
      "wikipedia_url": "string",
      "instagram_url": "string",
      "twitter_url": "string",
      "facebook_url": "string",
      "youtube_url": "string",
      "linkedin_url": "string",
      "tiktok_url": "string",
      "logo": {
        "icon": "https://airlines-api.logostream.dev/airlines/icao/DLH?key=YOUR_API_KEY",
        "logo": "https://airlines-api.logostream.dev/airlines/icao/DLH?variant=logo&key=YOUR_API_KEY",
        "logo_white": "https://airlines-api.logostream.dev/airlines/icao/DLH?variant=logo-white&key=YOUR_API_KEY",
        "tail": "https://airlines-api.logostream.dev/airlines/icao/DLH?variant=tail&key=YOUR_API_KEY"
      }
    }
  ]
}

List airports

​

Retrieve airport profiles with traffic stats, city and country data.

Results are sorted by annual passenger count (busiest first).

Community plan: At least one filter required. Max 50 results per page.

Query Parameters

  • IATA code(s), comma-separated

  • ICAO code

  • Fuzzy city name search

  • ISO 2-letter country code

  • Set to 1 to return only large airports

  • BCP 47 language code for translated name and description fields. Defaults to en.

  • Latitude for nearby airport search (use with lon and optionally radius_km)

  • Longitude for nearby airport search

  • Search radius in km around lat/lon (default 100 km). Results sorted by distance_km ascending.

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
Request Example for get/v1/airports
curl 'https://aviation-api.logostream.dev/v1/airports?iata=LHR%2CCDG%2CJFK&icao=EGLL&city_name=London&country_code=DE&major_only=0&lang=de&lat=50.03&lon=8.57&radius_km=50&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "id": 3051,
      "iata": "LHR",
      "icao": "EGLL",
      "name": "London Heathrow",
      "type": "large_airport",
      "latitude": 51.4706,
      "longitude": -0.461941,
      "elevation_ft": 1,
      "timezone": "Europe/London",
      "passengers": 1,
      "aircraft_movements": 1,
      "cargo_tonnes": 1,
      "hubs": [
        {
          "airline_iata": "LH",
          "airline_icao": "DLH",
          "airline_name": "Lufthansa",
          "type": "hub",
          "notes": "string"
        }
      ],
      "terminals": "string",
      "website": "string",
      "phone": "string",
      "address": "string",
      "description": "string",
      "wikipedia_url": "string",
      "active": true,
      "city": {
        "iata_code": "LON",
        "city_name": "London",
        "latitude": 1,
        "longitude": 1
      },
      "country": {
        "code2": "GB",
        "name": "United Kingdom",
        "continent_code": "EU"
      },
      "logo": {
        "icon": "https://airlines-api.logostream.dev/airports/icao/EDDF?key=YOUR_API_KEY",
        "logo": "https://airlines-api.logostream.dev/airports/icao/EDDF?variant=logo&key=YOUR_API_KEY",
        "logo_white": "https://airlines-api.logostream.dev/airports/icao/EDDF?variant=logo-white&key=YOUR_API_KEY"
      }
    }
  ]
}

List cities

​

Retrieve city data including coordinates, timezone, and population.

Community plan: At least one filter required.

Query Parameters

  • City IATA code

  • Fuzzy city name search

  • ISO 2-letter country code

  • BCP 47 language code for translated city_name and state_full fields. Defaults to en.

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
Request Example for get/v1/cities
curl 'https://aviation-api.logostream.dev/v1/cities?iata=LON&name=london&country=GB&lang=de&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "id": 4201,
      "iata_code": "LON",
      "city_name": "London",
      "state_short": "string",
      "state_full": "string",
      "latitude": 1,
      "longitude": 1,
      "timezone": "string",
      "population": 1,
      "popularity_score": 1,
      "wikipedia_url": "string",
      "website": "string",
      "country": {
        "code2": "GB",
        "name": "United Kingdom",
        "continent_code": "EU"
      }
    }
  ]
}

List countries

​

Full list of 252 countries available on all plans without filter.

Query Parameters

  • ISO 2-letter country code

  • Fuzzy name search

  • Continent code

    values
    AFANASEUNAOCSA
  • BCP 47 language code. name uses CLDR data (264 languages, no API cost). region and subregion use Google Translate. Defaults to en.

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
Request Example for get/v1/countries
curl 'https://aviation-api.logostream.dev/v1/countries?code=DE&continent=AF&lang=de&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "code2": "DE",
      "code3": "DEU",
      "name": "Germany",
      "region": "Europe",
      "continent_code": "EU",
      "subregion": "string",
      "capital": "Berlin",
      "capital_code": "BER",
      "currency_code": "EUR",
      "currency_name": "Euro",
      "currency_symbol": "€",
      "phone_code": "49",
      "population": 1,
      "area_km2": 1,
      "landlocked": true,
      "driving_side": "left",
      "timezone": "string",
      "tld": "string",
      "wikipedia_url": "string",
      "capital_city": {
        "iata_code": "string",
        "city_name": "string",
        "latitude": 1,
        "longitude": 1
      },
      "flag": {
        "url": "https://airlines-api.logostream.dev/country/DE?key=YOUR_API_KEY"
      }
    }
  ]
}

List routes

​

Flight routes between airports. Returns departure/arrival IATA codes and operating airlines.

At least one filter is required.

Query Parameters

  • Departure airport IATA

  • Departure airport ICAO

  • Arrival airport IATA

  • Airline IATA code

  • Airline ICAO code

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/routes
curl 'https://aviation-api.logostream.dev/v1/routes?departureIata=FRA&departureIcao=EDDF&arrivalIata=LHR&airlineIata=LH&airlineIcao=DLH&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "id": 1,
      "departure_iata": "FRA",
      "arrival_iata": "JFK",
      "distance_km": 6130,
      "duration_min": 490,
      "airlines": [
        {
          "airline_iata": "LH",
          "airline_icao": "DLH",
          "alliance": "Star Alliance"
        }
      ],
      "co2_kg": 704,
      "departure_timezone": "Europe/Berlin",
      "arrival_timezone": "America/New_York",
      "timezone_offset_hours": -6
    }
  ]
}

Find 1-stop connections

​

Find 1-stop connecting routes between two airports.

For each intermediate hub that has direct routes from from and to to, returns both legs with full distance, duration, CO₂, and airline data. Results sorted by total distance ascending. Max 20 hubs.

Query Parameters

  • Origin airport IATA code

  • Destination airport IATA code

  • Maximum number of connections to return (default 20)

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/routes/connections
curl 'https://aviation-api.logostream.dev/v1/routes/connections?from=FRA&to=LAX&limit=20' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "data": [
    {
      "hub": "AMS",
      "leg1": {
        "departure_iata": "FRA",
        "arrival_iata": "AMS",
        "distance_km": 364,
        "duration_min": 57,
        "co2_kg": 42,
        "airlines": [
          {
            "airline_iata": "string",
            "airline_icao": "string",
            "alliance": "string"
          }
        ]
      },
      "leg2": {
        "departure_iata": "AMS",
        "arrival_iata": "LAX",
        "distance_km": 8944,
        "duration_min": 700,
        "co2_kg": 1029,
        "airlines": [
          {
            "airline_iata": "string",
            "airline_icao": "string",
            "alliance": "string"
          }
        ]
      },
      "total_distance_km": 9308,
      "total_duration_min": 847,
      "total_co2_kg": 1071
    }
  ]
}

Routes between two countries

​

Returns all direct routes between airports in two countries. Useful for finding all flights connecting two markets.

Results sorted by distance ascending.

Query Parameters

  • Origin country ISO 2-letter code

  • Destination country ISO 2-letter code

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/routes/country-pair
curl 'https://aviation-api.logostream.dev/v1/routes/country-pair?from=DE&to=JP' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "summary": {
    "direct_routes": 12,
    "airport_pairs": 8,
    "airlines_count": 5
  },
  "data": [
    {
      "departure_iata": "FRA",
      "arrival_iata": "NRT",
      "distance_km": 9330,
      "duration_min": 730,
      "co2_kg": 1073,
      "airlines": [
        {
          "airline_iata": "string",
          "airline_icao": "string",
          "alliance": "string"
        }
      ]
    }
  ]
}

Multi-city trip planner

​

Plan a multi-city trip across 2–10 stops. For each leg, returns whether a direct route exists, operating airlines, distance, duration, CO₂, and timezone offset. Also returns trip totals.

Use cases: round-the-world planning, open-jaw itineraries, multi-station business travel.

Query Parameters

  • Comma-separated IATA airport codes in order (2–10). Append the origin again for round-trips, e.g. FRA,DXB,SIN,SYD,FRA.

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/trips/plan
curl 'https://aviation-api.logostream.dev/v1/trips/plan?stops=FRA%2CDXB%2CSIN%2CSYD' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "legs": [
    {
      "departure_iata": "FRA",
      "arrival_iata": "DXB",
      "is_direct": true,
      "distance_km": 4839,
      "duration_min": 393,
      "co2_kg": 557,
      "timezone_offset_hours": 3,
      "airlines": [
        {
          "airline_iata": "string",
          "airline_icao": "string",
          "alliance": "string"
        }
      ]
    }
  ],
  "totals": {
    "total_distance_km": 19010,
    "total_duration_min": 1677,
    "total_co2_kg": 2186,
    "countries_visited": [
      "DE",
      "AE",
      "SG",
      "AU"
    ]
  }
}

Airport statistics

​

Aggregated statistics for an airport — route counts, destinations, top routes, and hub airlines.

Path Parameters

  • Airport IATA code (3 letters, e.g. FRA) or ICAO code (4 letters, e.g. EDDF)

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/stats/airport/{iata}
curl https://aviation-api.logostream.dev/v1/stats/airport/FRA \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "iata": "FRA",
  "stats": {
    "destinations_count": 1,
    "origins_count": 1,
    "airlines_count": 1,
    "countries_reached": 1,
    "outbound_routes": 1,
    "inbound_routes": 1,
    "longest_destination": "SYD",
    "shortest_destination": "MUC"
  },
  "top_destinations": [
    {
      "iata": "string",
      "airlines_count": 1,
      "distance_km": 1
    }
  ],
  "hubs": [
    {
      "iata": "string",
      "icao": "string",
      "name": "string",
      "alliance": "string",
      "notes": "string"
    }
  ],
  "focus_cities": [
    {
      "iata": "string",
      "icao": "string",
      "name": "string",
      "alliance": "string",
      "notes": "string"
    }
  ]
}

Airline statistics

​

Aggregated statistics for an airline — route counts, top destinations, fleet, and hub airports.

Pass a 2-letter IATA code or 3-letter ICAO code. ICAO is preferred to avoid ambiguity (e.g. LH matches both Lufthansa and Lufthansa Cargo — use DLH for Lufthansa only).

Path Parameters

  • Airline IATA (2-letter) or ICAO (3-letter) code

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/stats/airline/{code}
curl https://aviation-api.logostream.dev/v1/stats/airline/DLH \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "iata": "LH",
  "icao": "DLH",
  "name": "Lufthansa",
  "stats": {
    "routes_count": 1,
    "destinations_count": 1,
    "origins_count": 1,
    "airports_count": 1,
    "countries_served": 1,
    "fleet_size": 1,
    "aircraft_types_count": 1,
    "longest_route": {
      "departure_iata": "string",
      "arrival_iata": "string",
      "distance_km": 1
    }
  },
  "hubs": [
    {
      "iata": "string",
      "name": "string",
      "country_code": "string",
      "notes": "string"
    }
  ],
  "focus_cities": [
    {
      "iata": "string",
      "name": "string",
      "country_code": "string",
      "notes": "string"
    }
  ],
  "top_airports": [
    {
      "iata": "string",
      "name": "string",
      "country_code": "string",
      "routes_count": 1
    }
  ],
  "top_destinations": [
    {
      "iata": "string",
      "routes_count": 1
    }
  ],
  "fleet": [
    {
      "aircraft_iata": "string",
      "count": 1,
      "range_km": 1
    }
  ]
}

List airline hubs and focus cities

​

Curated list of hub and focus-city assignments between airlines and airports.

Sourced from the airline_hubs table, the single source of truth for hub data across the API. Filter by airline (IATA), airport (IATA), or assignment type. When an IATA code is ambiguous (e.g. CA matches both Air China and Air China Cargo), pass airline_icao as a disambiguator.

Query Parameters

  • Airline IATA code (e.g. LH, AA).

  • Airline ICAO code. Use alone, or with airline to disambiguate carriers sharing an IATA.

  • Airport IATA code (e.g. FRA, JFK).

  • Filter by assignment type.

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
Request Example for get/v1/hubs
curl 'https://aviation-api.logostream.dev/v1/hubs?airline=LH&airline_icao=DLH&airport=FRA&type=hub&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "data": [
    {
      "type": "hub",
      "notes": "string",
      "airline": {
        "id": 1,
        "iata": "string",
        "icao": "string",
        "name": "string",
        "alliance": "string",
        "country_code": "string"
      },
      "airport": {
        "iata": "string",
        "icao": "string",
        "name": "string",
        "country_code": "string",
        "city_iata_code": "string",
        "latitude": 1,
        "longitude": 1
      }
    }
  ],
  "total": 1,
  "truncated": true,
  "page": 1,
  "limit": 1
}

List aircraft types

​

Aircraft types with manufacturer, range, and fleet usage data.

Query Parameters

  • IATA code(s), comma-separated

  • Fuzzy name search

  • BCP 47 language code for translated name, description, and category fields. Defaults to en.

  • Filter aircraft types by minimum range in km (e.g. 10000 returns only ultra-long-haul capable types)

  • Integer numbers.

  • Integer numbers.

Responses

  • application/json
  • application/json
Request Example for get/v1/aircraft-types
curl 'https://aviation-api.logostream.dev/v1/aircraft-types?iata=32S%2C787%2C350&name=Boeing&lang=de&min_range_km=10000&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "total": 825,
  "truncated": true,
  "page": 1,
  "limit": 50,
  "data": [
    {
      "iata": 787,
      "icao": "B788",
      "name": "Boeing 787-8 Dreamliner",
      "manufacturer": "Boeing",
      "category": "wide_body",
      "first_flight": "2026-10-07",
      "typical_seats": 1,
      "range_km": 1,
      "wikipedia_url": "string",
      "description": "string",
      "image": {
        "white": "https://airlines-api.logostream.dev/livery/icao/AAA?type=787&key=YOUR_KEY"
      },
      "airlines": [
        {
          "count": 1,
          "airline": {
            "iata": "string",
            "name": "string"
          }
        }
      ]
    }
  ]
}

Nearby airports and cities

​

Returns the airports and cities closest to a given latitude/longitude, sorted by great-circle distance. Useful for "closest airport" lookups, location-aware autocomplete, and smart-assistant integrations.

Available on all plans, including Community.

Query Parameters

  • Latitude in decimal degrees.

  • Longitude in decimal degrees. Alias lon is also accepted.

  • Search radius in km. Default 50, max 500. Alias radius_km.

  • Comma-separated list of result types. Use to skip cities or airports.

  • When 1, returns only large_airport types (skips small airports, heliports, air bases).

  • Maximum results per category.

Responses

  • application/json
  • application/json
  • application/json
Request Example for get/v1/nearby
curl 'https://aviation-api.logostream.dev/v1/nearby?lat=-6.1744&lng=106.8294&distance=20&types=airports%2Ccities&major_only=0&limit=100' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "query": {
    "lat": 1,
    "lng": 1,
    "distance_km": 1,
    "types": [
      "string"
    ]
  },
  "counts": {
    "airports": 1,
    "cities": 1
  },
  "airports": [
    {
      "iata_code": "string",
      "icao_code": "string",
      "name": "string",
      "type": "large_airport",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "city": "string",
      "city_code": "string",
      "country_code": "string",
      "country_name": "string",
      "distance": 1
    }
  ],
  "cities": [
    {
      "iata_code": "string",
      "name": "string",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "population": 1,
      "popularity_score": 1,
      "country_code": "string",
      "country_name": "string",
      "distance": 1
    }
  ]
}

Smart autocomplete (countries, cities, airports)

​

Fuzzy multi-bucket autocomplete across countries, cities, and airports, plus derived cross-references (cities of matched airports, top airports in matched countries, etc.).

Designed for destination pickers and search UIs that need rich, cross-referenced suggestions in a single call.

Requires the Startup plan or higher. Not available on Community.

Query Parameters

  • Search query (minimum 2 characters). Matches names plus IATA/ICAO codes (exact).

  • Maximum results per bucket.

Responses

  • application/json
  • application/json
  • application/json
  • application/json
Request Example for get/v1/suggest
curl 'https://aviation-api.logostream.dev/v1/suggest?q=spain&limit=10' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "query": {
    "q": "string",
    "limit": 1
  },
  "countries": [
    {
      "code": "ES",
      "code3": "ESP",
      "name": "string",
      "continent": "EU"
    }
  ],
  "cities": [
    {
      "city_code": "MAD",
      "name": "Madrid",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "population": 1,
      "popularity": 1,
      "country_code": "string"
    }
  ],
  "airports": [
    {
      "iata_code": "string",
      "icao_code": "string",
      "name": "string",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "city_code": "string",
      "country_code": "string",
      "type": "large_airport"
    }
  ],
  "cities_by_airports": [
    {
      "city_code": "MAD",
      "name": "Madrid",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "population": 1,
      "popularity": 1,
      "country_code": "string"
    }
  ],
  "cities_by_countries": [
    {
      "city_code": "MAD",
      "name": "Madrid",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "population": 1,
      "popularity": 1,
      "country_code": "string"
    }
  ],
  "airports_by_cities": [
    {
      "iata_code": "string",
      "icao_code": "string",
      "name": "string",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "city_code": "string",
      "country_code": "string",
      "type": "large_airport"
    }
  ],
  "airports_by_countries": [
    {
      "iata_code": "string",
      "icao_code": "string",
      "name": "string",
      "lat": 1,
      "lng": 1,
      "timezone": "string",
      "city_code": "string",
      "country_code": "string",
      "type": "large_airport"
    }
  ]
}

Reference list of IANA timezones

​

Returns the IANA timezones used by active airports together with their country code, standard offset (winter), and DST offset (summer).

Useful for time-zone pickers, scheduling UIs, and translating between user local time and airport local time.

Available on all plans, including Community.

Query Parameters

  • ISO 3166 alpha-2 country code filter, e.g. DE.

Responses

  • application/json
  • application/json
Request Example for get/v1/timezones
curl 'https://aviation-api.logostream.dev/v1/timezones?country_code=DE' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "count": 1,
  "data": [
    {
      "timezone": "Europe/Berlin",
      "country_code": "DE",
      "gmt": 1,
      "dst": 2
    }
  ]
}

Aviation news stories

​

Returns AI-consolidated aviation news stories. Multiple raw articles covering the same event are grouped into a single story with a generated title, summary, sentiment, category, and entity associations.

Stories are updated hourly by a consolidation pipeline that crawls RSS feeds, then uses Claude to match new articles against existing stories and classify new ones. Entity associations (airlines, airports, aircraft types) are resolved against the database — no hallucinated codes.

Filter logic: iata/icao use OR logic (matches either). Combining airline + airport filters uses AND logic (story must match both).

Translation: Add lang (BCP-47) to translate title and summary. Uses a 3-tier cache (KV → Supabase → Google Translate) — first request for a language is slower, subsequent requests are served from cache.

Categories

Value Description
fleet_order Aircraft orders, deliveries
route_launch New routes, frequency changes
accident Accidents, incidents, safety
financial Results, revenue, costs
labor Strikes, unions, staffing
regulation Regulation, slots, legislation
partnership Codeshares, alliances, acquisitions
operations Delays, cancellations, schedule
sustainability SAF, CO2, green initiatives
technology IFE, digital, apps
general Other aviation news

Query Parameters

  • Filter by airline IATA code

  • Filter by airline ICAO code

  • Filter by airport IATA code

  • Filter by airport ICAO code

  • Filter by story category

    values
    fleet_orderroute_launchaccidentfinanciallaborregulationpartnershipoperationssustainabilitytechnologygeneral
  • Filter by sentiment

  • Translate title and summary (BCP-47, e.g. de, fr, zh-CN). Default: en. First request per language may be slower — subsequent requests are cached.

  • Page size (default 50)

  • Pagination offset (default 0)

Responses

  • application/json
Request Example for get/v1/news
curl 'https://aviation-api.logostream.dev/v1/news?iata=LH&icao=DLH&airport_iata=FRA&airport_icao=EDDF&category=partnership&sentiment=negative&lang=de&limit=50&offset=0' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "title": "Lufthansa Increases ITA Airways Stake to 90%",
      "summary": "Lufthansa Group has increased its stake in ITA Airways to 90%, moving closer to full acquisition.",
      "sentiment": "neutral",
      "category": "partnership",
      "published_at": "2026-06-02T10:00:00Z",
      "updated_at": "2026-06-03T08:15:00Z",
      "source_count": 3,
      "sources": [
        {
          "name": "Simple Flying",
          "url": "https://simpleflying.com/example"
        },
        {
          "name": "World Airline News",
          "url": "https://worldairlinenews.com/example"
        }
      ],
      "associated_airlines": [
        {
          "id": 96601,
          "name": "Lufthansa",
          "iata": "LH",
          "icao": "DLH"
        },
        {
          "id": 12345,
          "name": "ITA Airways",
          "iata": "AZ",
          "icao": "ITY"
        }
      ],
      "associated_airports": [
        {
          "id": 789,
          "name": "Frankfurt Airport",
          "iata": "FRA",
          "icao": "EDDF"
        }
      ],
      "associated_aircraft_types": [
        {
          "iata": "359",
          "icao": "A359",
          "name": "Airbus A350-900",
          "manufacturer": "Airbus"
        }
      ]
    }
  ],
  "total": 42,
  "limit": 50,
  "offset": 0
}

CO₂ emissions calculator (ICAO CEC v13.1)

​

Calculates flight CO₂ emissions per ICAO Carbon Emissions Calculator v13.1 — CSRD-compliant.

Accepts either structured input (from + to) or raw text (raw_text). Raw text accepts IATA codes, dash-chains, SITA/ACARS messages, booking confirmation snippets, and boarding pass OCR output.

Parse pipeline (raw_text):

  1. Regex — flight number, IATA codes, dash-chains, SITA preprocessing
  2. Supabase upstream validation — airports, airline, seat config (parallel)
  3. Workers AI fallback — llama-3.1-8b, for natural language when stage 2 is incomplete

ICAO code resolution (structured input): 4-letter ICAO airport codes (e.g. EDDF) and 3-letter ICAO airline codes (e.g. DLH) are automatically resolved to IATA before calculation.

Accepted raw_text formats:

  • IATA codes: LH400 FRA JFK A350
  • Dash-chain: FRA-DXB-SYD A380
  • Via-keyword: FRA via DXB to SYD EK A380
  • SITA MVT: MVT LH/400 .FRA1025 .JFK1310 A359
  • Booking email snippet: Flight: LH 400 From: FRA To: JFK Aircraft: A350-900

Known limitations:

  • Flight number only (LH400) — no result without a schedule database
  • Arrival-only SITA (ARR DLH400 BER) — departure airport unknown
  • ICAO airport codes in raw_text (e.g. EDDF) — not auto-resolved in free text; use structured from/to instead
  • City-name-only input — LLM fallback, unreliable for short or ambiguous inputs

Plan gating: requires Starter plan or higher. Community keys receive HTTP 403.

Body

required
application/json
  • Aircraft type — accepts common aliases: A350, B777, A380, B737MAX, etc.

  • Airline IATA (LH) or ICAO (DLH). Used to look up real seat dimensions for yseat calculation.

  • Passenger cabin class for per-seat CO₂ calculation.

    values
    economypremium_economybusinessfirst
  • Origin airport — IATA (FRA) or ICAO (EDDF). Required if raw_text is omitted.

  • Number of passengers. Adds co2_total_kg and group_total offset costs to the response.

  • Any text containing flight info — booking confirmation, SITA message, boarding pass OCR. Use instead of from/to.

  • Comma-separated intermediate stops — IATA or ICAO codes. Only used with structured input.

  • Destination airport — IATA (JFK) or ICAO (KJFK). Required if raw_text is omitted.

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/v1/carbon
curl https://aviation-api.logostream.dev/v1/carbon \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_SECRET_TOKEN' \
  --data '{
  "from": "FRA",
  "to": "JFK",
  "aircraft": "A350",
  "airline": "LH",
  "cabin_class": "business",
  "passengers": 2
}'
{
  "status": "success",
  "confidence_score": 0.92,
  "parse_stage": "regex+upstream",
  "parsed_data": {
    "flight_number": "LH400",
    "route": {
      "origin": {
        "iata": "FRA",
        "city": "Frankfurt am Main",
        "airport": "Frankfurt am Main",
        "country_code": "DE"
      },
      "stopovers": [
        {
          "iata": "string",
          "city": "string",
          "airport": "string",
          "validated": true
        }
      ],
      "destination": {
        "iata": "JFK",
        "city": "New York City",
        "airport": "John F Kennedy International",
        "country_code": "US"
      },
      "distance_km": 6314,
      "distance_nm": 3409
    },
    "aircraft": {
      "requested": "A350",
      "icao_mapped_type": "359",
      "fallback_used": false
    }
  },
  "sustainability_metrics": {
    "methodology": "ICAO Carbon Emissions Calculator v13.1",
    "icao_route_group": 17,
    "icao_route_regions": "EUR:NAM",
    "rfi_factor": 1.9,
    "rfi_note": "string",
    "legs": [
      {
        "from": "FRA",
        "to": "JFK",
        "distance_km": 6314,
        "distance_nm": 3409,
        "fuel_burn_kg": 46635,
        "co2_kg": 147365.6,
        "co2_with_rfi_kg": 279994.7
      }
    ],
    "flight_totals": {
      "fuel_burn_kg": 46635,
      "co2_kg": 147365.6,
      "co2_with_rfi_kg": 279994.7
    },
    "passenger_footprint": {
      "cabin_class": "economy",
      "passengers": 1,
      "co2_kg": 411,
      "co2_with_rfi_kg": 780.9,
      "co2_total_kg": 822,
      "co2_total_with_rfi_kg": 1561.8,
      "yseat_factor": 1,
      "yseat_source": "dimensions",
      "passenger_load_factor": 0.831,
      "pax_to_cargo_factor": 0.7996,
      "seat_config_source": "airline_config",
      "total_seats": 369,
      "crf_weighted_seats": 369
    },
    "comparison": {
      "vs_train_eu_avg": {
        "train_co2_kg": 88.4,
        "flight_is_x_times_more": 4.6,
        "basis": "string"
      },
      "vs_car_eu_avg": {
        "car_co2_kg": 757.7,
        "flight_vs_car_pct": -46,
        "basis": "string"
      }
    },
    "carbon_offset": {
      "basis": "string",
      "price_eur_per_tonne_co2": 65,
      "price_reference": "2024-Q4",
      "per_passenger": {
        "co2_only_eur": 26.72,
        "with_rfi_eur": 50.76
      },
      "group_total": {
        "passengers": 1,
        "co2_only_eur": 1,
        "with_rfi_eur": 1
      },
      "total_flight_co2_only_eur": 9578.77
    },
    "cabin_comparison": {
      "economy": {
        "co2_kg": 1,
        "co2_with_rfi_kg": 1,
        "yseat_factor": 1,
        "yseat_source": "string",
        "available": true,
        "co2_note": "string"
      },
      "premium_economy": null,
      "business": null,
      "first": null
    }
  },
  "visual_assets": {
    "airline_logo": "https://airlines-api.logostream.dev/airlines/icao/DLH?key=...",
    "route_map_url": "https://aviation-api.logostream.dev/v1/map/route?from=FRA&to=JFK&key=...",
    "ui_branding": {
      "primary_hex": "#05164D",
      "secondary_hex": "#FFCC00"
    }
  }
}

Livery API (Collapsed)

​

MCP Server (Collapsed)

​
MCP Server Operations

Airline code history & mergers

​

Returns merger, rebrand, bankruptcy, and successor/predecessor events for a given airline. Useful for resolving historical IATA/ICAO codes in flight data analysis.

Add ?year=YYYY to resolve which airline held a given code in a specific year — e.g. ?iata=AZ&year=2018 returns Alitalia (ITA Airways only took over in 2021).

Requires Starter plan or higher.

Query Parameters

  • Airline IATA code

  • Airline ICAO code

  • Filter to which airline held this code in the given year. Uses commenced_operations and defunct fields to determine active period.

Responses

  • application/json
  • Missing iata/icao parameter, or invalid year format

  • Airline not found

Request Example for get/v1/airlines/history
curl 'https://aviation-api.logostream.dev/v1/airlines/history?iata=AZ&icao=ITY&year=2018' \
  --header 'x-api-key: YOUR_SECRET_TOKEN'
{
  "iata": "AZ",
  "icao": null,
  "year": "2018",
  "active_airline": {
    "id": 1,
    "iata": "string",
    "icao": "string",
    "name": "string"
  },
  "code_holders": [
    {
      "id": 70949,
      "iata": "AZ",
      "icao": "AZA",
      "name": "Alitalia",
      "active_from": "1946",
      "active_until": "2021",
      "currently_active": false,
      "events": [
        {
          "event_type": "predecessor",
          "related_iata": "AZ",
          "related_icao": "AZA",
          "related_name": "Alitalia",
          "year": "2021",
          "notes": "string",
          "source": "wikidata"
        }
      ]
    }
  ]
}

Models