{"service":"flight-time-engine","status":"ok","auth":{"enabled_when":"API_KEY environment variable is set","accepted_headers":["x-api-key","Authorization: Bearer <API_KEY>"]},"calls":[{"method":"GET","path":"/","description":"Returns this API contract."},{"method":"POST","path":"/flightplan","description":"Calculates route distance, route details, winds, estimated time, and optional fuel planning.","content_type":"application/json","request_fields":{"required":{"departure_airport":{"aliases":["ADEP","adep"],"type":"string","description":"Departure airport ICAO or IATA code.","example":"WBGG"},"arrival_airport":{"aliases":["ADES","ades"],"type":"string","description":"Arrival airport ICAO or IATA code.","example":"VHHH"},"mach":{"aliases":["speed_in_mach","speedInMach","mach_speed"],"type":"number","description":"Cruise Mach number. Must be greater than zero.","example":0.79}},"routing":{"route":{"aliases":["Route"],"type":"string","description":"Optional route string. Empty or omitted calculates a direct route. Airway names and DCT are accepted.","example":"LUTMO G460 VSI M772 DULOP M771 BIGEX"},"force_airway_routing":{"type":"boolean","default":false,"description":"When true and no route is supplied, attempts guided airway routing."},"avoid_firs":{"type":"string[] | string","default":[],"description":"FIR ICAO codes to avoid.","example":["LTAA"]},"avoid_countries":{"type":"string[] | string","default":[],"description":"ISO country codes whose FIRs should be avoided.","example":["TR"]}},"profile":{"fl":{"type":"number","default":340,"description":"Requested cruise flight level."},"climb_fpm":{"type":"number","default":1800,"description":"Climb rate in feet per minute."},"climb_ias_kt":{"type":"number","default":290,"description":"Climb indicated airspeed in knots."},"descent_fpm":{"type":"number","default":1800,"description":"Descent rate in feet per minute."},"descent_ias_kt":{"type":"number","default":290,"description":"Descent indicated airspeed in knots."},"dep_elev_ft":{"type":"number","description":"Optional departure elevation override in feet."},"arr_elev_ft":{"type":"number","description":"Optional arrival elevation override in feet."},"step_nm":{"type":"number","default":50,"description":"Cruise weather sampling step in nautical miles."},"departure_time":{"aliases":["time_utc"],"type":"string","description":"Optional ISO UTC departure time.","example":"2026-02-13T12:00:00Z"},"aircraft_registration":{"type":"string","description":"Optional aircraft registration echoed in the response."}},"fuel_planning":{"mode":"all-or-none","description":"If any required fuel planning field is provided, all required fields must be provided.","required_when_enabled":["max_fuel_capacity_lb","max_takeoff_weight_lb","zero_fuel_weight_lb","climb_ref_1_weight_lb","climb_ref_1_fuel_burn_lb","climb_ref_2_weight_lb","climb_ref_2_fuel_burn_lb","cruise_ref_1_weight_lb","cruise_ref_1_fuel_burn_lb","cruise_ref_2_weight_lb","cruise_ref_2_fuel_burn_lb","descent_ref_1_weight_lb","descent_ref_1_fuel_burn_lb","descent_ref_2_weight_lb","descent_ref_2_fuel_burn_lb","contingency_pct","final_reserve_min","alternate_airport","taxi_fuel_lb"],"optional_when_enabled":{"minimum_time_to_alternate_min":{"type":"number","default":0},"fuel_segment_minutes":{"type":"number","default":5}}}},"examples":{"direct":{"ADEP":"WBGG","ADES":"VHHH","speed_in_mach":0.79,"Route":""},"user_route":{"ADEP":"WBGG","ADES":"VHHH","speed_in_mach":0.79,"Route":"LUTMO G460 VSI M772 DULOP M771 BIGEX"},"airway_routing_with_fir_avoidance":{"departure_airport":"OLBA","arrival_airport":"EGGW","mach":0.79,"fl":340,"force_airway_routing":true,"avoid_firs":["LTAA"]}},"response_sections":["inputs","route","timing_result","avoidance","fuel_planning"]}],"environment":{"PORT":{"default":3000,"description":"Server port."},"API_KEY":{"description":"Optional API key. When set, POST /flightplan requires auth."},"REQUEST_SAFE_MODE":{"default":true,"description":"Set to false to disable request time-budget checks for expensive routing."},"REQUEST_TIME_BUDGET_MS":{"default":4500,"description":"Request time budget used when safe mode is enabled."},"ALLOW_COLD_START_AIRWAY_ROUTING":{"default":false,"description":"Set to true to allow airway routing on cold starts without force_airway_routing."}}}