✈️ Welcome to the Aircraft Models API

A comprehensive REST API built with Express & Node.js that provides detailed aircraft information including IATA/ICAO codes, manufacturer details, technical specifications (service ceiling, maximum range), and complete engine data with thrust, dimensions, RPM, and variants.

📋 Get All Models

Retrieve the full list of aircraft models.

GET /api/
Examples:
cURL: curl -X GET https://api-aircraft-models.vercel.app/api/
JavaScript (Fetch):
fetch('https://api-aircraft-models.vercel.app/api/')
    .then(response => response.json())
    .then(data => console.log(data));
Python:
import requests
response = requests.get('https://api-aircraft-models.vercel.app/api/')
print(response.json())
C#:
using System.Net.Http;
using System.Threading.Tasks;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://api-aircraft-models.vercel.app/api/");
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);

Try it

🔎 Get Model Details

Retrieve an aircraft model using its IATA code, including ICAO code, manufacturer, engine type, and number of engines.

GET /api/<IATA_CODE>
Examples:
cURL: curl -X GET https://api-aircraft-models.vercel.app/api/789
JavaScript (Fetch):
fetch('https://api-aircraft-models.vercel.app/api/789')
    .then(response => response.json())
    .then(data => console.log(data));
Python:
import requests
response = requests.get('https://api-aircraft-models.vercel.app/api/789')
print(response.json())
C#:
using System.Net.Http;
using System.Threading.Tasks;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://api-aircraft-models.vercel.app/api/789");
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);

Try with Example

🔢 Filter by Service Ceiling

Filter aircraft models based on their service ceiling (maximum altitude). Supports operator-based filtering and range filtering.

POST /api/filter/ceiling
Filter Modes:

1. Operator-based: Use operator and value parameters

  • gt: Greater than
  • lt: Less than
  • gte: Greater than or equal
  • lte: Less than or equal
  • eq: Equal

2. Range-based: Use min and max parameters for inclusive range filtering

Examples:
cURL (Operator-based):
curl -X POST https://api-aircraft-models.vercel.app/api/filter/ceiling \
  -H "Content-Type: application/json" \
  -d '{"operator": "gt", "value": 40000}'

cURL (Range-based):
curl -X POST https://api-aircraft-models.vercel.app/api/filter/ceiling \
  -H "Content-Type: application/json" \
  -d '{"min": 35000, "max": 45000}'
JavaScript (Operator-based):
fetch('https://api-aircraft-models.vercel.app/api/filter/ceiling', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ operator: 'gt', value: 40000 })
})
    .then(response => response.json())
    .then(data => console.log(data));

JavaScript (Range-based):
fetch('https://api-aircraft-models.vercel.app/api/filter/ceiling', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ min: 35000, max: 45000 })
})
    .then(response => response.json())
    .then(data => console.log(data));
Python (Operator-based):
import requests
response = requests.post(
    'https://api-aircraft-models.vercel.app/api/filter/ceiling',
    json={'operator': 'gt', 'value': 40000}
)
print(response.json())

Python (Range-based):
import requests
response = requests.post(
    'https://api-aircraft-models.vercel.app/api/filter/ceiling',
    json={'min': 35000, 'max': 45000}
)
print(response.json())
C# (Operator-based):
using System.Net.Http;
using System.Text;
using System.Text.Json;

var client = new HttpClient();
var payload = new { @operator = "gt", value = 40000 };
var json = JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
    "https://api-aircraft-models.vercel.app/api/filter/ceiling", content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);

C# (Range-based):
var payload = new { min = 35000, max = 45000 };
var json = JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
    "https://api-aircraft-models.vercel.app/api/filter/ceiling", content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);

📌 Example Response

All responses now include detailed engine information automatically joined from our engines database:

{
  "IATA_Code": "789",
  "ICAO_Code": "B789",
  "Model": "Boeing 787-9 Dreamliner",
  "Manufacturer": "Boeing",
  "Engine_Type": "Turbofan",
  "Number_of_Engines": 2,
  "Service_Ceiling_ft": 43000,
  "Max_Range_nm": 7635,
  "Engine": {
    "ID": "ENG007",
    "Name": "General Electric GEnx-1B",
    "Type": "Turbofan",
    "Manufacturer": "General Electric",
    "Takeoff_Thrust_lbf": 66500,
    "Max_Power_HP": null,
    "Weight_lb": 12250,
    "Dimensions": {
      "Length_in": 181,
      "Diameter_in": 111
    },
    "Max_RPM": 2700,
    "Bypass_Ratio": 9.6,
    "Variants": ["GEnx-1B64", "GEnx-1B67", "GEnx-1B70", "GEnx-1B75"]
  }
}
        
Engine Database

Our API now includes a comprehensive engine database with 157 aircraft engines covering all categories: Turbofans (commercial jets like Boeing 737, A320, 787), Turboprops (regional aircraft like ATR, Dash 8, C-130), Turboshaft (helicopters like Bell, AgustaWestland, Eurocopter), Turbojets (legacy aircraft), and Piston engines (general aviation like Cessna, Piper). Each aircraft response automatically includes detailed engine specifications: thrust/power ratings, weight, physical dimensions, maximum RPM, bypass ratio, and all available engine variants.