Weather API
Overview
The Weather API provides real-time aviation weather data including METAR, TAF, and D-ATIS information from multiple sources. Weather data is essential for accurate performance calculations and flight planning.
Weather data is fetched from multiple authoritative sources including Aviation Weather Center (aviationweather.gov), Avinor Norway (api.met.no), and NOAA. The API automatically falls back to alternate sources if the primary source is unavailable.
Access to the Weather API is controlled by your developer key configuration. Weather access must be explicitly enabled on your key. Contact support if you need weather data access added to your integration.
Get Weather
Retrieves current METAR, TAF, and D-ATIS data for a specified airport. Also includes decoded weather information and VPT-specific runway wind component analysis.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string |
Required | Must be "weather" |
data.icao |
string |
Required |
Airport ICAO code (e.g., "EBBR",
"KJFK")
|
Request Body
{
"query": "weather",
"data": {
"icao": "EBBR"
}
}
cURL Example
curl -X POST "https://api.virtualperformancetool.com/api" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "X-API-Version: 1.3.6" \
-d '{
"query": "weather",
"data": {
"icao": "EBBR"
}
}'
Response
{
"apiVersion": "1.3.6",
"metar": {
"report": "METAR",
"icao": "EBBR",
"source": "Aviation Weather Center",
"date": "2026-03-19 19:20:00",
"text": "EBBR 191920Z 02005KT CAVOK 11/02 Q1023 NOSIG",
"textHighlighted": [
{ "text": "EBBR", "color": null, "spaceSuffix": true },
{ "text": "191920Z", "color": null, "spaceSuffix": true },
{ "text": "02005KT", "color": null, "spaceSuffix": true },
{ "text": "CAVOK", "color": "#32CD32", "spaceSuffix": true },
{ "text": "NOSIG", "color": null, "spaceSuffix": false }
],
"decoded": "METAR for station EBBR on Thu Mar 19, 19:20 UTC...\nWind: 20° at 05 KT\nVisibility: Greater than 10 km\n...",
"metar2VPT": {
"07l": {
"windDir": 20,
"windSpeed": 5,
"gust": 0,
"headwind": 4,
"gustHeadwind": 0,
"crosswindDir": 0,
"crosswindSpeed": 0,
"vrefAdd": 5,
"qnh": 1023,
"temp": 11,
"dew": 2,
"runwayConditionTakeoffDispatch": "DRY",
"runwayConditionLandingDispatch": "DRY",
"runwayConditionLandingEnroute": "DRY",
"icing": false
},
"25r": {
"windDir": 20,
"windSpeed": 5,
"gust": 0,
"headwind": -4,
"gustHeadwind": 0,
"crosswindDir": 0,
"crosswindSpeed": 0,
"vrefAdd": 5,
"qnh": 1023,
"temp": 11,
"dew": 2,
"runwayConditionTakeoffDispatch": "DRY",
"runwayConditionLandingDispatch": "DRY",
"runwayConditionLandingEnroute": "DRY",
"icing": false
}
}
},
"taf": {
"report": "TAF",
"icao": "EBBR",
"source": "Aviation Weather Center",
"date": "2026-03-19 17:04:00",
"text": "EBBR 191704Z 1918/2024 04005KT CAVOK",
"textHighlighted": [
{ "text": "EBBR", "color": null, "spaceSuffix": true },
{ "text": "CAVOK", "color": "#32CD32", "spaceSuffix": true }
],
"decoded": "TAF for station EBBR on Thu Mar 19, 17:04 UTC...\nWind: 40° at 05 KT\nVisibility: Greater than 10 km\n"
},
"ivaoDAtis": [
{
"frequency": null,
"timestamp": "2026-03-19T19:08:38.000Z",
"atis": [
"ts-1.eu-west-2.ivao.aero/EBBR_APP",
"Brussels Arrival Information CHARLIE recorded at 1908z..."
],
"callsign": "EBBR_APP",
"revision": "C",
"sessionId": 61914004,
"order": 0
}
],
"vatsimDAtis": null
}
Response Sections
The weather response contains four main sections, each providing different types of aviation weather information.
| Section | Type | Description |
|---|---|---|
metar |
object|null |
Current METAR observation with raw text, decoded values, and runway-specific wind analysis |
taf |
object|null |
Terminal Aerodrome Forecast with decoded forecast periods |
ivaoDAtis |
array|null |
D-ATIS information from the IVAO network (if available) |
vatsimDAtis |
array|null |
D-ATIS information from the VATSIM network (if available) |
METAR Object
The METAR object contains the current weather observation with multiple useful formats.
| Field | Type | Description |
|---|---|---|
report |
string |
Always "METAR" |
icao |
string |
Airport ICAO code |
source |
string |
Data source (e.g., "Aviation Weather Center", "Avinor Norway") |
date |
string |
Observation timestamp in UTC (YYYY-MM-DD HH:MM:SS) |
text |
string |
Raw METAR text |
textHighlighted |
array |
Array of token objects with text,
color (hex or null), and
spaceSuffix (boolean) for syntax highlighting
|
decoded |
string |
Human-readable decoded weather as formatted text string |
metar2VPT |
object |
Runway-specific wind analysis and conditions. Keys are runway identifiers (e.g., "07l", "25r") |
metar2VPT Object
Contains wind component calculations and runway conditions for each runway at the airport. Keys are lowercase runway identifiers (e.g., "07l", "25r", "01").
| Field | Type | Description |
|---|---|---|
windDir |
number |
Wind direction in degrees |
windSpeed |
number |
Wind speed in knots |
gust |
number |
Gust speed in knots (0 if no gusts) |
headwind |
number |
Headwind component in knots (negative = tailwind) |
gustHeadwind |
number |
Gust headwind component in knots |
crosswindDir |
number |
Crosswind direction indicator (0 = none) |
crosswindSpeed |
number |
Crosswind component in knots |
vrefAdd |
number |
VREF additive for approach speed correction |
qnh |
number |
QNH pressure in hPa |
temp |
number |
Temperature in °C |
dew |
number |
Dew point in °C |
runwayConditionTakeoffDispatch |
string |
Runway condition for takeoff dispatch (e.g., "DRY", "WET") |
runwayConditionLandingDispatch |
string |
Runway condition for landing dispatch |
runwayConditionLandingEnroute |
string |
Runway condition for enroute landing planning |
icing |
boolean |
Whether icing conditions are present |
TAF Object
The TAF object contains the terminal aerodrome forecast with decoded forecast periods.
| Field | Type | Description |
|---|---|---|
report |
string |
Always "TAF" |
icao |
string |
Airport ICAO code |
source |
string |
Data source |
date |
string |
Forecast issue timestamp in UTC |
text |
string |
Raw TAF text (truncated for display) |
textHighlighted |
array |
Array of token objects with text,
color, and spaceSuffix for syntax
highlighting
|
decoded |
string |
Human-readable decoded forecast as formatted text string |
ATIS Objects (IVAO & VATSIM)
D-ATIS information from online flight simulation networks. Returns
null if no active ATC is connected at the airport.
IVAO D-ATIS
| Field | Type | Description |
|---|---|---|
frequency |
string|null |
ATC frequency |
timestamp |
string |
ATIS update timestamp |
atis |
array |
Array of ATIS text lines |
callsign |
string |
ATC callsign (e.g., "EBBR_TWR") |
revision |
string |
ATIS revision letter |
sessionId |
number |
IVAO session identifier |
order |
number |
Priority order (0 = highest priority) |
VATSIM D-ATIS
| Field | Type | Description |
|---|---|---|
frequency |
string |
ATIS frequency (e.g., "118.250") |
atis |
array |
Array of ATIS text lines |
callsign |
string |
ATC callsign (e.g., "EBBR_ATIS") |
atisCode |
string |
Information letter (A, B, C, etc.) |
order |
number |
Priority order (0 = highest priority) |
IVAO and VATSIM D-ATIS data is only available when controllers are
actively connected on those networks. If no ATC is online at the
requested airport, these fields will return
null.
Error Handling
Common error responses for the weather endpoint:
{
"apiVersion": "1.3.6",
"Error": [
{
"message": "Missing ICAO."
}
]
}
METAR data has a validity window of 75 minutes. If the latest available METAR is older than this threshold, the API will still return it but you should consider it potentially outdated for operational use.