API Documentation

Public REST API — Schumann Resonance, Kp index, solar activity. No auth, no rate limit, JSON only.

Overview

  • All endpoints accept GET only
  • Responses: Content-Type: application/json, pretty-printed
  • No authentication, no API key, no rate limit (behind Cloudflare)
  • CORS: Access-Control-Allow-Origin: *
  • Stations: 6 total — tomsk (primary, Russia), etna (Italy), cumiana (Italy), bgs (UK), gci001 (USA), gci004 (Canada)
  • Cache: responses cached by Cloudflare ~1h edge

Discovery: /.well-known/api-catalog (RFC 9727 linkset+json) — lists all endpoints for automated agent discovery.

Endpoints

Current status

GET /api/current

Live Earth Core reading: Schumann status (calm/elevated/active/storm), composite score 0-100 across monitoring stations, latest AI interpretation, Kp index, moon phase, solar wind snapshot.

Query parameters

Name Values Description
lang en, pl, de, es, pt, it, fr, ru Language for summary and forecast text
lat float (-90..90) Optional: user latitude for IDW-weighted regional scoring
lon float (-180..180) Optional: user longitude (required with lat)

Response fields

  • status — string — calm | elevated | active | storm
  • score — int — composite 0-100
  • stations — int — monitoring stations contributing to score
  • regional — bool — true if lat/lon provided
  • summary — string — AI-written status summary in requested lang
  • forecast — string — AI forecast (6-12h horizon)
  • updated_at — ISO 8601 timestamp of latest analysis
  • kp_value — float — NOAA Kp index (0-9)
  • kp_text — string — qualitative Kp state
  • trend — string — up | down | stable
  • moon — object — { illumination: 0..1, phase: string }
  • solar — object — { wind_speed, bz, flares, ... }

Example

curl -s 'https://sungeo.net/api/current?lang=pl'

Daily averages

GET /api/history

Historical daily score averages across all stations, equal-weighted. Used for trend analysis and long-horizon context.

Query parameters

Name Values Description
days 1..90 (default 7) Number of days back from today

Response fields

  • date — YYYY-MM-DD
  • avg_score — int 0-100
  • min_score — int
  • max_score — int
  • count — int — readings aggregated
  • status — derived status level

Example

curl -s 'https://sungeo.net/api/history?days=7'

Hour-of-day heatmap

GET /api/heatmap

Score averaged per (date, hour) cell across stations. For visualising diurnal/storm patterns.

Query parameters

Name Values Description
days 1..30 (default 7) Days back

Response fields

  • date — YYYY-MM-DD
  • hour — int 0-23 UTC
  • avg_score — int
  • status — level

Example

curl -s 'https://sungeo.net/api/heatmap?days=7'

Score vs Kp correlation

GET /api/correlation

Daily (avg_score, avg_kp) pairs for regression/visualisation. Underpins the "space weather drives Earth resonance" story.

Query parameters

Name Values Description
days 1..90 (default 30) Days back

Response fields

  • date — YYYY-MM-DD
  • avg_score — int
  • avg_kp — float or null

Example

curl -s 'https://sungeo.net/api/correlation?days=30'

Top events

GET /api/top-events

Most notable Schumann events (highest scores first), with AI summary and extracted notable_events metadata.

Query parameters

Name Values Description
limit 1..50 (default 20) Max events returned

Response fields

  • id — int — analysis row id
  • status — level
  • score — int
  • date — ISO timestamp
  • summary — string (EN)
  • notable_events — string or null — extracted event descriptor

Example

curl -s 'https://sungeo.net/api/top-events?limit=20'

Pipeline metrics

GET /api/pipeline-stats

Operational visibility into the scraper + AI analysis pipeline: per-node call counts, success/error counts, latency, and status distribution.

Query parameters

Name Values Description
days 1..90 (default 30) Days back

Response fields

  • nodes — object — per-node operational stats (calls, success, errors, avg_ms)
  • status_distribution — array — status frequency over window

Example

curl -s 'https://sungeo.net/api/pipeline-stats?days=30'

Per-station latest

GET /api/station-analyses

Latest AI analysis per non-primary station (ETNA, Cumiana, BGS, GCI001, GCI004). For multi-source comparison.

No parameters.

Response fields

  • source — station key — object map
  • .status — level
  • .score — int
  • .summary — string (EN)
  • .notable_events — string or null
  • .updated_at — ISO timestamp

Example

curl -s 'https://sungeo.net/api/station-analyses'

Agent-oriented content

Blog articles are available as raw Markdown by appending .md to the article URL. This bypasses layout chrome and is easier for LLMs to parse. The .md variant is cached separately at the edge — use it for reliable markdown retrieval.

curl https://sungeo.net/blog/schumann-resonance-meditation.md

Discovery endpoints

  • /.well-known/api-catalog — RFC 9727 linkset+json
  • /llms.txt — site map for LLMs (plain text)
  • /sitemap.xml — standard XML sitemap
  • /robots.txt — includes Content-Signal directive for AI usage preferences
  • Every response carries a Link: header (RFC 8288) pointing at the above