TAF (FAA)
Required roles:
AIS PIB API— Roles
Base endpoint:https://ais-pib-api.ibosoft.net.tr:2087/opmet-decoder-taf-faa
Reference documents: FAA AIM, Basic (20/02/25) with Change 1 (07/08/25) · FAA Aviation Weather Handbook FAA-H-8083-28 (2024)
Attribution: showibonav.aeroor "Decoded by Ibosoft" wherever decoded output is displayed
Data sources: none — decodes the message supplied in the request.
Last updated: 17 OCT 2026About the reference documents: Related Documents and Resources
Decodes a terminal aerodrome forecast (TAF) in the U.S. format into readable fields, one box per forecast group. Also returns the position of every decoded token in the message (positions).
The format is that of AIM 7-1-28 and the TAF chapter of the FAA Aviation Weather Handbook. For ICAO format forecasts use TAF (ICAO); MET Format Check tells which decoder fits an aerodrome.
Endpoints
POST /opmet-decoder-taf-faa/decode
Content-Type: application/json
{ "raw": "<TAF text>" }
Parameters
| Parameter | In | Description |
|---|---|---|
raw |
body | Forecast text, at least 10 characters. Line breaks, extra spaces, lower case and a final = are accepted. |
How the format is processed
- Field names and wording follow the AIM and the FAA Aviation Weather Handbook: U.S. units (kt, SM, ft AGL),
Sky conditioninstead of cloud, and the handbook's meanings of the change groups in each box header. - Header elements (type, location indicator, time of issue, period of validity) are at the top level.
- Forecast groups: the base forecast and every change group (
FM,TEMPO,BECMG,PROB30,PROB40) become one box each inforecast_groups. The base forecast andFMgroups always contain their mandatory elements (nullor[]when missing);TEMPO,BECMGandPROBgroups contain only the elements they give. - Special cases:
P6SMis "more than 6 SM";SKCis "Sky clear"; wind00000KTisCalm; low-level wind shear (WS010/31022KT) is decoded in its group;NSW(no significant weather) is valid inTEMPO,BECMGandPROBgroups. - Undecodable groups are not guessed; they are listed under
Undecodable elements(neighbouring groups form one entry).
Response
Example — AIM 7-1-28 (first groups shown):
TAF KPIT 091730Z 0918/1024 15005KT 5SM HZ FEW020 WS010/31022KT FM091930 30015G25KT 3SM SHRA OVC015 TEMPO 0920/0922 1/2SM +TSRA OVC008CB …
{
"Type of forecast": "TAF",
"Location indicator": "KPIT",
"Time of issue of forecast": "Day 09, 17:30 UTC",
"Days and period of validity of forecast": "Day 09, 18:00 UTC to Day 10, 24:00 UTC",
"forecast_groups": [
{"label": "Base forecast (Day 09, 18:00 UTC to Day 10, 24:00 UTC)",
"Surface wind": "05 kt from 150°T", "Visibility": "5 SM", "Weather": ["haze"],
"Sky condition": ["Few [>0, 2/8] at 2000 ft AGL"],
"Wind shear": "Low level wind shear at 1000 ft: wind from 310°T at 22 kt"},
{"label": "From - Day 09, 19:30 UTC - (Changes are expected at Day 09, 19:30 UTC: indicates significant change) (Note: …)",
"Surface wind": "15 kt gusting 25 kt from 300°T", "Visibility": "3 SM", "Weather": ["rain shower"],
"Sky condition": ["Overcast [8/8] at 1500 ft AGL"]},
{"label": "Temporary - Day 09, 20:00 UTC to Day 09, 22:00 UTC - (…) (Note: …)",
"Visibility": "1/2 SM", "Weather": ["Heavy Thunderstorm with rain"],
"Sky condition": ["Overcast [8/8] at 800 ft AGL cumulonimbus"]}
],
"positions": [{"start": 0, "end": 3}, "…"],
"raw": "TAF KPIT 091730Z …"
}
| Key | Description |
|---|---|
| header keys | Type of forecast, location indicator, time of issue, period of validity |
forecast_groups |
One box per forecast group: label, label_start/label_end (header span in the message) and the group's elements |
marker_positions |
Header spans of the change groups |
Undecodable elements |
Groups that do not follow the U.S. format (only when there are any) |
positions |
Character spans {start, end} in the normalized message (single spaces, upper case, no final =), one per decoded value in output order |
raw |
The message as received |
Errors
| Code | Meaning |
|---|---|
400 |
The message could not be parsed at all; detail explains why |
422 |
raw is missing or shorter than 10 characters |