A METAR tells you what the weather is doing at an airport, and a TAF tells you what it will do there over the next day. Neither tells you that there's a line of embedded thunderstorms across your route at FL280, moderate rime icing in the climb, or a patch of severe turbulence a pilot hit twenty minutes ago over your next fix. That en-route hazard picture comes from three different products — SIGMETs, AIRMETs, and PIREPs — and if you're building a briefing tool, an EFB, or a dispatch dashboard, you need all three in your stack, decoded, not as raw teletype.
The three products and what each one answers
They form a rough severity ladder, and they come from two different sources — forecasters versus pilots.
- AIRMET (Airmen's Meteorological Information) — a forecast advisory for moderate hazards affecting a wide area: IFR ceilings/visibility, mountain obscuration, moderate turbulence, moderate icing, and strong surface winds. Issued on a schedule and amended as conditions change.
- SIGMET (Significant Meteorological Information) — a forecast advisory for more severe conditions that affect all aircraft: severe turbulence, severe icing, widespread dust or sandstorms, volcanic ash, and (as a separate Convective SIGMET in the US) lines and clusters of thunderstorms.
- PIREP (Pilot Report) — not a forecast at all. It's a voluntary in-flight observation filed by a real pilot, capturing what an aircraft actually encountered: turbulence, icing, cloud tops, in-flight visibility, temperature aloft. PIREPs are the ground truth that confirms — or contradicts — the forecast.
The workflow most flight-planning software follows is: pull the AIRMETs and SIGMETs to see what's forecast along the route, then overlay recent PIREPs to see what's actually happening up there right now.

AIRMETs: SIERRA, TANGO, and ZULU
US AIRMETs come in three named types, and knowing which is which tells you the hazard class before you read a single line of the body:
- SIERRA — IFR conditions (ceilings below 1,000 ft and/or visibility below 3 SM) and mountain obscuration.
- TANGO — moderate turbulence, sustained surface winds of 30 knots or more, and low-level wind shear.
- ZULU — moderate icing and the location of freezing levels.
A raw AIRMET bulletin header looks dense but decodes cleanly:
WAUS46 KKCI 151445 WA6S
AIRMET SIERRA ... FROM ...
AIRMET IFR ... CIG BLW 010/VIS BLW 3SM BR
FCST ... CONDS ENDG 15-18ZWAUS46 KKCI 151445— WMO header: bulletin type, issuing office (KKCIis the Aviation Weather Center), and the day/time of issue (15at1445Z).AIRMET SIERRA— the SIERRA (IFR) product.CIG BLW 010— ceiling below 1,000 ft;VIS BLW 3SM BR— visibility below 3 statute miles in mist.CONDS ENDG 15-18Z— the forecaster expects conditions to end between 15Z and 18Z.
Each advisory carries an affected area — a polygon of latitude/longitude points — plus a floor and ceiling (e.g. SFC to FL180). That polygon is the part that matters for a map overlay, and it's the part that's most painful to parse out of the text by hand.
SIGMETs: higher severity, same shape
A SIGMET uses the same bulletin structure but flags conditions severe enough to affect every aircraft, not just light ones. Non-convective SIGMETs cover severe/extreme turbulence, severe icing, volcanic ash, and dust/sandstorms. In the US, thunderstorms are broken out into Convective SIGMETs, issued hourly (and more often when needed) for lines of storms, embedded storms, or areas of thunderstorms with tops to a stated flight level:
WSUS31 KKCI 151455
CONVECTIVE SIGMET 21C
VALID UNTIL 1655Z
IL IN OH
FROM 30ESE FWA-40SW CVG
LINE TS 20 NM WIDE MOV FROM 25025KT. TOPS TO FL420.Here the storm line is 20 nautical miles wide, moving from 250° at 25 knots, with tops to FL420 — the kind of feature you want drawn on a route map with a hard "do not route through" flag, not buried in a text blob.
PIREPs: the ground truth from the flight deck
PIREPs are terse because pilots file them over the radio. Two report classes matter: UA (routine) and UUA (urgent — a significant hazard like severe turbulence, severe icing, or a tornado; prioritize these in any UI). The body is a series of slash-delimited fields:
UA /OV JFK/TM 1845/FL085/TP B738/TB MOD/RM CONT MOD CHOP| Field | Meaning | Example |
|---|---|---|
UA / UUA | Routine / urgent report | UA |
/OV | Location relative to a fix or navaid | JFK (over JFK) |
/TM | Time in Zulu (HHMM) | 1845 |
/FL | Flight level / altitude | 085 (8,500 ft) |
/TP | Aircraft type | B738 |
/SK | Sky / cloud layers | BKN035-TOP070 |
/TA | Temperature aloft (°C) | M08 |
/WV | Wind (dir/speed) | 27045KT |
/TB | Turbulence | MOD |
/IC | Icing | LGT RIME |
/RM | Free-text remarks | CONT MOD CHOP |
The example above decodes to: a Boeing 737-800 over JFK at 8,500 ft reported moderate, continuous chop at 18:45Z. That single report is worth more than a forecast for the aircraft five minutes behind it — which is exactly why briefing tools weight recent PIREPs so heavily.

Getting them by API instead of parsing teletype
Writing a parser for all three products — WMO headers, area polygons, floor/ceiling groups, the AIRMET SIERRA/TANGO/ZULU split, Convective SIGMET movement vectors, and slash-delimited PIREP fields with their M-for-minus temperatures — is a real, ongoing maintenance burden, and it breaks whenever the upstream formatting shifts. SkyLink API returns all three already decoded from its weather endpoints, keyed to a geographic bounding box around your route rather than a single airport.
AIRMETs and SIGMETs come from one endpoint, filterable by severity:
# Every active AIRMET and SIGMET whose area intersects a Midwest corridor box
curl "https://skylink-api.p.rapidapi.com/weather/airsigmet?bbox=38,-90,45,-80" \
-H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"
# SIGMETs only
curl "https://skylink-api.p.rapidapi.com/weather/airsigmet?bbox=38,-90,45,-80&type=sigmet" \
-H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"Each report comes back with the raw text preserved plus structured fields — report_type, start_time/end_time, and an observation object with the hazard type, floor, ceiling, and the area coords array ready to draw as a polygon:
{
"report_type": "AIRMET",
"start_time": "2025-01-15T14:45:00Z",
"end_time": "2025-01-15T20:45:00Z",
"observation": {
"type": "IFR",
"floor": "SFC",
"ceiling": "FL180",
"coords": [
{ "lat": 41.5, "lon": -87.5 },
{ "lat": 42.0, "lon": -86.0 }
]
}
}PIREPs come from a parallel endpoint that takes the same bounding box plus a look-back window:
# PIREPs filed in the last 3 hours over the Northeast corridor
curl "https://skylink-api.p.rapidapi.com/weather/pireps?bbox=39,-78,42,-71&hours=3" \
-H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"Every PIREP is returned with its raw string and the fields already pulled out — report_type (so you can flag UUA urgent reports), altitude, aircraft_type, turbulence, icing, plus latitude/longitude so each report drops straight onto a map:
{
"report_type": "UA",
"location": "JFK",
"altitude": "FL085",
"aircraft_type": "B738",
"turbulence": "Moderate",
"icing": null,
"latitude": 40.64,
"longitude": -73.78
}Two things to build in from the start. First, an empty result is normal: "reports": [] with "total": 0 means no active advisories or no recent pilot reports in that box — common in good weather — not an error. Second, size your boxes to the route segment. AIRMET/SIGMET areas are large, but PIREPs are sparse outside busy airspace; a box that's too tight over a quiet region returns nothing even when the sky is bumpy.
Putting it together: a route hazard layer
For a pre-flight briefing you'd query all three around your flight path, then compose them: draw AIRMET/SIGMET polygons as colored hazard zones (amber for AIRMET, red for SIGMET), drop PIREP markers on top with urgent UUA reports highlighted, and cross-check — an active turbulence AIRMET confirmed by two moderate-chop PIREPs is a very different decision than an AIRMET with no reports under it. Pair this with our METAR and TAF guide for departure and destination conditions and the winds aloft forecasts for en-route wind and temperature, and you have full pre-flight weather coverage from a single API.
If you're building hazardous-weather briefing into a flight-planning tool, EFB, or dispatch system, SkyLink API gives you a free tier of 1,000 requests/month to test against, with paid plans starting at $18.59/mo once you're ready for production traffic. It's available through the free trial — sign up, grab a key, and pull decoded SIGMETs, AIRMETs, and PIREPs without writing a single teletype parser.
