Helioviewer Events API

Solar Event Data Platform

Version 2.0

Welcome to the Helioviewer Events API. This API provides access to solar event data from multiple sources.

Supported Sources & Timestamp Formats

Supported Sources

SourceDescription
CCMCCommunity Coordinated Modeling Center (DONKI, FlareScoreboard)
HEKHeliophysics Event Knowledgebase
RHESSIReuven Ramaty High Energy Solar Spectroscopic Imager

Source names are case-insensitive in all endpoints.

Accepted Timestamp Formats

FormatExample
Unix timestamp1705314645
ISO 8601 with microseconds & timezone2024-01-15T10:30:45.123456+00:00
ISO 8601 with milliseconds & Z2024-01-15T10:30:45.123Z
ISO 8601 with timezone2024-01-15T10:30:45+00:00
ISO 8601 with Z2024-01-15T10:30:45Z
ISO 8601 without timezone2024-01-15T10:30:45
Space-separated2024-01-15 10:30:45
PHP strtotime fallback2024-01-15, now, etc.

Helioviewer.org Integration

GET /helioviewer/events/{source}/observation/{timestamp} Legacy observation format

Get events active at a specific observation time, grouped by event type with nested detection method groups.

ParameterTypeDescription
sourcepathEvent source (CCMC, HEK, RHESSI)
timestamppathObservation time (any supported format)
import requests

response = requests.get(
    "https://events.helioviewer.org/helioviewer/events/HEK/observation/2025-03-15T12:00:00Z"
)
data = response.json()

Example response:

[
  {
    "name": "Active Region",
    "pin": "AR",
    "groups": [{
      "name": "HMI SHARP",
      "contact": "turmon@jpl.nasa.gov",
      "data": [{
        "id": "019c3d8f-0932-...",
        "path": "HEK>>Active Region>>HMI SHARP",
        "start": "2025-03-15T08:00:00",
        "end": "2025-03-15T12:00:00",
        "hv_hpc_x": -806.97,
        "hv_hpc_y": 440.01,
        "label": "HMI SHARP 12923",
        ...
      }, ...]
    }]
  },
  ... // 31 event type groups
]
POST /helioviewer/events/from/{from}/to/{to} Events by path prefixes

Get events matching path prefixes within a time range. Returns flat list with Helioviewer-specific fields.

ParameterTypeDescription
frompathStart time (Unix timestamp)
topathEnd time (Unix timestamp)
pathsbody (JSON)Array of event path prefixes
import requests

response = requests.post(
    "https://events.helioviewer.org/helioviewer/events/from/1741996800/to/1742083200",
    json={"paths": ["HEK>>Flare"]}
)
data = response.json()

Example response:

{
  "paths": ["HEK>>Flare"],
  "from": 1741996800,
  "to": 1742083200,
  "count": 33,
  "events": [{
    "x": 1741999352000,
    "x2": 1741999592000,
    "y": 1,
    "event_starttime": "2025-03-15 00:42:32",
    "event_endtime": "2025-03-15 00:46:32",
    "event_peaktime": "2025-03-15 00:44:20",
    "hv_hpc_x": 345.6,
    "hv_hpc_y": 192,
    "event_type": "FL",
    "frm_name": "Flare Detective - Trigger Module",
    "concept": "Flare",
    "hv_labels_formatted": {"Peak Flux": "37.4 DN/sec/pixel"},
    ...
  }, ...]
}
POST /helioviewer/distributions/size/{size}/from/{from}/to/{to} Event count distributions

Get event count distributions aggregated into time buckets.

ParameterTypeDescription
sizepathBucket size: 30m, h, D, W, M, Y
frompathStart time (Unix timestamp)
topathEnd time (Unix timestamp)
pathsbody (JSON)Array of event path prefixes
import requests

response = requests.post(
    "https://events.helioviewer.org/helioviewer/distributions/size/D/from/1741996800/to/1742256000",
    json={"paths": ["HEK>>Flare", "CCMC>>DONKI>>CME"]}
)
data = response.json()

Example response:

{
  "paths": ["HEK>>Flare", "CCMC>>DONKI>>CME"],
  "size": "D",
  "from": 1741996800,
  "to": 1742256000,
  "event_types": ["C3", "FL"],
  "buckets": [
    {"start": 1741996800, "counts": {"C3": 9, "FL": 33}},
    {"start": 1742083200, "counts": {"C3": 13, "FL": 73}},
    {"start": 1742169600, "counts": {"C3": 16, "FL": 79}},
    {"start": 1742256000, "counts": {"C3": 16, "FL": 49}}
  ]
}

Event Data

GET /api/v1/events/recents Recent events

Get the last 100 updated events with enhanced data.

import requests

response = requests.get(
    "https://events.helioviewer.org/api/v1/events/recents"
)
events = response.json()

Example response:

[{
  "url": "https://events.helioviewer.org/api/v1/events/019d0c00-1985-...",
  "path": "CCMC>>Solar Flare Predictions>>ASSA",
  "start": "2026-03-20 16:00:00",
  "end": "2026-03-21 04:00:00",
  "hv_hpc_x": -1,
  "hv_hpc_y": -1,
  "label": "ASSA \nC: 25%\nM: 4%\nX: 0%",
  "coordinate_system": "stonyhurst",
  "regions": [{"organization": "MODEL", "external_id": "4", ...}],
  "source_url": "https://events.helioviewer.org/api/v1/events/019d0c00-.../source",
  "views": [{"name": "Flare Prediction", "content": {"C": 0.25, "M": 0.04, ...}}],
  "link": {"url": "...", "text": "Helioviewer Events API JSON"}
}, ... // 100 events]
GET /api/v1/events/{source}/observation/{timestamp} Events by observation time

Get events from a specific source active at a given observation time.

ParameterTypeDescription
sourcepathEvent source (CCMC, HEK, RHESSI)
timestamppathObservation time (any supported format)
import requests

response = requests.get(
    "https://events.helioviewer.org/api/v1/events/HEK/observation/2025-03-15T12:00:00Z"
)
events = response.json()

Example response:

[{
  "url": "https://events.helioviewer.org/api/v1/events/019c3d8f-0932-...",
  "path": "HEK>>Active Region>>HMI SHARP",
  "start": "2025-03-15 08:00:00",
  "end": "2025-03-15 12:00:00",
  "hv_hpc_x": -806.97,
  "hv_hpc_y": 440.01,
  "label": "HMI SHARP 12923",
  "coordinate_system": "helioprojective",
  "regions": [{"organization": "NOAA", "external_id": "14033", ...}],
  ...
}, ... // 49 events]
GET /api/v1/events/{uuid} Single event by UUID

Get a single event by its UUID with full details.

ParameterTypeDescription
uuidpathEvent UUID
import requests

uuid = "019d0c00-1985-7131-84eb-24bc34a750ad"
response = requests.get(
    f"https://events.helioviewer.org/api/v1/events/{uuid}"
)
event = response.json()

Example response:

{
  "url": "https://events.helioviewer.org/api/v1/events/019d0c00-1985-...",
  "path": "CCMC>>Solar Flare Predictions>>ASSA",
  "start": "2026-03-20 16:00:00",
  "peak": "2026-03-21 04:00:00",
  "end": "2026-03-21 04:00:00",
  "coordinate_time": "2026-03-20 17:24:36",
  "hv_hpc_x": -1,
  "hv_hpc_y": -1,
  "label": "ASSA \nC: 25%\nM: 4%\nX: 0%",
  "coordinate_system": "stonyhurst",
  "regions": [{"organization": "MODEL", "external_id": "4", ...}],
  "source_url": ".../source",
  "views": [{"name": "Flare Prediction", "content": {"C": 0.25, "M": 0.04, "X": 0, ...}}],
  "link": {"url": "...", "text": "Helioviewer Events API JSON"}
}
GET /api/v1/events/{uuid}/source Raw source data

Get the raw source data for an event (original data from the provider before normalization).

ParameterTypeDescription
uuidpathEvent UUID
import requests

uuid = "019d0c00-1985-7131-84eb-24bc34a750ad"
response = requests.get(
    f"https://events.helioviewer.org/api/v1/events/{uuid}/source"
)
source_data = response.json()

Example response (CCMC FlareScoreboard):

{
  "start_window": "2026-03-20T16:00:00.0Z",
  "end_window": "2026-03-21T04:00:00.0Z",
  "issue_time": "2026-03-20T16:00:00.0Z",
  "C": 0.25,
  "M": 0.04,
  "X": 0,
  "NOAALocationTime": "-1",
  "ModelRegionId": 4,
  "ModelLatitude": -69,
  "ModelLongitude": 25
}

Active Regions

GET /api/v1/regions All regions

Get all active regions across all organizations.

import requests

response = requests.get(
    "https://events.helioviewer.org/api/v1/regions"
)
data = response.json()
regions = data["regions"]

Example response:

{
  "regions": [{
    "id": 1032,
    "organization": "CATANIA",
    "external_id": "1",
    "event_count": 147,
    "first_seen": "2025-09-24 23:38:31",
    "last_updated": "2025-09-24 23:38:31",
    "latest_event_start": "2026-03-19 12:30:00"
  }, ... // 11310 total regions]
}
GET /api/v1/regions/{organization}/{external_id} Events for a region

Get events associated with a specific active region.

ParameterTypeDescription
organizationpathRegion organization (e.g., NOAA, CATANIA, HARP)
external_idpathRegion identifier (e.g., 14188)
import requests

response = requests.get(
    "https://events.helioviewer.org/api/v1/regions/NOAA/14188"
)
data = response.json()
region = data["region"]
events = data["events"]

Example response:

{
  "region": {
    "organization": "NOAA",
    "external_id": "14188",
    "event_count": 100
  },
  "events": [{
    "url": "https://events.helioviewer.org/api/v1/events/019981d6-c0db-...",
    "path": "CCMC>>Solar Flare Predictions>>DAFFS",
    "start": "2025-08-31 23:54:00",
    "end": "2025-09-01 23:54:00",
    "hv_hpc_x": -10.97,
    "hv_hpc_y": 60.73,
    "label": "DAFFS \nC+: 0.3%\nM+: 0.03%\nX: 0.06%",
    "coordinate_system": "stonyhurst",
    ...
  }, ... // 100 events total]
}

Interactive Tools

PathDescription
/statsStatistics dashboard
/active-regionsActive regions search tool

Documentation

For more information, visit the Helioviewer website.