All endpoints are CORS-open and return JSON.
The proxy automatically fails over across three Zephyr nodes
(
Most responses now carry
node.zeph.network SSL → official HTTP → zeph.network HTTP).
HTTPS calls use standard fetch(); HTTP calls go through the
Cloudflare Sockets API (since Workers' fetch can't
reach plain HTTP on non-standard ports). When the SSL node fails, the proxy enters a 60-second
backoff so subsequent requests skip SSL and go straight to sockets — no wasted timeouts.
Most responses now carry
secure and transport
fields telling you which node served the data. Hot endpoints are edge-cached on Cloudflare
for 4–600 seconds depending on volatility. No auth, no API key, no rate limit
beyond Cloudflare's defaults.
block_reward_breakdown (cross-cutting)
Several endpoints (
/api/last_block, /api/block,
/api/block_full, and per-block in /api/pricing_history)
attach a block_reward_breakdown object that splits the chain's
consensus 65/30/5 emission rule into its component parts. The block header's reward
field only contains the miner share (the only output in vout); the
reserve and yield slices are protocol-level. The breakdown surfaces all three plus the ZSD-denominated
yield amount (yield_zeph × spot_price), so consumers don't need to derive it themselves.
{
"total_atomic": 6757309232029, // miner / 0.65 — total ZEPH emission
"miner_atomic": 4392251000819, // 65% — only output in vout
"reserve_atomic": 2027192769609, // 30% — protocol-level
"yield_zeph_atomic": 337865461601, // 5% in ZEPH equivalent
"yield_zsd_atomic": 114384872338, // 5% × spot — actual ZSD payout to ZYS pool
"split": { "miner": 0.65, "reserve": 0.30, "yield": 0.05 }
}
REST endpoints
GET
/api/info
Chain stats: height, hashrate, difficulty, mempool size, network type, version. Wraps Zephyr's
get_info JSON-RPC.curl https://explorer.zephflow.live/api/info
GET
/api/height
Just the chain tip count. Light, cached for 4 s.
curl https://explorer.zephflow.live/api/height
GET
/api/last_block
Header of the most recent block: hash, timestamp, reward, miner_tx_hash, difficulty,
plus the chain's decoded
pricing_record. Now also includes
block_reward_breakdown with the full 65/30/5 split (see
cross-cutting note above).
curl https://explorer.zephflow.live/api/last_block
GET
/api/block/:id
Block header by height (numeric) or 64-char hex hash. Long-cached (1d) since blocks are immutable.
curl https://explorer.zephflow.live/api/block/766349
GET
/api/block_full/:id
Full block payload — header + tx_hashes + miner_tx_hash + raw block JSON (incl. embedded pricing record).
curl https://explorer.zephflow.live/api/block_full/766349
GET
/api/headers?from=X&to=Y
Range of block headers (max 50 per call). Used by the homepage's "Latest blocks" table.
curl 'https://explorer.zephflow.live/api/headers?from=766300&to=766349'
POST
/api/tx
Look up one or more transactions by hash. Body:
{"hashes": ["...", ...]} (max 25).curl -X POST https://explorer.zephflow.live/api/tx \
-H 'Content-Type: application/json' \
-d '{"hashes":["abc123...64hex..."]}'
GET
/api/circulating
Per-currency circulating supply tally (ZPH / ZSD / ZRS / ZYS / DJED / YIELD). Wraps Zephyr's
get_circulating_supply.curl https://explorer.zephflow.live/api/circulating
GET
/api/reserve
Full reserve state: assets, equity, liabilities, num_stables, num_reserves, reserve_ratio, plus the embedded pricing record (
.pr).curl https://explorer.zephflow.live/api/reserve
GET
/api/pricing
Just the live oracle pricing record: spot, moving_average, stable, reserve, yield_price, signature, timestamp.
curl https://explorer.zephflow.live/api/pricing
GET
/api/pricing_history?from=X&to=Y&step=N
Decoded pricing record +
block_reward_breakdown for each block
in a range. Optional step samples sparsely
(15 for 24h, 100 for 7d, 430 for 30d, 1300 for 3m, 2600 for 6m, 5260 for 1y). Max 110
samples per call. Newest blocks fetched first so the chart's right edge stays populated
under partial failure. Per-header cache (24h TTL on confirmed blocks) keeps repeat
loads near-instant. Response includes a requested field so
consumers can detect partial loads, and the response carries
Cache-Control: no-store when fewer than 70% of samples loaded
(so a transient broken response doesn't get cached for 10 minutes).
curl 'https://explorer.zephflow.live/api/pricing_history?from=765630&to=766350&step=15'
GET
/api/fee
Network fee estimate (per-byte) from
get_fee_estimate.curl https://explorer.zephflow.live/api/fee
GET
/api/health
Per-node liveness probe. Each entry reports
node, url,
secure (SSL?), transport
(fetch or sockets), ok,
and current height. When ≥2 nodes report heights, the proxy adds
divergent: true + a divergence delta
to any node whose tip differs by more than 5 blocks from the leader — a tampering canary.
curl https://explorer.zephflow.live/api/health
POST
/api/rpc
Generic JSON-RPC passthrough. Body:
{"method": "...", "params": {}}. Use this to call any daemon method we haven't surfaced explicitly.curl -X POST https://explorer.zephflow.live/api/rpc \
-H 'Content-Type: application/json' \
-d '{"method":"get_block_count"}'
Embed widgets
Stablecoin health gauge
The full speedometer-style collateralization gauge with animated needle, 4-zone color arc, and 5-state status pill
(very healthy / healthy / paused / depegged). Same component used on the explorer homepage. Auto-refreshes every 30 s.
Compact collateralization ratio
Just the percentage with a colored status pill — no gauge. For small spaces / sidebars. Auto-refreshes every 30 s.
Oracle spot & prices
Live oracle: spot ZEPH price, 24h moving average, ZRS index, ZYS index — stacked. Auto-refreshes every 30 s.
Circulating supply table
ZEPH · ZSD · ZRS · ZYS circulating amounts in a tidy four-row card. Auto-refreshes every 60 s.
ZSD APY + mini calc
The live ZSD APY (matching zephyrprotocol.com/yield's published value) with a tiny inline
calculator: type a ZSD amount and see projected returns at 1 month, 3 months, and 1 year.
Auto-refreshes every 60 s. Hosted on the calc subdomain.
Reuse freely. No attribution required, but a link
back to explorer.zephflow.live is appreciated and
included in the default widget footers.
Found a bug or have a request? Ping us in the Zephyr community channels.