API

Everything here is public, read-only JSON with open CORS. Writes (sign-in, plates) are for this site only.

GET /api/oracle/latestThe newest oracle tick: minute, GOES flux and class, primary frame (URL, time, SHA-256), the NASA SDO frame, prev_hash, tick_hash.
GET /api/oracle/ticks?since=ISO&limit=NTicks after a minute, oldest first (max 500).
GET /api/oracle/verify/:minuteRe-downloads the frames of that minute, re-hashes them and recomputes the tick hash. Returns what matched.
GET /api/flares?days=7Flares from NOAA’s GOES list, plus the oracle’s provisional rows.
GET /api/burnsEvery flare ≥ M1 and what the burn rule decided: planned, executed (with signatures), or skipped and why.
GET /api/vaultThe Sunburn vault balance, once the vault exists.
GET /api/plates?before=N&limit=NThe ledger, newest first.
GET /api/plates/:nOne plate: line, frame, spot (lat/lon, x/y) and the aim it came from (null when the hash picked it), rarity, spot hash, seal.
GET /api/goes?range=6h|1d|7dGOES 0.1–0.8 nm X-ray flux, slimmed, cached 60 s.
GET /api/frame/plate/:nThe exact frame a plate was cut from (same-origin copy, re-hashed: see the x-sha256 and x-verified headers).
GET /plate/:n.pngThe plate’s NFT image, cut by the server from that frame. Deterministic: see “Recompute a plate image”.
GET /plate/:n/metadata.jsonMetaplex-standard NFT metadata with the lineage attributes (oracle tick hash, plate hash, previous plate hash).
GET /api/plates/:n/mintMint status of a plate.
GET /api/configLaunch state: coin mint, whether minting and burns are open, the mint price.
GET /api/coinThe $FLARE banner: status none, pending (CA set, not on chain yet), live or unknown (RPC down); market cap, bonding-curve progress, links. Cached 15 s.

Verify a tick yourself

  1. curl -s https://getflare.fun/api/oracle/latest
  2. curl -s <frame_url> | shasum -a 256 → must equal sha256 (same for sdo_url → sdo_sha256)
  3. Build the canonical string and hash it:
    FLARE-ORACLE-v1|minute|prev_hash|goes_time|flux (toExponential(4))|class|source|frame_url|frame_time|sha256|sdo_url|sdo_time|sdo_sha256
    (missing values are empty strings) → sha256 must equal tick_hash
  4. prev_hash must equal the tick_hash of the tick before it. The first tick chains on sha256("FLARE-ORACLE-GENESIS").
  5. The flux comes from https://services.swpc.noaa.gov/json/goes/primary/xrays-6-hour.json (0.1-0.8nm, the row at goes_time).

Recompute a plate image

  1. Download the plate’s frame (frame.url in /api/plates/:n) and check its sha256 against frame.sha256.
  2. Plate scale: NASA SDO browse 2.4″/px at 1024 px; NOAA SUVI 2.5″/px at 1280 px. side = round(field / scale) px.
  3. Pad the frame with black by side px on every edge. Centre: cx = w/2 + x·959.63/scale, cy = w/2 − y·959.63/scale. Crop x1 = round(cx − side/2) + side, y1 = round(cy − side/2) + side, to x1 + side, y1 + side.
  4. Resize to 1024 × 1024 with Lanczos3, tone each pixel through the published gold ramp (public/core.js: lum171, GOLD_LUT), encode PNG with photon-rs 0.4 (@cf-wasm/photon). The sha256 must match image_sha / the “Image SHA-256” attribute.

Every hour the Merkle root of that hour’s tick hashes is written to Solana in a memo transaction (once the oracle key is live; until then batches are marked “unposted”).