Markets and pricing endpoints
All public.
GET /chains
Networks, their state and capabilities.
{
"environment": "testnet",
"activeLiquidityHub": "stellar-testnet",
"chains": [
{ "key": "stellar-testnet", "family": "stellar", "state": "ACTIVE",
"capabilities": { "newPools": true, "newHedges": true, "lpDeposits": true, "settlement": true, "claims": true, "lpWithdrawals": true, "funding": true, "withdrawals": true },
"assets": [{ "symbol": "USDC", "decimals": 7 }] },
{ "key": "base-sepolia", "family": "evm", "state": "ACCESS_ONLY",
"capabilities": { "newPools": false, "newHedges": false, "funding": true, "withdrawals": true },
"assets": [{ "symbol": "USDC", "decimals": 6 }] }
]
}
state | Meaning |
|---|---|
ACTIVE | The liquidity hub: pools, protection and settlement |
ACCESS_ONLY | Funding and withdrawal only |
DRAINING | Settling existing positions after a move; no new business |
DISABLED | Not used |
GET /options
Query: pair (required), direction (optional).
Tenors and structures on sale across accepting pools, with the largest capacity among them.
{ "pair": "USD/NGN", "tenors": [ { "tenorDays": 30, "open": true, "capped": true, "maxPayoutAvailable": "1079.4633936" } ] }
GET /spot
Query: pair. Today's rate: { "pair": "USD/NGN", "spot": "1332.819531" }.
GET /fair
Query: pair, direction, tenors (comma separated, 1 to 365, up to 16), distance (bps from spot for the reference strike, 0 to 5000, default 200).
Fair rate per tenor at a reference strike and a limit 10% beyond it, for comparing tenors and setting markups. How the fair rate is found: Pricing methodology.
{ "pair": "USD/NGN", "direction": "up", "spot": "1332.819531",
"reference": { "strike": "1359.475922", "cap": "1495.423514" },
"rows": [ { "tenorDays": 7, "fairRateE6": 5067 }, { "tenorDays": 30, "fairRateE6": 23851 } ] }
fairRateE6 is null for a tenor the engine refused to price.
GET /rates
Watchlist rates with change since the last daily close.
GET /chart
Query: pair, range = 1H, 6H, 24H, 1M, 3M, 6M, YTD, 1Y, 5Y, MAX. Up to about 300 points { t, v }. Ranges up to 24 hours use intraday snapshots (intraday: true); longer ranges use daily closes.
GET /history
Query: pair, days (5 to 400, default 30). Daily closes, oldest first: { pair, closes: [{ date, close }] }.