Crosswind Calculator
Calculate crosswind components for airport runways using live METAR data or manual wind inputs.
Endpoints
GET
/api/v1/performance/crosswind/{icaoCodeOrIdent}Commercial PilotGet Crosswind For Airport
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| icaoCodeOrIdent* | path | string | ICAO code or airport identifier |
Responses
200Returns crosswind data for all runwaysAirportCrosswindResponseDto
airportIdentifierstringICAO code or identifier of the airport
windDirectionDegreesintegernullableWind direction in degrees from METAR (null if variable)
windSpeedKtintegerWind speed in knots from METAR
windGustKtintegernullableWind gust speed in knots from METAR (if reported)
isVariableWindbooleanWhether the wind was reported as variable (VRB)
rawMetarstringnullableRaw METAR text for reference
observationTimestringnullableMETAR observation time
runwaysRunwayCrosswindComponentDto[]Crosswind components for each runway end at the airport
runwayEndIdstringRunway end identifier (e.g., "09", "27L")
magneticHeadingDegreesintegerRunway heading in magnetic degrees
crosswindKtnumberCrosswind component in knots. Positive = from the right, Negative = from the left
headwindKtnumberHeadwind component in knots. Positive = headwind, Negative = tailwind
gustCrosswindKtnumbernullableCrosswind component from gusts in knots (if gust data available). Positive = from the right
gustHeadwindKtnumbernullableHeadwind component from gusts in knots (if gust data available). Positive = headwind
absoluteCrosswindKtnumberAbsolute value of crosswind component (for comparison purposes)
hasHeadwindbooleanWhether this runway has a headwind (favorable) vs tailwind
recommendedRunwaystringnullableRecommended runway end identifier (lowest crosswind with headwind)
400If METAR is missing required wind dataApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.
404If the airport or METAR is not foundApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.
503ApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.
Code Examples
curl \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
"https://preflightapi-apim-service.azure-api.net/api/v1/performance/crosswind/KJFK"POST
/api/v1/performance/crosswind/calculateCommercial PilotCalculate Crosswind
Request BodyCrosswindCalculationRequestDto
windDirectionDegreesintegernullableWind direction in degrees (0-360, or null for variable)
windSpeedKtintegerWind speed in knots
windGustKtintegernullableWind gust speed in knots (optional)
runwayHeadingDegreesintegerRunway heading in magnetic degrees (0-360)
Responses
200Returns calculated crosswind componentsCrosswindCalculationResponseDto
crosswindKtnumberCrosswind component in knots. Positive = from the right, Negative = from the left
headwindKtnumberHeadwind component in knots. Positive = headwind, Negative = tailwind
gustCrosswindKtnumbernullableCrosswind component from gusts in knots (if gust data provided). Positive = from the right
gustHeadwindKtnumbernullableHeadwind component from gusts in knots (if gust data provided). Positive = headwind
windDirectionDegreesintegernullableWind direction used in calculation (degrees)
windSpeedKtintegerWind speed used in calculation (knots)
windGustKtintegernullableWind gust speed used in calculation (knots)
runwayHeadingDegreesintegerRunway heading used in calculation (degrees)
isVariableWindbooleanWhether the wind was reported as variable (VRB)
400If the request parameters are invalidApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.
Code Examples
curl \
-X POST \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"windDirectionDegrees": 230,
"windSpeedKt": 15,
"windGustKt": 22,
"runwayHeadingDegrees": 180
}' \
"https://preflightapi-apim-service.azure-api.net/api/v1/performance/crosswind/calculate"