Zeph Logo
MenuClose

Public HTTPS endpoints for live and historical Zephyr protocol data. Read-only, unauthenticated, rate-limited. Base URL: https://zephyrprotocol.com

Endpoints

Asset codes

CodeDescription
ZEPHZephyr (base PoW asset)
ZSDZephyr Stable Dollar (USD-pegged stablecoin)
ZRSZephyr Reserve Share
ZYSZephyr Yield Share (yield-bearing ZSD wrapper)

Legacy internal codes (ZEPHUSD → ZSD, ZEPHRSV → ZRS, ZYIELD → ZYS) are accepted as input aliases on query params for backward compatibility, but the public API always returns canonical codes.

Endpoint reference

GET/api/v1/livestatscache: 30s

Current protocol state: prices, circulating supplies, reserve ratio, live APY.

Example

curl -sS "https://zephyrprotocol.com/api/v1/livestats" | jq

Response shape

{
  "zeph_price": 0.4004,
  "zsd_price": 1,
  "zrs_price": 0.5084,
  "zys_price": 1.8969,
  "zsd_rate": 2.4976,
  "zrs_rate": 1.2698,
  "zeph_circ": 11449154.09,
  "zsd_circ": 384749.08,
  "zrs_circ": 2104807.83,
  "zys_circ": 165636.71,
  "zeph_in_reserve": 3633699.91,
  "zeph_in_reserve_value": 1454893.04,
  "zeph_in_reserve_percent": 0.3173,
  "zsd_in_yield_reserve": 314200.00,
  "zsd_in_yield_reserve_percent": 0.8168,
  "zsd_accrued_in_yield_reserve_from_yield_reward": 198070.12,
  "reserve_ratio": 3.781408,
  "reserve_ratio_ma": 3.731212,
  "zys_current_variable_apy": 9.77,
  "zeph_circ_daily_change": 4906.81,
  "zsd_circ_daily_change": 96.11,
  "zrs_circ_daily_change": 162.31,
  "zys_circ_daily_change": 0
}
GET/api/v1/statscache: 30s

Historical protocol time-series at block / hour / day granularity.

Primary endpoint for all historical protocol data — prices, supplies, reserves, DJED mechanics, and conversion activity across every granularity. Block scale can produce very large payloads; prefer daily for historical analysis, hourly for recent detail, and block only for narrow windows. See the /stats reference section below for the full field catalogue, size/latency guidance, and UNIX timestamp helpers.

Query parameters

scale*
'block' | 'hour' | 'day'
from
Lower bound. Block height (block scale) or UNIX seconds (hour/day).
to
Upper bound. Block height (block scale) or UNIX seconds (hour/day).
fields
Comma-separated subset of fields to return. Accepts canonical or legacy names. See the full field catalogue in the /stats reference section below.

Example

curl -sS "https://zephyrprotocol.com/api/v1/stats?scale=day&from=1774443849&fields=zsd_circ_close,reserve_ratio_close,zeph_in_reserve_close,zeph_price_close" | jq

Response shape

// scale=block → [{ block_height, data: ProtocolStats }]
// scale=hour|day → [{ timestamp, data: AggregatedData }]

[
  {
    "timestamp": 1776841200,
    "data": {
      "zsd_circ_close": 384748.03,
      "reserve_ratio_close": 3.787,
      "zeph_in_reserve_close": 3633697.52,
      "zeph_price_close": 0.40098
    }
  }
]
Full /stats reference: fields, size & timestamps
GET/api/v1/pricingrecordscache: 30s

Per-block pricing records (ZEPH price, ZSD/ZRS rates, ZYS price).

Query parameters

from
Starting block height.
to
Ending block height.
limit
Max rows, or 'all'. Default all matching.
order
'asc' | 'desc'. Default asc.

Example

curl -sS "https://zephyrprotocol.com/api/v1/pricingrecords?from=759700&to=759710" | jq

Response shape

{
  "total": 11,
  "limit": null,
  "order": "asc",
  "results": [
    {
      "block_height": 759700,
      "timestamp": 1776892420,
      "zeph_price": 0.38345812,
      "zeph_price_ma": 0.39459499,
      "zrs_rate": 1.24962341,
      "zrs_rate_ma": 1.2626356,
      "zsd_rate": 2.60784671,
      "zsd_rate_ma": 2.53473939,
      "zys_price": 1.89684808
    }
  ]
}
GET/api/v1/txscache: 30s

Conversion transactions (mint/redeem ZRS/ZSD/ZYS).

Query parameters

from / to
UNIX seconds timestamp range.
types
Comma-separated conversion types: mint_zrs, redeem_zrs, mint_zsd, redeem_zsd, mint_zys, redeem_zys. Legacy names (mint_reserve, mint_stable, mint_yield) also accepted.
limit
Rows per page, or 'all' for unpaginated.
offset
Pagination offset.
page / pageSize
Page-based pagination alternative.
order
'asc' | 'desc'. Default desc.

Example

curl -sS "https://zephyrprotocol.com/api/v1/txs?limit=5&order=desc&types=mint_zsd,redeem_zsd" | jq

Response shape

{
  "total": 6004,
  "limit": 5,
  "offset": 0,
  "order": "desc",
  "next_offset": 5,
  "prev_offset": null,
  "results": [
    {
      "hash": "fa781ea6...",
      "block_height": 759650,
      "block_timestamp": 1776887802,
      "conversion_type": "mint_zsd",
      "conversion_rate": 1.26422405,
      "from_asset": "ZEPH",
      "from_amount": 0.5468,
      "from_amount_atoms": "546800000000",
      "to_asset": "ZSD",
      "to_amount": 0.428193087072,
      "to_amount_atoms": "428193087072",
      "conversion_fee_asset": "ZSD",
      "conversion_fee_amount": 0.00432518,
      "tx_fee_asset": "ZEPH",
      "tx_fee_amount": 0.0012,
      "tx_fee_atoms": "1200000000"
    }
  ]
}
GET/api/v1/blockrewardscache: 30s

Per-block reward splits: miner / governance / reserve / yield.

Query parameters

from
Starting block height.
to
Ending block height.
limit
Max rows, or 'all'.
order
'asc' | 'desc'.

Example

curl -sS "https://zephyrprotocol.com/api/v1/blockrewards?from=759700&to=759705" | jq

Response shape

{
  "total": 6,
  "limit": null,
  "order": "asc",
  "results": [
    {
      "height": 759700,
      "miner_reward": 4.428422583339,
      "governance_reward": 0,
      "reserve_reward": 2.043887346155,
      "yield_reward": 0.340647891025,
      "miner_reward_atoms": "4428422583339",
      "governance_reward_atoms": "0",
      "reserve_reward_atoms": "2043887346155",
      "yield_reward_atoms": "340647891025",
      "base_reward_atoms": "6812957820519",
      "fee_adjustment_atoms": "0"
    }
  ]
}
GET/api/v1/reservesnapshotscache: 30s

Daemon reserve snapshots captured at periodic block heights (raw on-chain state).

Query parameters

height
Exact previous_height filter.
from / to
previous_height range.
limit
Max rows.
order
'asc' | 'desc'.

Example

curl -sS "https://zephyrprotocol.com/api/v1/reservesnapshots?limit=1&order=desc" | jq

Response shape

{
  "total": 439,
  "limit": 1,
  "order": "desc",
  "results": [
    {
      "captured_at": "2026-02-20T13:20:14.687Z",
      "reserve_height": 715671,
      "previous_height": 715670,
      "hf_version": 11,
      "on_chain": {
        "zeph_reserve_atoms": "3182975168345075098",
        "zeph_reserve": 3182975.17,
        "zsd_circ_atoms": "463194386389393308",
        "zsd_circ": 463194.39,
        "zrs_circ_atoms": "1697421751995011876",
        "zrs_circ": 1697421.75,
        "zys_circ_atoms": "211151867349016378",
        "zys_circ": 211151.87,
        "zsd_yield_reserve_atoms": "392556853563445393",
        "zsd_yield_reserve": 392556.85,
        "reserve_ratio_atoms": "4.024603",
        "reserve_ratio": 4.024603,
        "reserve_ratio_ma_atoms": "4.031144",
        "reserve_ratio_ma": 4.031144
      },
      "pricing_record": { /* ... */ }
    }
  ]
}
GET/api/v1/apyhistorycache: 30s

Daily effective APY on ZYS, from yield start (Oct 2024) to present.

Example

curl -sS "https://zephyrprotocol.com/api/v1/apyhistory" | jq

Response shape

[
  {
    "timestamp": 1728864000,
    "block_height": 360000,
    "return": 80.6219,
    "zys_price": 1.814675933782327
  }
]
GET/api/v1/zyspricehistorycache: 30s

Per-block ZYS price history (price in atomic units, 12 decimals).

Example

curl -sS "https://zephyrprotocol.com/api/v1/zyspricehistory" | jq

Response shape

[
  {
    "timestamp": 1728819553,
    "block_height": 360000,
    "zys_price": 1000000000000
  }
]
GET/api/v1/historicalreturnscache: 30s

Rolling ZYS returns over canonical timeframes.

Example

curl -sS "https://zephyrprotocol.com/api/v1/historicalreturns" | jq

Response shape

{
  "lastBlock":   { "return": 0.0000427,  "zsd_accrued":   0.13,   "effectiveApy": 11.70 },
  "oneDay":      { "return": 0.0306,     "zsd_accrued":  96.12,   "effectiveApy": 11.64 },
  "oneWeek":     { "return": 0.2116,     "zsd_accrued": 659.89,   "effectiveApy": 11.48 },
  "oneMonth":    { "return": 0.9480,     "zsd_accrued": 3002.40,  "effectiveApy": 11.99 },
  "threeMonths": { "return": 3.3929,     "zsd_accrued": 11466.39, "effectiveApy": 14.28 },
  "oneYear":     { "return": 34.1197,    "zsd_accrued": 74524.05, "effectiveApy": 34.12 },
  "allTime":     { "return": 89.6883,    "zsd_accrued": 198070.12, "effectiveApy": 51.43 }
}
GET/api/v1/projectedreturnscache: 30s

Forward-looking ZYS return projections (low / simple / high scenarios).

Example

curl -sS "https://zephyrprotocol.com/api/v1/projectedreturns" | jq

Response shape

{
  "oneWeek":     { "low": { "zys_price": 1.8972, "return": 0.01 },
                   "simple": { "zys_price": 1.8975, "return": 0.03 },
                   "high": { "zys_price": 1.8989, "return": 0.11 } },
  "oneMonth":    { /* ... */ },
  "threeMonths": { /* ... */ },
  "sixMonths":   { /* ... */ },
  "oneYear":     { /* ... */ }
}

/stats reference

This is the primary endpoint for all historical protocol data — prices, supplies, reserves, DJED mechanics, and conversion activity at block, hour, or day granularity.

UNIX timestamp helpers

The from / to params take UNIX seconds on hour/day scale. Copy a value and paste into your URL.

Loading timestamp helpers…

Response size & latency guidance

Block-scale responses grow linearly with range and dominate payload size. For historical analysis use daily; for recent detail use hourly; use block only for narrow windows.

Measuring against this environment…

Always filter with fields= when you only need specific columns — it roughly halves payload size for a 4-field subset.

Available fields

36 fields

Fields marked OHLC take _open | _close | _high | _low suffixes on scale=hour|day, e.g. zsd_circ_close. On scale=block they appear as a single value (no suffix).

Identifiers

block_heightBlock height (block scale only).
block_timestampUNIX timestamp of the block (block scale only).
timestampUNIX timestamp of the bucket start (aggregated scale only; outer envelope, not inside 'data').
window_start / window_endTimestamps of the aggregation bucket (aggregated scale only).

Prices

OHLC on hour/day scale; singular on block scale.

zeph_priceOHLCZEPH price in USD (spot).
zeph_price_maOHLCZEPH price moving average in USD.
zsd_rateOHLCZSD price in ZEPH.
zsd_rate_maOHLCZSD-in-ZEPH MA.
zrs_rateOHLCZRS price in ZEPH.
zrs_rate_maOHLCZRS-in-ZEPH MA.
zys_priceOHLCZYS price in ZSD.

Supplies

OHLC on hour/day; singular on block.

zeph_circOHLCZEPH circulating supply.
zsd_circOHLCZSD circulating supply.
zrs_circOHLCZRS circulating supply.
zys_circOHLCZYS circulating supply.

Reserves

OHLC on hour/day; singular on block.

zeph_in_reserveOHLCZEPH locked in the DJED reserve.
zeph_in_reserve_atomsZEPH in reserve as atomic-units string (block scale only).
zsd_in_yield_reserveOHLCZSD held in the yield reserve.

DJED mechanics

OHLC on hour/day; singular on block.

assetsOHLCAssets (USD value of reserve).
assets_maOHLCAssets MA.
liabilitiesOHLCLiabilities (ZSD outstanding in USD).
equityOHLCEquity = assets - liabilities.
equity_maOHLCEquity MA.
reserve_ratioOHLCassets / liabilities.
reserve_ratio_maOHLCReserve ratio MA.

Yield accounting (block scale only)

zsd_accrued_in_yield_reserve_from_yield_rewardLifetime ZSD added to the yield reserve from ZYS yield rewards.
zsd_minted_for_yieldLifetime ZSD minted directly for yield distribution.

Conversion activity (per-interval totals, same on every scale)

conversion_transactions_countTotal conversion txs in the interval.
yield_conversion_transactions_countYield-related conversion txs in the interval.
mint_zrs_count / mint_zrs_volumeZRS mint txs / ZEPH volume burned.
redeem_zrs_count / redeem_zrs_volumeZRS redeem txs / ZRS volume burned.
mint_zsd_count / mint_zsd_volumeZSD mint txs / ZEPH volume burned.
redeem_zsd_count / redeem_zsd_volumeZSD redeem txs / ZSD volume burned.
mint_zys_count / mint_zys_volumeZYS mint txs / ZSD volume burned.
redeem_zys_count / redeem_zys_volumeZYS redeem txs / ZYS volume burned.
fees_zeph / fees_zsd / fees_zrs / fees_zys / fees_zsd_yieldConversion fees paid in each asset, this interval.

Versioning & stability

All public endpoints live under /api/v1/. Breaking changes will ship under a new version prefix (e.g. /api/v2/) with overlap. Field additions are non-breaking and may appear without notice.

Rate limits apply per IP. Please cache responses client-side where practical — the server-side cache TTL listed per endpoint reflects the minimum useful polling interval.

Blog & News

The thinking, ideas, and technology

Join the Zephyr Protocol now

Zeph Logo
Design & DevSimtech SolutionsArrow Up
© 2024 Zephyr Protocol, All Rights Reserved