Landing Performance
Calculate landing performance data including approach speeds, required distances, maximum landing weight, and braking requirements.
Calculation Modes
The API supports two calculation modes depending on your use case.
The mode is determined by the
landingMode parameter.
Calculate the Maximum Landing Weight (MLW) — the maximum allowable weight for the given conditions.
Use case: Dispatch planning, fuel planning, alternate selection.
How: Set landingMode to
"dispatch" (default)
Returns: MLW, limiting factors, required distances
Calculate complete landing data for a specific landing weight.
Use case: Approach preparation, EFB data, pilot briefing.
How: Set landingMode to
"inflight" and provide
landingWeight
Returns: VREF, VAPP, landing distances, autobrake settings
Request
Full Request Structure
{
"query": "performance",
"apiVersion": "1.3.6",
"data": {
"requestType": "LANDING",
"landingMode": "dispatch",
"units": {
"weight": "kg",
"wind": "kt",
"altitude": "feet",
"distance": "feet",
"depth": "mm",
"pressure": "hpa"
},
"aircraft": {
"file": "737-800W_CFM56-7B26.json",
"userRegistration": null,
"virtualAirline": null
},
"airport": "EBBR",
"runway": "25R",
"weather": {
"windDirection": 250,
"windSpeed": 10,
"headwind": null,
"temperature": 15,
"qnh": 1013
},
"runwayCondition": {
"state": "DRY",
"depth": 0
},
"configuration": {
"flap": "OPTIMUM",
"autobrake": null,
"antiIce": "OFF",
"reverser": "ALL",
"speedbrake": "AUTO",
"vrefAdditive": 0,
"nonNormalCondition": null,
"approachType": null,
"landingTechnique": null,
"missedApproachClimbGradient": 2.5
},
"weight": {
"landingWeight": null,
"cg": null,
"cgPosition": null
},
"inopItems": {
"mel": [],
"cdl": []
},
"notam": null
}
}
Units
The API uses standard units by default. You can override any unit by
specifying it in the units object. Response values will
be returned in the same units.
Standard Units (Default)
| Parameter | Standard Unit |
|---|---|
weight |
kg |
wind |
kt (knots) |
altitude |
feet |
distance |
feet |
depth |
mm (millimeters) |
pressure |
hpa (hectopascal) |
Custom Units
Override defaults by including the units object:
| Parameter | Allowed Values |
|---|---|
weight |
kg, lb |
wind |
kt, ms (meters per second) |
altitude |
feet, meter |
distance |
feet, meter |
depth |
mm, inches |
pressure |
hpa, inhg (inch of mercury) |
Parameters
Configuration values (flap, autobrake,
antiIce, runwayCondition.state, etc.)
must match the options provided in the aircraft's
formData from the
Aircraft API. Custom values
not present in formData will be rejected.
landingMode
| Parameter | Type | Default | Description |
|---|---|---|---|
landingMode |
string | "dispatch" |
"dispatch" — Maximum landing weight calculation.
Distances and gradients are calculated differently than
inflight."inflight" — Actual landing distances and speeds
at a given weight. Requires landingWeight.
|
aircraft Required
| Parameter | Type | Description |
|---|---|---|
file |
string | Required. Aircraft profile filename from Aircraft API |
userRegistration |
string|null | Custom aircraft registration for personalized profiles |
virtualAirline |
string|null | Virtual airline identifier for VA-specific aircraft |
airport & runway Required
| Parameter | Type | Description |
|---|---|---|
airport |
string |
Required. ICAO airport code (e.g.,
"EBBR")
|
runway |
string |
Required. Runway identification from the
Airports API
(e.g., "25R", "25RI3" intersection,
"25RN1" notam)
|
weather
| Parameter | Type | Default | Description |
|---|---|---|---|
windDirection |
integer | 0 | Wind direction in degrees magnetic (0-360) |
windSpeed |
integer | 0 | Wind speed in knots (or unit specified) |
headwind |
integer|null | null | Direct headwind component. Negative = tailwind. Overrides direction/speed if provided. |
temperature |
number | 15 | Outside Air Temperature (OAT) in °C |
qnh |
number | 1013 |
Altimeter setting. Default unit is hPa; set
pressure unit to "inhg" to provide
and receive values in inches of mercury (e.g.,
29.92).
|
runway_condition
| Parameter | Type | Default | Description |
|---|---|---|---|
state |
string | "DRY" |
Runway condition value from the aircraft profile
conditionDispatch or
conditionEnroute options.
|
depth |
number | 0 | Contamination depth in mm (or unit specified). Only used when state indicates contamination. |
configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
flap |
string | "OPTIMUM" |
OPTIMUM (Airbus only) or a specific value from
the aircraft profile. Some flap settings include autoland info
(e.g., "30|AUTOLAND").
|
autobrake |
string|null | null |
Dispatch: ignored (always OFF). Inflight: "ALL" to iterate all
settings (Boeing only), or a specific value from
the aircraft profile autobrake options.
|
antiIce |
string | "OFF" |
value from the aircraft profile
ai options.
|
reverser |
string | "ALL" |
value from the aircraft profile
reversers options.
|
speedbrake |
string | "AUTO" |
value from the aircraft profile
groundSpoilers options.
|
vrefAdditive |
integer | 0 |
Dispatch: ignored. Inflight: Speed additive above Vref (0–20 kt). Automatically capped. Minimum 5 kt for autoland approaches. |
nonNormalCondition |
string|null | null |
Dispatch: ignored. Inflight: Non-Normal Checklist item from the aircraft profile nonNormalConf options. Requires
NNC subscription.
|
approachType |
string|null | null |
Airbus only. CAT_II, AUTOLAND,
MANUAL_LDG
|
missedApproachClimbGradient |
number | 2.5 |
Required Missed Approach Climb Gradient (MACG) in percent. Airbus dispatch: sent directly to the performance calculator as a climb gradient constraint ( appClbGrd). The calculator enforces this limit
when computing the regulated landing weight.Boeing dispatch: not sent as a constraint; the calculator returns the actual gradient and the API compares it against this value — an advisory caution is raised if the gradient falls below the required minimum. Inflight: used for the same advisory comparison as Boeing dispatch (no constraint enforced). |
landingTechnique |
string|null | null |
Airbus only. AUTO_LDG or MANUAL
|
weight
| Parameter | Type | Default | Description |
|---|---|---|---|
landingWeight |
number|null | null |
Landing weight in the selected unit. Required when
landingMode is "inflight". Ignored
in dispatch mode.
|
cg |
number|null | null | Center of gravity as % MAC (Boeing) |
cgPosition |
string|null | null |
CG position from the aircraft profile (e.g.
STANDARD, FWD, AFT)
|
notam
NOTAM (Notice to Airmen) runway restrictions. When provided, the
landing distances are adjusted to reflect temporary runway
modifications. Requires NOTAM in subscription. Pass
null or omit when not applicable.
The shortenStart and shortenEnd
values reduce the Landing Distance Available (LDA) accordingly.
All distance values use the distance unit from the
units section (default: feet).
| Parameter | Type | Default | Description |
|---|---|---|---|
shortenStart |
number | 0 | Runway closure distance from the start threshold. Must be ≥ 0. |
shortenEnd |
number | 0 | Runway closure distance from the end threshold. Must be ≥ 0. |
inopItems
| Parameter | Type | Default | Description |
|---|---|---|---|
mel |
array | [] | Minimum Equipment List items (codes from the aircraft profile) |
cdl |
array | [] | Configuration Deviation List items (codes from the aircraft profile) |
Response
Common Response Fields
| Field | Type | Description |
|---|---|---|
calculationPossible |
boolean | true if calculation succeeded |
subCalculation |
string |
"LANDING_DISPATCH" or
"LANDING_INFLIGHT"
|
units |
object | Unit labels for all returned values (weight, distance, altitude, wind, depth) |
caution |
array | Caution and advisory messages (icing, MACG, overweight, brake cooling, etc.) |
error |
string|array |
Error messages when calculationPossible is
false
|
Performance — General Fields
Returned in both dispatch and inflight modes.
| Field | Type | Description |
|---|---|---|
flap |
string | Selected flap setting |
lda |
integer | Landing Distance Available (may be reduced by NOTAM) |
isNOTAM |
boolean |
true if a NOTAM runway reduction was applied
|
runwayIdent |
string | Active runway designator |
Performance — Weight & Time Fields
| Field | Type | Description |
|---|---|---|
landingWeight |
integer |
Dispatch: Calculated max landing weight Inflight: User-provided landing weight |
perfLimitedLandingWeight |
integer |
Most restrictive performance-limited landing weight, computed
as
min(appClimbLimit, fieldLimit, ldgClimbLimit,
tireSpeed). Excludes structural (MSLW) and quick-turnaround weight. For
Airbus dispatch this equals landingWeight; for
Boeing it may differ when the structural cap is the binding
constraint.
|
appClimbLimit |
integer | Approach Climb limited weight |
fieldLimit |
integer | Field length limited weight |
ldgClimbLimit |
integer | Landing Climb limited weight |
quickTurnWeight |
integer | Quick turnaround limited weight |
quickTurnTime |
integer | Quick turnaround time (minutes) before next takeoff |
structLandingWeight |
integer | Structural max landing weight (MSLW) |
tireSpeed |
integer | Tire speed limited weight |
limitedBy |
string |
Limiting factor code: STRUCT., MACG,
FIELD, CLIMB, QUICK,
TIRE
|
isOverweightLanding |
boolean |
true when the actual landing weight (inflight) or
the calculated max landing weight (dispatch) exceeds the
structural maximum landing weight (structLandingWeight
/ MSLW). When true, an overweight landing caution
is also added to cautionMessages referring to
FCTM guidance. Always false for dispatch because
the dispatch weight is capped at MSLW.
|
Performance — Balked Landing Procedure (Airbus & Boeing, PRO)
Returned as performance.balkedLandingProcedure for
Airbus aircraft (dispatch and inflight modes) and Boeing aircraft
(inflight mode). When the active runway's engine-failure procedure
(EFP) is non-standard and the user holds a PRO subscription
(is_balkedLanding), the API runs a parallel takeoff
calculation — DRY runway condition, the same runway at full length,
no takeoff weight (regulated maximum, TOGA / no FLEX) — to determine
the maximum weight at which a balked landing (go-around) can safely
clear obstacles. The go-around takeoff flap is resolved as follows:
-
Airbus — derived from the selected landing flap:
CONF FULL→CONF 3,CONF 3→CONF 2, any optimum/other selection →CONF 3. -
Boeing — a fixed setting from the aircraft
profile (
landing.goAroundFlap), independent of the selected landing flap. Defaults to15for all 737 variants (737NG / 737MAX) and20for every other Boeing type when not explicitly configured on the profile.
When the EFP is standard (STD / STANDARD)
the procedure is simply "Follow published missed approach." and no
takeoff calculation is run.
When a landing enroute non-normal condition (NNC) other than
NONE is selected, the balked-landing procedure is not
applicable — the aircraft's configuration and performance are
altered enough that the predetermined go-around procedure and its
takeoff-weight check no longer apply. In this case
procedure is "N/A",
isCalculationRequired is false, and no
takeoff calculation is run (regardless of EFP or subscription).
| Field | Type | Description |
|---|---|---|
procedure |
string |
The runway's engine-failure / balked-landing procedure text
(formatted per the user's display preferences). When the EFP
is standard, this is
"Follow published missed approach." When a
landing enroute NNC other than NONE is active,
this is "N/A".
|
isCalculationRequired |
boolean |
true when the runway's EFP is non-standard, i.e.
a balked-landing takeoff calculation is required. This
reflects the logic/warning only and is set regardless of
subscription: it is true even for non-PRO users
when a PRO user would have triggered a calculation.
false when the EFP is standard.
|
userAllowed |
boolean |
true when the subscription includes the PRO
balked-landing feature (is_balkedLanding);
otherwise false and no weights are computed.
|
maxLandingWeight |
integer|null |
Maximum takeoff weight (in the request's weight unit) at which
a go-around can safely clear obstacles from this runway.
null when the EFP is standard, the user is not
PRO, or the underlying takeoff calculation returned no usable
result for this runway.
|
margin |
integer|null |
maxLandingWeight minus the reference landing
weight (in the request's weight unit). The reference weight is
the user-provided landing weight when supplied, otherwise the
calculated dispatch-limited landing weight. Negative when the
reference weight exceeds the maximum. null when
no max weight was computed.
|
goAroundFlaps |
string|null |
Recommended takeoff flap for the balked-landing (go-around)
takeoff. For Airbus, derived deterministically from the
selected landing flap (e.g. "CONF 3",
"CONF 2"). For Boeing, a fixed value from the
aircraft profile, regardless of the selected landing flap
(defaults to "15" for 737 variants,
"20" for every other Boeing type when the profile
doesn't override it). This is informational and does not
depend on isCalculationRequired, subscription, or
whether maxLandingWeight was computed — it is
populated for both standard and non-standard EFP.
null only when procedure is
"N/A" (landing enroute NNC active), where no
balked-landing guidance applies at all.
|
When the reference landing weight exceeds
maxLandingWeight, a caution is added to
caution:
"In case of balked landing, the aircraft performance at that
weight may not be sufficient to safely clear the obstacles. Reduce
landing weight, or refer to your operator special procedure."
Performance — Speed Fields
| Field | Type | Description |
|---|---|---|
vRef |
integer | Reference landing speed (knots) |
vFly |
integer | Target approach speed = Vref + additive (knots) |
vApp |
integer |
Speed in the approach configuration (knots). Not to be
confused with vFly, which some terminologies may
also refer to as "Vapp".
|
vMca |
integer | Minimum control speed approach (knots) |
vrefLabel |
string |
Display label for Vref (aircraft-dependent, e.g.,
"Vref")
|
vrefAdditive |
integer | Applied Vref additive (inflight only) |
Performance — Distance Fields
| Field | Type | Description |
|---|---|---|
requiredLandingDist |
integer | Required landing distance (dispatch only) |
factoredLandingDistance |
integer|null | Airbus dispatch only. Factored inflight landing distance at the dispatch landing weight, computed with autobrake OFF and the runway condition converted to its inflight equivalent (e.g. WET → GOOD, SLUSH → MEDIUM-POOR). |
actualLandingDistance |
integer|null |
Airbus dispatch only. Unfactored actual
landing distance at the dispatch landing weight, same
conditions as factoredLandingDistance.
|
Performance — Go-Around Fields
| Field | Type | Description |
|---|---|---|
ldgGaClimbGrad |
number | Calculated go-around climb gradient (%) at 66% of the go-around altitude |
goAroundAltitude |
integer|null | Calculated go-around altitude used for the climb gradient calculation. Does not necessarily represent the actual go-around altitude for the procedure being flown. |
Performance — Autobrake Results (Inflight Only)
When landingMode is "inflight", the
response includes an autobrakeLandingDist array with
data for each autobrake setting. Entries are sorted by
factoredDistance (shortest first).
| Field | Type | Description |
|---|---|---|
label |
string | Human-readable, customizable autobrake label to display to the user |
autobrakeValue |
string |
Autobrake value from the aircraft profile
autobrake options (e.g., "OFF",
"1", "MAX")
|
airDistance |
integer | Air distance component (flare + ground effect) |
landingDistance |
integer | Actual landing distance |
landingDistanceIsAboveLDA |
boolean | true if landing distance exceeds LDA |
factoredDistance |
integer | Landing distance × landing factor (regulatory) |
factoredDistanceIsAboveLDA |
boolean | true if factored distance exceeds LDA |
unfactoredDistance |
integer | Actual distance × 0.85 (15% EASA reduction). With NNC: actual distance (no reduction). |
unfactoredDistanceIsAboveLDA |
boolean | true if unfactored distance exceeds LDA |
order |
integer | Sort order (0 = shortest factored distance) |
Performance — Brake Cooling Schedule
Each autobrake entry may include a
brakeCoolingSchedule object when the aircraft supports
brake cooling data.
| Field | Type | Description |
|---|---|---|
credit |
string |
Reverse thrust credit applied (e.g.,
"CREDIT FOR ALL REVERSE")
|
aerodynamicDrag |
boolean | Whether aerodynamic drag credit is applied |
ground |
string |
Cooling time for ground scenario (minutes,
"CAUTION", or "FUSE MELT")
|
air |
string |
Cooling time for air scenario (minutes,
"CAUTION", or "FUSE MELT")
|
btms |
number | Brake Temperature Monitoring System value |
energy |
number | Adjusted brake energy |
Performance — VApp Details (Airbus Only)
Airbus aircraft return a vAppDetails object showing the
VApp composition.
| Field | Type | Description |
|---|---|---|
deltaWind |
number | Wind correction component (kt) |
athrOn |
number | Auto-thrust ON additive (5 kt if active, 0 otherwise) |
deltaIceAccretion |
number | Ice accretion correction (5 or 10 kt) |
approachCorrection |
number | APPR_COR = max(athrOn, deltaWind, deltaIceAccretion) |
vPilot |
integer | Pilot additional additive |
totalVrefCorrection |
integer | Total correction applied = APPR_COR + vPilot |
Performance — Inflight Extras
| Field | Type | Description |
|---|---|---|
nonNormalCondition |
string|null | Applied NNC item (inflight only) |
runwayExits |
array | Available runway exit points (inflight only) |
graphic |
object |
Generated SVG/PNG/JPG graphics. Inflight: factored and
unfactored sub-objects, each containing
svg, png,
jpg URLs.Dispatch (Airbus only): additionally exposes a dispatch sub-object (single Required Landing
Distance chart); factored and
unfactored mirror that same image for backwards
compatibility.
|
Dispatch Response Example
{
"apiVersion": "1.3.6",
"copyright": "Calculated by Virtual Performance Tool",
"disclaimer": "For entertainment and educational use only.",
"calculationPossible": true,
"subCalculation": "LANDING_DISPATCH",
"units": {
"weight": "kg",
"distance": "ft",
"altitude": "ft",
"wind": "kt",
"depth": "mm"
},
"performance": {
"flap": "30",
"lda": 9800,
"isNOTAM": false,
"runwayIdent": "25R",
"appClimbLimit": 66000,
"fieldLimit": 65400,
"landingWeight": 65400,
"perfLimitedLandingWeight": 65400,
"ldgClimbLimit": 66500,
"quickTurnWeight": 63000,
"structLandingWeight": 66361,
"tireSpeed": 66361,
"limitedBy": "FIELD",
"quickTurnTime": 0,
"ldgGaClimbGrad": 3.12,
"goAroundAltitude": 1500,
"balkedLandingProcedure": {
"procedure": "STRAIGHT AHEAD TO 3000 FT",
"isCalculationRequired": true,
"userAllowed": true,
"maxLandingWeight": 71200,
"margin": 5800,
"goAroundFlaps": "CONF 3"
},
"vRef": 138,
"vFly": 138,
"vApp": 143,
"vMca": 115,
"vrefLabel": "Vref",
"requiredLandingDist": 5200,
"graphic": {
"dispatch": {
"svg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.svg",
"png": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.png",
"jpg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.jpg"
},
"factored": {
"svg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.svg",
"png": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.png",
"jpg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.jpg"
},
"unfactored": {
"svg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.svg",
"png": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.png",
"jpg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResultAirbusDispatch_1_1775923266.jpg"
}
}
},
"caution": [],
"remainingCalculations": 95,
"extraCalculations": 0
}
Inflight Response Example
{
"apiVersion": "1.3.6",
"copyright": "Calculated by Virtual Performance Tool",
"disclaimer": "For entertainment and educational use only.",
"calculationPossible": true,
"subCalculation": "LANDING_INFLIGHT",
"performance": {
"runwayExits": [
{
"name": "A6",
"exitLength": 7696
},
{
"name": "B8",
"exitLength": 7552
},
{
"name": "B9",
"exitLength": 7309
},
{
"name": "A5",
"exitLength": 6092
},
{
"name": "B7",
"exitLength": 5062
},
{
"name": "A3",
"exitLength": 4166
},
{
"name": "B5",
"exitLength": 3996
},
{
"name": "B3",
"exitLength": 1899
},
{
"name": "B6",
"exitLength": 4432
}
],
"nonNormalCondition": null,
"flap": "30",
"lda": 10954,
"isNOTAM": false,
"runwayIdent": "25R",
"appClimbLimit": 81311,
"fieldLimit": 60000,
"landingWeight": 60000,
"perfLimitedLandingWeight": 60000,
"ldgClimbLimit": 86183,
"quickTurnWeight": 76446,
"structLandingWeight": 66361,
"tireSpeed": 86183,
"limitedBy": "FIELD",
"quickTurnTime": 55,
"goAroundAltitude": 1500,
"ldgGaClimbGrad": 6.5,
"balkedLandingProcedure": {
"procedure": "STRAIGHT AHEAD TO 3000 FT",
"isCalculationRequired": true,
"userAllowed": true,
"maxLandingWeight": 71200,
"margin": 11200,
"goAroundFlaps": "CONF 3"
},
"vApp": 153,
"vMca": 88,
"vrefLabel": "Vref",
"vFly": 142,
"vRef": 142,
"requiredLandingDist": 3007,
"autobrakeLandingDist": [
{
"label": "AUTO BRK 3",
"autobrakeValue": "3",
"airDistance": 1500,
"landingDistance": 6404,
"landingDistanceIsAboveLDA": false,
"factoredDistance": 6404,
"factoredDistanceIsAboveLDA": false,
"unfactoredDistance": 5443,
"unfactoredDistanceIsAboveLDA": false,
"brakeCoolingSchedule": {
"credit": "CREDIT FOR ALL REVERSE",
"aerodynamicDrag": true,
"ground": "0",
"air": "0",
"btms": 2.3,
"energy": 14.47
},
"order": 0
}
],
"vrefAdditive": 0,
"graphic": {
"factored": {
"svg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_factored_1775923266.svg",
"png": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_factored_1775923266.png",
"jpg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_factored_1775923266.jpg"
},
"unfactored": {
"svg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_unfactored_1775923266.svg",
"png": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_unfactored_1775923266.png",
"jpg": "https://api.virtualperformancetool.com/flightenvelope/Performance/landingResult_1_unfactored_1775923266.jpg"
}
}
},
"caution": [],
"units": {
"altitude": "feet",
"distance": "feet",
"weight": "kg",
"depth": "mm",
"pressure": "hpa"
},
"remainingCalculations": 597,
"extraCalculations": 50
}
Dispatch vs Inflight — Quick Reference
| Feature | Dispatch | Inflight |
|---|---|---|
| Landing weight | Calculated (max) | User-provided (required) |
| Autobrake | Ignored (OFF) | "ALL" or specific value |
| Vref additive | Ignored (0) | 0–20 kt (min 5 for autoland) |
| NNC | Not available | Optional (subscription required) |
| MACG | Second request at DRY | From primary response |
| Icing check | Yes (OAT ≤ 10°C) | No |
| Autobrake distances | Not returned | Full array with brake cooling |
| Graphics |
SVG/PNG/JPG — single dispatch chart (dispatch,
factored, unfactored all mirror same
image). Airbus only.
|
SVG/PNG/JPG factored & unfactored (per autobrake) |
| MEL/CDL | Accepted | Accepted (dispatch calc only) |
| NOTAM | Accepted | Optional |