Flight Time Engine API
Calculate aviation routes, distance, climb and descent profiles, wind-adjusted flight time, FIR avoidance, and optional fuel planning through one endpoint. Access it through the RapidAPI marketplace or subscribe directly with Vulture Aviation.
https://flight-time-engine.p.rapidapi.comhttps://vafz.net/v1Choose how to access the API
Both channels run the same Flight Time Engine calculation. Choose one commercial and authentication path for each application.
Marketplace access
RapidAPI
Use RapidAPI when your organization already manages APIs through its marketplace, wants a RapidAPI-generated credential, or prefers marketplace billing and analytics.
- Subscribe on the RapidAPI listing
- Use RapidAPI's host and key headers
- Review usage and invoices in RapidAPI
- Keep existing RapidAPI applications in one account
First-party access
Direct subscription
Subscribe directly when you want a Vulture Aviation account, self-service API keys, Stripe billing, request history, plan limits, and the integrated API tester.
- Register and verify your business email
- Generate and revoke keys in the portal
- View calls, limits, duration, and server health
- Manage your subscription through Stripe
| Area | RapidAPI | Direct subscription |
|---|---|---|
| Base URL | https://flight-time-engine.p.rapidapi.com | https://vafz.net/v1 |
| Credential | RapidAPI application key | Vulture Aviation portal key |
| Billing | Managed by RapidAPI | Managed through Stripe |
| Usage dashboard | RapidAPI analytics | Vulture Aviation portal |
| Support | RapidAPI listing and Vulture Aviation | Directly through api@vafz.net |
A RapidAPI key only works with the RapidAPI host. A direct portal key only works with the direct /v1 gateway. Do not send both authentication methods in the same request.
Authentication
Select the header set that belongs to your subscription channel.
RapidAPI authentication
Subscribe to Flight Time Engine on RapidAPI, select an application, and copy the credential shown by RapidAPI. Every marketplace request requires both RapidAPI headers.
| Header | Value | Required |
|---|---|---|
x-rapidapi-key | YOUR_RAPIDAPI_KEY | Yes |
x-rapidapi-host | flight-time-engine.p.rapidapi.com | Yes |
Content-Type | application/json | Yes |
Direct subscription authentication
Create an account at vafz.net, verify your email, choose a plan, then generate an API key under API keys. The full key is displayed once. Store it in a server-side secret manager.
| Header | Value | Required |
|---|---|---|
x-api-key | vafz_live_YOUR_KEY | Yes |
Content-Type | application/json | Yes |
Never place either key in public JavaScript, mobile application source, screenshots, repositories, or support messages. Call the API from your backend, rotate a key immediately if exposed, and use separate keys for production and testing workloads.
Quick start
Generate an airway route from Dubai World Central to London Luton while avoiding two FIRs.
Subscribe through RapidAPI or register directly with Vulture Aviation.
Store the issued key in a backend environment variable or secret manager.
POST the flight inputs to the channel-specific /flightplan URL.
Check HTTP status and route.available before using route or timing values.
RapidAPI request examples
import http.client
import json
conn = http.client.HTTPSConnection(
"flight-time-engine.p.rapidapi.com"
)
payload = json.dumps({
"ADEP": "OMDW",
"ADES": "EGGW",
"Route": "",
"fl": 360,
"mach": 0.7,
"force_airway_routing": True,
"avoid_firs": ["LTAA", "LTBB"],
"departure_time": "2026-07-07T17:00:00Z"
})
headers = {
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
"x-rapidapi-host": "flight-time-engine.p.rapidapi.com",
"Content-Type": "application/json"
}
conn.request("POST", "/flightplan", payload, headers)
response = conn.getresponse()
print(response.read().decode("utf-8"))
curl --request POST \
--url https://flight-time-engine.p.rapidapi.com/flightplan \
--header 'Content-Type: application/json' \
--header 'x-rapidapi-host: flight-time-engine.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
--data '{
"ADEP": "OMDW",
"ADES": "EGGW",
"Route": "",
"fl": 360,
"mach": 0.7,
"force_airway_routing": true,
"avoid_firs": ["LTAA", "LTBB"],
"departure_time": "2026-07-07T17:00:00Z"
}'
const response = await fetch(
"https://flight-time-engine.p.rapidapi.com/flightplan",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
"x-rapidapi-host": "flight-time-engine.p.rapidapi.com"
},
body: JSON.stringify({
ADEP: "OMDW",
ADES: "EGGW",
Route: "",
fl: 360,
mach: 0.7,
force_airway_routing: true,
avoid_firs: ["LTAA", "LTBB"],
departure_time: "2026-07-07T17:00:00Z"
})
}
);
const flightplan = await response.json();
Direct subscription request
Direct subscribers send the same JSON body to the Vulture Aviation gateway. Only the URL and authentication header change.
curl --request POST \
--url https://vafz.net/v1/flightplan \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_VULTURE_API_KEY' \
--data '{
"ADEP": "OMDW",
"ADES": "EGGW",
"Route": "",
"fl": 360,
"mach": 0.7,
"force_airway_routing": true,
"avoid_firs": ["LTAA", "LTBB"],
"departure_time": "2026-07-07T17:00:00Z"
}'The direct gateway returns request identification and quota information, including X-Request-ID, rate-limit values, and monthly quota values. Record the request ID when contacting support.
{
"inputs": {
"mach": 0.7,
"fl_used": 360,
"departure_time": "2026-07-07T17:00:00Z",
"avoid_firs": ["LTAA", "LTBB"],
"fuel_planning_enabled": false
},
"route": {
"available": true,
"route_type": "airway_avoided",
"route_string": "OMDW DCT TUDIS N571 PURLI G462 TUMAK L602 VELAK T557 RAGAS P550 SYZ P574 PEKAM Z1 TBZ R661 DULAV L125 GUSLI B947 STW B494 OLGIN M991 NIROV L984 DIBED L981 ADVAB L980 SUBIX Z20 SONUD P203 HLZ L980 IDRID M40 SABER L980 LAM L610 HEMEL DCT EGGW",
"total_distance_nm": 3215.66,
"overflown_fir_icao": [
"OMAE", "OBBB", "OTDF", "TEH", "OIIX", "UBBA",
"UDDD", "UGGG", "URRV", "UKDV", "UKR", "UKBV",
"UKLV", "EPWW", "EDXX", "EDWW", "EDGG", "EHAA",
"EGTT", "EGVV", "EGTL"
],
"skyvector_link": "https://skyvector.com/..."
},
"timing_result": {
"avg_wind": "283/38",
"avg_tas_kn": 411.79,
"avg_gs_kn": 388.44,
"cruise_time_min": 468.12,
"total_time_min": 507.77
},
"avoidance": {
"enabled": true,
"input_firs": ["LTAA", "LTBB"],
"still_crossed_avoided_firs": []
},
"fuel_planning": null
}
Flight plan endpoint
Calculates route geometry, weather-adjusted timing, and optional fuel planning.
Request parameters
Only departure, arrival, and cruise Mach are required.
Required
ADEPstringrequiredDeparture airport ICAO or IATA code.
Aliases:departure_airport, adepADESstringrequiredArrival airport ICAO or IATA code.
Aliases:arrival_airport, adesmachnumberrequiredCruise Mach number greater than zero.
Aliases:speed_in_mach, speedInMach, mach_speedFlight profile
| Field | Type | Default | Description |
|---|---|---|---|
fl | number | 340 | Requested cruise flight level |
climb_fpm | number | 1800 | Climb rate in feet per minute |
climb_ias_kt | number | 290 | Climb indicated airspeed |
descent_fpm | number | 1800 | Descent rate in feet per minute |
descent_ias_kt | number | 290 | Descent indicated airspeed |
dep_elev_ft | number | Airport data | Departure elevation override |
arr_elev_ft | number | Airport data | Arrival elevation override |
step_nm | number | 50 | Distance between weather samples |
departure_time | ISO string | Current context | UTC departure time; alias: time_utc |
aircraft_registration | string | null | Registration echoed in response |
Routing modes
Choose direct geometry, provide a route, or ask the engine to generate one.
Direct
Omit Route or send an empty string. The engine calculates a direct great-circle route.
"Route": ""Supplied route
Send waypoint identifiers with optional airway names and DCT tokens.
"Route": "LUTMO G460 VSI"Generated airway
Leave the route empty and enable airway search through the network.
"force_airway_routing": trueFIR avoidance
Exclude airspace by FIR ICAO code or ISO country code.
Recommended request
Combine avoidance with automatic airway routing so the engine can search for a compliant path.
If no compliant path is found, route.available is false and route.reason explains why.
{
"ADEP": "OMDW",
"ADES": "EGGW",
"mach": 0.7,
"force_airway_routing": true,
"avoid_firs": ["LTAA", "LTBB"]
}
Fuel planning
Optional all-or-none fuel calculations using aircraft reference performance.
If any required fuel field is present, the complete fuel input set is required.
View required fuel fields
max_fuel_capacity_lbmax_takeoff_weight_lbzero_fuel_weight_lbclimb_ref_1_weight_lbclimb_ref_1_fuel_burn_lbclimb_ref_2_weight_lbclimb_ref_2_fuel_burn_lbcruise_ref_1_weight_lbcruise_ref_1_fuel_burn_lbcruise_ref_2_weight_lbcruise_ref_2_fuel_burn_lbdescent_ref_1_weight_lbdescent_ref_1_fuel_burn_lbdescent_ref_2_weight_lbdescent_ref_2_fuel_burn_lbcontingency_pctfinal_reserve_minalternate_airporttaxi_fuel_lbcurl --request POST \
--url https://flight-time-engine.p.rapidapi.com/flightplan \
--header 'Content-Type: application/json' \
--header 'x-rapidapi-host: flight-time-engine.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
--data '{
"ADEP": "WBGG",
"ADES": "VHHH",
"Route": "",
"fl": 340,
"mach": 0.79,
"departure_time": "2026-07-07T17:00:00Z",
"max_fuel_capacity_lb": 20000,
"max_takeoff_weight_lb": 50000,
"zero_fuel_weight_lb": 30000,
"climb_ref_1_weight_lb": 30000,
"climb_ref_1_fuel_burn_lb": 1200,
"climb_ref_2_weight_lb": 50000,
"climb_ref_2_fuel_burn_lb": 1600,
"cruise_ref_1_weight_lb": 30000,
"cruise_ref_1_fuel_burn_lb": 900,
"cruise_ref_2_weight_lb": 50000,
"cruise_ref_2_fuel_burn_lb": 1300,
"descent_ref_1_weight_lb": 30000,
"descent_ref_1_fuel_burn_lb": 500,
"descent_ref_2_weight_lb": 50000,
"descent_ref_2_fuel_burn_lb": 700,
"contingency_pct": 5,
"final_reserve_min": 45,
"alternate_airport": "VMMC",
"taxi_fuel_lb": 300,
"minimum_time_to_alternate_min": 30,
"fuel_segment_minutes": 5
}'
{
"route": {
"route_type": "direct",
"route_string": "WBGG DCT VHHH",
"total_distance_nm": 1261.29
},
"timing_result": {
"avg_wind": "040/9",
"total_time_min": 176.48
},
"fuel_planning": {
"method": "two_pass_zfw_to_tow",
"trip": {
"total_time_min": 176.48,
"total_trip_fuel_burn_lb": 2773.02,
"takeoff_weight_lb": 34222.77,
"landing_weight_lb": 31449.75
},
"contingency": { "fuel_lb": 138.65 },
"final_reserve": { "fuel_lb": 696.75 },
"alternate": { "fuel_lb": 515.17 },
"taxi": { "fuel_lb": 300 },
"minimum_fuel_required_lb": 4423.59,
"computed_takeoff_weight_lb": 34423.59,
"fuel_stop_required": "No",
"max_fuel_capacity_exceeded": "No",
"max_takeoff_weight_exceeded": "No"
}
}
Response schema
A successful request returns normalized inputs, route geometry, refined timing, avoidance, and optional fuel planning.
inputsResolved airports and normalized calculation inputs.
routeAvailability, route string, waypoints, legs, distance, FIRs, and airway details.
timing_resultRefined TAS, groundspeed, cruise time, and total time.
avoidanceRequested, resolved, and still-crossed FIR data.
fuel_planningFuel calculation, or null when disabled.
Weather-provider source fields are intentionally omitted from public responses.
Errors
Error responses contain a concise JSON error message.
| Status | Meaning | Action |
|---|---|---|
| 200 | Calculation completed | Check route.available |
| 400 | Invalid request | Check missing, unknown, or incomplete values |
| 401 | Authentication failed | Check the credential and channel-specific headers |
| 404 | Endpoint not found | Use POST /flightplan |
| 500 | Unexpected server error | Retry or report the request details |
Plans and subscription channels
Choose a plan, then complete billing either through RapidAPI or directly through the Vulture Aviation customer portal.
RapidAPI controls checkout, invoices, marketplace quotas, overages, bandwidth charges, and the credential used with its host.
Vulture Aviation controls account verification, API keys, call history, quota enforcement, and Stripe subscription management.
Basic
- Requests
- 50 / month
- Overage
- Hard limit
- Rate limit
- 1 request / second
- Bandwidth
- 10,240 MB / month
- Extra bandwidth
- $0.001 / MB
Pro
- Requests
- 500 / month
- Overage
- $0.08 / request
- Rate limit
- 2 requests / second
- Bandwidth
- 10,240 MB / month
- Extra bandwidth
- $0.001 / MB
Ultra
Recommended- Requests
- 2,500 / month
- Overage
- $0.06 / request
- Rate limit
- 5 requests / second
- Bandwidth
- 10,240 MB / month
- Extra bandwidth
- $0.001 / MB
Mega
- Requests
- 15,000 / month
- Overage
- $0.04 / request
- Rate limit
- High-volume access
- Bandwidth
- 10,240 MB / month
- Extra bandwidth
- $0.001 / MB
Direct plans currently stop requests when the included monthly allowance is reached. RapidAPI overage and bandwidth terms apply only to subscriptions purchased through RapidAPI. For uninterrupted usage above a direct allowance, upgrade before reaching the limit or request a custom agreement.
Prices are shown in USD. The checkout page for the selected channel governs billing, taxes, renewals, overages, cancellation, and refunds.
Support & contact
Contact Vulture Aviation for API assistance, integration questions, account support, or commercial enquiries. Include your access channel and request ID, but never include an API key.
