All endpoints are CORS-open and return JSON.
The proxy automatically fails over across four public Zephyr nodes:
Most responses carry
harborwallet.io (SSL, primary) →
node.zeph.network (SSL) →
remote-node.zephyrprotocol.com:17767 (HTTP) →
node.zeph.network (HTTP fallback).
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 an 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 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. Thanks to Harbor, zeph.network, and Zephyr Protocol for
running the public nodes that keep this API alive.
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 +
Architecture: this endpoint is Cloudflare-cached (10 min TTL) but the origin is a Python HTTP server on the community VPS at
Response includes a
block_reward_breakdown for each block
in a range. step controls sampling density; the explorer's chart
UI uses ~360 samples per range
(step 2 for 24h, 15 for 7d, 60 for 30d, 180 for 3m, 360 for 6m, 720 for 1y, 3650 for 5y,
adaptive for ALL). Max 1000 samples per call.
Architecture: this endpoint is Cloudflare-cached (10 min TTL) but the origin is a Python HTTP server on the community VPS at
liquidity.zephflow.live. That server hits the public
Zephyr nodes directly (no Cloudflare Worker subrequest ceiling), which lets it fan out
hundreds of parallel get_block_header_by_height calls to keep
ZephDash-density charts loading in a second or two. Per-block in-memory cache on the VPS
means repeat visitors touch the nodes rarely.
Response includes a
requested and count
field so consumers can detect partial loads. If Harbor and both zeph.network endpoints
go dark simultaneously, this endpoint returns 502 rather than partial garbage.
curl 'https://explorer.zephflow.live/api/pricing_history?from=826680&to=827400&step=60'
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.