Skip to main content

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 }] }
]
}
stateMeaning
ACTIVEThe liquidity hub: pools, protection and settlement
ACCESS_ONLYFunding and withdrawal only
DRAININGSettling existing positions after a move; no new business
DISABLEDNot 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 }] }.