VONA (ICAO)

Required roles: AIS PIB API — Roles
Base endpoint: https://ais-pib-api.ibosoft.net.tr:2087/opmet-decoder-vona-icao
Reference documents: ICAO Doc 10157 PANS-MET, Ed. 1 (27/11/25) · ICAO Doc 8400 PANS-ABC, Ed. 9, Amend. 33 (8/11/18)
Attribution: show ibonav.aero or "Decoded by Ibosoft" wherever decoded output is displayed
Data sources: none — decodes the message supplied in the request.
Last updated: 17 OCT 2026

About the reference documents: Related Documents and Resources

Decodes a volcano observatory notice for aviation (VONA) into readable fields, following the PANS-MET template strictly. Optionally returns machine-readable values, including the volcano position and the current colour code (parsed).

The format is that of PANS-MET Table A7-1 (see also Chapter 6, 6.1.4–6.1.8). A VONA is issued by a State volcano observatory; the volcanic ash advisory of a VAAC is a different message (VA Advisory (ICAO)). To get notices to decode, see VONA.


Endpoints

POST /opmet-decoder-vona-icao/decode?parsed=false
Content-Type: application/json

{ "raw": "<VONA text>" }

Parameters

Parameter In Default Description
raw body — Notice text, at least 10 characters
parsed query false true: add the parsed object

How the template is processed

  • The notice is line based: each element starts with its heading and a colon (DTG:, VOLCANO:, PSN: …); the value runs to the next heading and is read against that element's template as a whole.
  • Field names and wording come from PANS-MET Table A7-1 and the related paragraphs: output keys are the template element names; colour codes carry their meaning from 6.1.7 (e.g. YELLOW → "Yellow (the volcano is experiencing signs of elevated unrest …)"); times, positions, heights and durations are written out. Abbreviations are expanded as defined in PANS-MET and PANS-ABC (Doc 8400).
  • M (mandatory) elements are always present (null when missing or not following the template). C (conditional) elements — status indicator, IAVCEI number — only when present.
  • Strict template: a value that does not follow the template is not guessed; its heading and value are listed under Undecodable elements and the element is null. Where an example and the template differ, the template wins (e.g. ACT STS: DECREASED ACT in Example A7-1 is not in the template, which has DECREASED UNREST). Free-text limits apply (e.g. remarks up to 256 characters).
  • Numbers: a numeric placeholder means "up to that many digits"; date-time groups and coordinates are fixed.

For the full list of elements and their templates, see PANS-MET Table A7-1.

Response

Example — PANS-MET Example A7-1 (shortened):

VONA
DTG: 20240216/0130Z
VOLCANO: KARYMSKY 300130
PSN: N5403 E15927
AREA: RUSSIAN FEDERATION
SOURCE ELEV: 1536M AMSL
NOTICE NR: 2024/4
CURRENT COLOUR CODE: YELLOW
PREVIOUS COLOUR CODE: ORANGE
SVO: KVERT
ACT STS: DECREASED ACT
…
NXT NOTICE: WILL BE ISSUED BY 20240223/0130Z
{
  "Identification of the type of message": "Volcano observatory notice for aviation",
  "Time of origin": "2024-02-16 01:30 UTC",
  "Name of volcano": "KARYMSKY",
  "IAVCEI number": "300130",
  "Location of volcano": "N54°03' E159°27'",
  "Source elevation": "1536 m AMSL",
  "Notice number": "Notice 4 of 2024",
  "Current colour code": "Yellow (the volcano is experiencing signs of elevated unrest above known background levels; …)",
  "Activity status": null,
  "Volcanic ash cloud height": "15 km AMSL",
  "Movement": "Moving towards South-west",
  "Next notice": "Will be issued by 2024-02-23 01:30 UTC",
  "Undecodable elements": ["ACT STS: DECREASED ACT"],
  "…": "…",
  "positions": [{"start": 0, "end": 4}, "…"],
  "corrected_raw": "VONA\nDTG: …",
  "raw": "…",
  "parsed": {
    "utc_day": 16, "utc_time": "0130",
    "notice_number": "2024/4", "svo": "KVERT", "current_colour_code": "YELLOW",
    "position": {"lat": 54.05, "lon": 159.45}, "extent": []
  }
}
Key Description
element keys Decoded elements, in template order
Undecodable elements Headings with values that do not follow the template (only when there are any)
corrected_raw The message after normalization (single spaces, upper case, no final =); positions refer to this text
positions Character spans {start, end} in corrected_raw, one per decoded value in output order (volcano name and IAVCEI number separately), then one per undecodable entry
parsed With parsed=true: time of origin (utc_day, utc_time), notice_number, svo, current_colour_code (GREEN, YELLOW, ORANGE, RED, UNASSIGNED, NIL, or null if not following the template), position (lat/lon when the position is a single point) and extent ([{"phase": "source", "points": […]}] when the position is a list of coordinates). UNKNOWN position gives null / [].

Errors

Code Meaning
400 The message could not be parsed at all; detail explains why
422 raw is missing or shorter than 10 characters