AeroModel
Documentation
format
Response mode of /v1/images/plane: binary or metadata.
Values
| Value | Description | Content-Type |
|---|---|---|
image (default) | Binary image | image/png / image/jpeg / image/webp |
json | Resolution metadata | application/json |
format=image (default)
Standard behavior: returns the image, applies the fallback cascade (never 404 except in extreme cases).
GET https://api.aeromodel.dash-systems.fr/v1/images/plane?api-key=YOUR_KEY&plane=A320&airline=AF
format=json
Returns metadata for the resolution without serving the image. Useful for:
- Pre-validating a combination client-side (check that the aircraft / livery actually exist).
- Retrieving the
assetKeyfor debugging. - Deciding client-side NOT to display if the livery is not the right one (in
imagemode the API serves a fallback you might not want).
GET https://api.aeromodel.dash-systems.fr/v1/images/plane?api-key=YOUR_KEY&plane=A320&airline=AF&format=json
{
"plane": {
"slug": "airbus-a320-200",
"name": "Airbus A320-200",
"iata": "320",
"icao": "A320"
},
"airline": {
"slug": "air-france",
"name": "Air France",
"iata": "AF",
"icao": "AFR"
},
"liveryType": "base",
"appliedLiveryType": "base",
"angle": "90",
"gear": "down",
"filetype": "png",
"renderOptions": {
"width": 1280,
"zoomType": "contain",
"zoomLevel": 1,
"marginPercent": 8
},
"composeOptions": {
"pitch": 0,
"scale": "none",
"align": "center"
},
"compose": {
"runs": false,
"reason": null
},
"assetKey": "liveries/airbus-a320-200/air-france/base/90/down/w-1280_z-contain-1p00_m-8p00.png",
"manifestVersion": "2026-04-29T18:03:11Z",
"fallbackReason": null,
"imageSource": "r2-livery"
}
With fallback
GET https://api.aeromodel.dash-systems.fr/v1/images/plane?api-key=YOUR_KEY&plane=A320&airline=AF&liveryType=does-not-exist&format=json
{
"appliedLiveryType": "base",
"fallbackReason": "livery-unavailable",
"imageSource": "r2-base"
}
On error
In json mode, validation errors return 400:
GET https://api.aeromodel.dash-systems.fr/v1/images/plane?api-key=YOUR_KEY&plane=A320&pitch=120&format=json
→ 400 { "error": "invalid compose options", "details": ["pitch must be a number between -45 and 45"] }
In image mode, the API always tries to serve a fallback (and silently logs).
Use cases
| Scenario | Mode |
|---|---|
Direct display in <img> | image |
| Pre-validation before render | json |
| Debug / inspection | json |
| Build a client-side manifest | json |
Cache busting (change manifestVersion) | json |