API
Everything here is public, read-only JSON with open CORS. Writes (sign-in, plates) are for this site only.
| GET /api/oracle/latest | The 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=N | Ticks after a minute, oldest first (max 500). |
| GET /api/oracle/verify/:minute | Re-downloads the frames of that minute, re-hashes them and recomputes the tick hash. Returns what matched. |
| GET /api/flares?days=7 | Flares from NOAA’s GOES list, plus the oracle’s provisional rows. |
| GET /api/burns | Every flare ≥ M1 and what the burn rule decided: planned, executed (with signatures), or skipped and why. |
| GET /api/vault | The Sunburn vault balance, once the vault exists. |
| GET /api/plates?before=N&limit=N | The ledger, newest first. |
| GET /api/plates/:n | One 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|7d | GOES 0.1–0.8 nm X-ray flux, slimmed, cached 60 s. |
| GET /api/frame/plate/:n | The exact frame a plate was cut from (same-origin copy, re-hashed: see the x-sha256 and x-verified headers). |
| GET /plate/:n.png | The plate’s NFT image, cut by the server from that frame. Deterministic: see “Recompute a plate image”. |
| GET /plate/:n/metadata.json | Metaplex-standard NFT metadata with the lineage attributes (oracle tick hash, plate hash, previous plate hash). |
| GET /api/plates/:n/mint | Mint status of a plate. |
| GET /api/config | Launch state: coin mint, whether minting and burns are open, the mint price. |
| GET /api/coin | The $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
- curl -s https://getflare.fun/api/oracle/latest
- curl -s <frame_url> | shasum -a 256 → must equal sha256 (same for sdo_url → sdo_sha256)
- 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 - prev_hash must equal the tick_hash of the tick before it. The first tick chains on sha256("FLARE-ORACLE-GENESIS").
- 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
- Download the plate’s frame (frame.url in /api/plates/:n) and check its sha256 against frame.sha256.
- Plate scale: NASA SDO browse 2.4″/px at 1024 px; NOAA SUVI 2.5″/px at 1280 px. side = round(field / scale) px.
- 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.
- 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”).