{
  "$schema": "https://lumavik.org/api/v1/openapi.json",
  "endpoint": "https://lumavik.org/api/v1/visibility.json",
  "description": "Auroral visibility thresholds: the modelled equatorward edge of the auroral oval at each Kp step, the NOAA G-scale mapped onto the same scale with its published frequency, and the editorial viewing bands by geomagnetic latitude. It says what a location needs. It is not a forecast.",
  "model": {
    "geomagnetic_pole": {
      "latitude": 80.8,
      "longitude": -72.7,
      "model": "IGRF tilted dipole, approx. epoch 2025"
    },
    "twilight_threshold_degrees": -18,
    "horizon": {
      "emission_altitude_km": 100,
      "earth_radius_km": 6371,
      "geometric_horizon_km": 1100,
      "formula": "sqrt(2 * R * h)",
      "source": "https://lumavik.org/skywatch/aurora-oval-explained/"
    }
  },
  "provenance": "The oval-edge table and the tilted-dipole coordinate transform are the model this site's own calculators run, ported from public/js/aurora-engine.js at build time rather than copied. The viewing bands are the editorial table published on the page named in `source`. The NOAA G-scale mapping and its published average frequency per solar cycle come from NOAA SWPC, \"NOAA Space Weather Scales\".",
  "caveats": [
    "There are two different \"Kp you need\" numbers and confusing them is the most common error made with this data. `kp_oval_overhead` is the Kp at which the modelled auroral oval expands far enough for emission to be produced roughly above that location. `kp_visible_from_area` is the editorial estimate of when a display becomes worth going outside for from there, which is lower, because emission around 100 km up has a geometric horizon of about 1100 km and is routinely seen on the poleward horizon by people far outside the oval. Quote whichever you mean, and say which.",
    "The oval-edge table is a modelled approximation of where auroral emission typically reaches at each Kp, not a boundary. The oval is a ring around the geomagnetic pole that moves within a single three-hour Kp interval, and emission around 100 km up is visible from roughly 1100 km equatorward of where it is produced.",
    "Geomagnetic latitude here is the tilted-dipole approximation, not corrected geomagnetic (CGM) coordinates from the full IGRF model. The two differ by up to about two degrees in places, which near a threshold is one Kp step. Use it to decide roughly what a location needs, not to settle an argument about one degree.",
    "Kp is reported once per three-hour UT interval on a quasi-logarithmic scale and is published after the interval it describes. A substorm can brighten the sky for twenty minutes without moving it. Treat a Kp figure as a summary of three hours that have already happened, never as a live reading.",
    "None of this predicts a specific night. It says what a location needs; whether the Sun supplies it is a separate question answered by NOAA SWPC in real time."
  ],
  "counts": {
    "kp_steps": 10,
    "viewing_bands": 5
  },
  "related": {
    "cities": "https://lumavik.org/api/v1/cities.json",
    "darkness": "https://lumavik.org/api/v1/darkness.json",
    "human_page": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/",
    "calculator": "https://lumavik.org/tools/geomagnetic-latitude-calculator/"
  },
  "licence": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Lumavik — https://lumavik.org",
    "note": "Free to reuse, including commercially, with a link back to the endpoint or the page a figure came from."
  },
  "oval_edge_by_kp": [
    {
      "kp": 0,
      "oval_edge_geomagnetic_latitude": 66.5,
      "noaa_storm_level": null,
      "noaa_storm_name": null,
      "average_events_per_solar_cycle": null
    },
    {
      "kp": 1,
      "oval_edge_geomagnetic_latitude": 64.5,
      "noaa_storm_level": null,
      "noaa_storm_name": null,
      "average_events_per_solar_cycle": null
    },
    {
      "kp": 2,
      "oval_edge_geomagnetic_latitude": 62.4,
      "noaa_storm_level": null,
      "noaa_storm_name": null,
      "average_events_per_solar_cycle": null
    },
    {
      "kp": 3,
      "oval_edge_geomagnetic_latitude": 60.4,
      "noaa_storm_level": null,
      "noaa_storm_name": null,
      "average_events_per_solar_cycle": null
    },
    {
      "kp": 4,
      "oval_edge_geomagnetic_latitude": 58.3,
      "noaa_storm_level": null,
      "noaa_storm_name": null,
      "average_events_per_solar_cycle": null
    },
    {
      "kp": 5,
      "oval_edge_geomagnetic_latitude": 56.3,
      "noaa_storm_level": "G1",
      "noaa_storm_name": "Minor",
      "average_events_per_solar_cycle": 1700
    },
    {
      "kp": 6,
      "oval_edge_geomagnetic_latitude": 54.2,
      "noaa_storm_level": "G2",
      "noaa_storm_name": "Moderate",
      "average_events_per_solar_cycle": 600
    },
    {
      "kp": 7,
      "oval_edge_geomagnetic_latitude": 52.2,
      "noaa_storm_level": "G3",
      "noaa_storm_name": "Strong",
      "average_events_per_solar_cycle": 200
    },
    {
      "kp": 8,
      "oval_edge_geomagnetic_latitude": 50.1,
      "noaa_storm_level": "G4",
      "noaa_storm_name": "Severe",
      "average_events_per_solar_cycle": 100
    },
    {
      "kp": 9,
      "oval_edge_geomagnetic_latitude": 48.1,
      "noaa_storm_level": "G5",
      "noaa_storm_name": "Extreme",
      "average_events_per_solar_cycle": 4
    }
  ],
  "viewing_bands": [
    {
      "geomagnetic_latitude": "65–70°",
      "kp_from": 2,
      "kp_to": 4,
      "means": "Aurora can be nearby or overhead; faint activity may still need dark skies",
      "source": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/"
    },
    {
      "geomagnetic_latitude": "60–65°",
      "kp_from": 3,
      "kp_to": 5,
      "means": "A realistic chance, often low on the poleward horizon at the lower end",
      "source": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/"
    },
    {
      "geomagnetic_latitude": "55–60°",
      "kp_from": 5,
      "kp_to": 7,
      "means": "Strong activity may bring a visible northern arc or rays",
      "source": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/"
    },
    {
      "geomagnetic_latitude": "50–55°",
      "kp_from": 6,
      "kp_to": 8,
      "means": "Aurora becomes possible during major disturbances, usually low and toward the north",
      "source": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/"
    },
    {
      "geomagnetic_latitude": "below 50°",
      "kp_from": 8,
      "kp_to": 9,
      "means": "Rare, demanding conditions; a high Kp alone still does not guarantee visibility",
      "source": "https://lumavik.org/skywatch/what-kp-index-to-see-northern-lights/"
    }
  ],
  "forecast_products": [
    {
      "product": "Solar-wind data (L1)",
      "from_minutes": 5,
      "to_minutes": 60,
      "covers": "Upstream conditions as measured at the L1 point, minutes of context",
      "source": "https://lumavik.org/skywatch/ovation-aurora-model/"
    },
    {
      "product": "L1 nowcast",
      "from_minutes": 30,
      "to_minutes": 60,
      "covers": "The only product resting on a direct measurement of the magnetic field that is arriving",
      "source": "https://lumavik.org/skywatch/aurora-forecast-accuracy/"
    },
    {
      "product": "OVATION 30-minute forecast",
      "from_minutes": 30,
      "to_minutes": 90,
      "covers": "Modelled auroral emission, roughly 30 to 90 minutes ahead",
      "source": "https://lumavik.org/skywatch/ovation-aurora-model/"
    },
    {
      "product": "Kp index",
      "from_minutes": 180,
      "to_minutes": 540,
      "covers": "Three-hour blocks, looking backwards",
      "source": "https://lumavik.org/skywatch/kp-index-explained/"
    },
    {
      "product": "Three-day forecast",
      "from_minutes": 1440,
      "to_minutes": 4320,
      "covers": "Identifies nights worth keeping free; never an hour",
      "source": "https://lumavik.org/skywatch/aurora-forecast-accuracy/"
    },
    {
      "product": "27-day outlook",
      "from_minutes": 30240,
      "to_minutes": 38880,
      "covers": "Recurrence from solar rotation, not a prediction",
      "source": "https://lumavik.org/skywatch/aurora-forecast-accuracy/"
    }
  ],
  "emission_by_altitude": [
    {
      "colour": "Blue / violet",
      "wavelength_nm": null,
      "from_km": 80,
      "to_km": 100,
      "emitter": "Nitrogen",
      "note": "The lower edge of a curtain; needs energetic particles to penetrate this deep",
      "source": "https://lumavik.org/skywatch/why-is-the-aurora-green/"
    },
    {
      "colour": "Green",
      "wavelength_nm": 557.7,
      "from_km": 100,
      "to_km": 150,
      "emitter": "Atomic oxygen",
      "note": "The emission the dark-adapted eye is most sensitive to",
      "source": "https://lumavik.org/skywatch/why-is-the-aurora-green/"
    },
    {
      "colour": "Red",
      "wavelength_nm": 630,
      "from_km": 200,
      "to_km": 400,
      "emitter": "Atomic oxygen",
      "note": "A long-lived state that only survives where collisions are rare",
      "source": "https://lumavik.org/skywatch/why-is-the-aurora-green/"
    }
  ]
}
