AeroModel

Documentation

Response headers

The API adds several diagnostic headers to every /v1/images/plane response. They are safe to inspect client-side (CORS) and useful for debugging + monitoring.

Image diagnostics

HeaderDescriptionExample
x-image-sourceOrigin of the served imager2-livery, r2-base, r2-blank, r2-default, composed, watermark-overlay
x-livery-stateLivery resolution statelivery, blank, fallback
x-livery-statusDetailed statusok, fallback-base, fallback-blank, composed-pitch, etc.
x-livery-typeApplied livery type (may differ from requested liveryType)base, retro, special-pride
x-effective-gearActually used gear (if gear=up unavailable, falls back to down)down, up
x-fallback-reasonPresent only on fallbacklivery-unavailable, airline-not-found, blank-missing, gear-up-unavailable-used-down
x-auth-statusPresent only on unauthenticated requestsunauthorized
x-manifest-versionManifest version that served the asset2026-04-29T18:03:11Z

Render diagnostics

HeaderDescription
x-render-widthFinal width in pixels
x-render-zoom-typecontain or fill
x-render-zoom-levelApplied zoom multiplier
x-render-margin-percentMargin as % of canvas width
x-composition-modestorage-prebuilt, storage-fallback, composed-runtime

Composition diagnostics (when pitch, scale, align, background parameters are used)

HeaderDescription
x-compose-pitchNumber in degrees (e.g. 20, -15)
x-compose-aligntop, center, bottom
x-compose-scalenone, fleet, absolute
x-compose-reference-planeReference plane slug (in fleet mode)
x-compose-backgroundnone, solid:#hex, gradient:linear

Format coercion

HeaderDescription
x-format-requestedFiletype originally requested in the URL (png, jpg, webp)
x-format-coercedPresent only when the actual returned format differs from the request — currently always png (composition forces PNG)

Cache (Cloudflare)

HeaderDescription
cf-cache-statusHIT, MISS, REVALIDATED, BYPASS, STALE
ageSeconds since cached
cache-controlpublic, max-age=86400
etagAsset hash, for conditional requests

Standards

HeaderDescription
content-typeimage/png, image/jpeg, image/webp, or application/json
content-lengthSize in bytes
varyAccept-Encoding

Full example

HTTP/1.1 200 OK
content-type: image/png
content-length: 184523
cache-control: public, max-age=86400
cf-cache-status: HIT
age: 1247
etag: "9f3a..."
x-image-source: r2-livery
x-livery-state: livery
x-livery-status: ok
x-livery-type: base
x-effective-gear: down
x-manifest-version: 2026-04-29T18:03:11Z
x-render-width: 1024
x-render-zoom-type: contain
x-render-zoom-level: 1
x-render-margin-percent: 8
x-composition-mode: storage-prebuilt