{"openapi":"3.1.0","info":{"title":"Aircraft Fuel Planning API","version":"1.0.0","description":"Aircraft fuel-planning maths as an API, computed locally and deterministically — the endurance, range and fuel-required numbers a pilot, dispatcher or flight-sim developer plans a flight with, all honouring a reserve. The endurance endpoint gives how long you can fly = usable fuel ÷ burn rate, holding back a reserve (30 min day / 45 min night VFR, 45 min IFR is typical), so the usable endurance is the time you can actually plan to rather than the tanks-dry figure — 50 gallons at 10 gph is 5:00 total but 4:15 usable on a 45-minute reserve. The range endpoint turns that into distance = usable endurance × ground speed, so it lives or dies on the wind: a headwind cuts the ground speed and the range while burning the same fuel per hour, which is why you plan on the forecast ground speed, not the true airspeed. The fuel-required endpoint sizes the load for a leg = trip time × burn plus the reserve — 300 nm at 120 kt and 10 gph needs 25 gallons of trip fuel plus 7.5 reserve, 32.5 total — to which a real flight adds taxi and climb allowances. Everything is computed locally and deterministically, so it is instant and private. Ideal for flight-planning and EFB apps, dispatch and flight-school tools, flight-simulator utilities, and general-aviation calculators. Pure local computation — no key, no third-party service, instant. Add taxi/climb and a personal margin; confirm against tank capacity and weight-and-balance. 3 compute endpoints. For glide range use a glide-ratio API; for density altitude a density-altitude API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fuelburn-api","description":"oanor gateway"}],"tags":[{"name":"Fuel"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/endurance":{"get":{"operationId":"get_v1_endurance","tags":["Fuel"],"summary":"Endurance from fuel and burn","description":"","parameters":[{"name":"fuel_gal","in":"query","required":true,"description":"Usable fuel (US gallons)","schema":{"type":"string"},"example":"50"},{"name":"burn_gph","in":"query","required":true,"description":"Fuel burn (gallons/hour)","schema":{"type":"string"},"example":"10"},{"name":"reserve_min","in":"query","required":false,"description":"Reserve (minutes, default 45)","schema":{"type":"string"},"example":"45"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Endurance = usable fuel ÷ the burn rate. The legal and sensible move is to hold back a reserve — 30 min day / 45 min night VFR, 45 min IFR is typical — so the usable endurance is the time you can actually plan to, not the tanks-dry figure. Burn rises with power and richer mixtures, so use a realistic cruise number, not the brochure best case.","inputs":{"burn_gph":10,"fuel_gal":50,"reserve_min":45},"reserve_gal":7.5,"total_endurance_h":5,"usable_endurance_h":4.25,"total_endurance_hms":"5:00","usable_endurance_hms":"4:15"},"meta":{"timestamp":"2026-06-07T08:18:05.234Z","request_id":"0395ccdf-f710-43a0-84b5-63a0292ee935"},"status":"ok","message":"Endurance","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/fuel-required":{"get":{"operationId":"get_v1_fuel_required","tags":["Fuel"],"summary":"Fuel required for a trip","description":"","parameters":[{"name":"distance_nm","in":"query","required":true,"description":"Distance (nautical miles)","schema":{"type":"string"},"example":"300"},{"name":"ground_speed_kt","in":"query","required":true,"description":"Ground speed (knots)","schema":{"type":"string"},"example":"120"},{"name":"burn_gph","in":"query","required":true,"description":"Fuel burn (gallons/hour)","schema":{"type":"string"},"example":"10"},{"name":"reserve_min","in":"query","required":false,"description":"Reserve (minutes, default 45)","schema":{"type":"string"},"example":"45"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Fuel required = trip time × burn, plus the reserve. The trip time uses the ground speed, so plan the leg on the forecast wind; add taxi and climb allowances on top for a real flight, since the climb burns richer and faster than cruise. Carry the total — trip plus reserve plus a personal margin — and confirm it fits within both the tank capacity and the weight-and-balance limits.","inputs":{"burn_gph":10,"distance_nm":300,"reserve_min":45,"ground_speed_kt":120},"trip_fuel_gal":25,"time_enroute_h":2.5,"reserve_fuel_gal":7.5,"time_enroute_hms":"2:30","total_fuel_required_gal":32.5},"meta":{"timestamp":"2026-06-07T08:18:05.337Z","request_id":"fd201e98-cd83-4225-97d2-62fdc039b6ac"},"status":"ok","message":"Fuel required","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/range":{"get":{"operationId":"get_v1_range","tags":["Fuel"],"summary":"Range from fuel, burn and ground speed","description":"","parameters":[{"name":"fuel_gal","in":"query","required":true,"description":"Usable fuel (US gallons)","schema":{"type":"string"},"example":"50"},{"name":"burn_gph","in":"query","required":true,"description":"Fuel burn (gallons/hour)","schema":{"type":"string"},"example":"10"},{"name":"ground_speed_kt","in":"query","required":true,"description":"Ground speed (knots)","schema":{"type":"string"},"example":"120"},{"name":"reserve_min","in":"query","required":false,"description":"Reserve (minutes, default 45)","schema":{"type":"string"},"example":"45"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Range = usable endurance × ground speed, so it lives or dies on the wind: a headwind cuts the ground speed and the range with it, while burning the same fuel per hour. Always plan range on the forecast ground speed, not the true airspeed, and keep the reserve out of the calculation — the range here is to the reserve, not to dry tanks.","inputs":{"burn_gph":10,"fuel_gal":50,"reserve_min":45,"ground_speed_kt":120},"range_nm":510,"usable_endurance_h":4.25},"meta":{"timestamp":"2026-06-07T08:18:05.424Z","request_id":"0225b91d-eaba-4525-b22f-8790a9424b6e"},"status":"ok","message":"Range","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"US gal, gph, kt, nm. endurance = usable fuel ÷ burn; range = usable endurance × ground speed; fuel = time × burn + reserve. Reserves default 45 min. Plan on forecast ground speed; add taxi/climb. For density altitude use a density-altitude API; for glide a glide-ratio API.","service":"fuelburn-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/range":"Range from fuel, burn and ground speed.","GET /v1/endurance":"Total and usable endurance from fuel and burn rate.","GET /v1/fuel-required":"Trip and total fuel for a distance, with reserve."},"description":"Aircraft fuel-planning maths: endurance from fuel and burn, range from ground speed, and fuel required for a trip — all with a reserve."},"meta":{"timestamp":"2026-06-07T08:18:05.519Z","request_id":"2f9c219f-9ef5-43ee-9940-835b7fc0d01a"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":6300,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1130,"monthly_call_quota":64000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3580,"monthly_call_quota":259000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":11050,"monthly_call_quota":1330000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fuelburn-api"}