Venues
GET /venues/derive/currencies#
No parameters. Proxies Derive's public/get_all_currencies, filters it, and reports both counts so the size of the filter is visible rather than implied.
{
"currencies": [
{ "currency": "VVV", "instrumentTypes": ["perp", "option"] },
{ "currency": "SOL", "instrumentTypes": ["perp", "option", "erc20"] },
{ "currency": "XRP", "instrumentTypes": ["perp", "option"] },
{ "currency": "ADA", "instrumentTypes": ["perp", "option"] },
{ "currency": "ETH", "instrumentTypes": ["perp", "option", "erc20"] },
{ "currency": "SNX", "instrumentTypes": ["option", "erc20"] },
{ "currency": "CC", "instrumentTypes": ["perp", "option"] },
{ "currency": "XAUT", "instrumentTypes": ["perp", "option", "erc20"] },
{ "currency": "PUMP", "instrumentTypes": ["perp", "option"] },
{ "currency": "LIT", "instrumentTypes": ["perp", "option"] },
{ "currency": "HYPE", "instrumentTypes": ["perp", "option", "erc20"] },
{ "currency": "ZEC", "instrumentTypes": ["perp", "option"] },
{ "currency": "AAVE", "instrumentTypes": ["perp", "option", "erc20"] },
{ "currency": "BTC", "instrumentTypes": ["perp", "option", "erc20"] }
],
"source": "derive:public/get_all_currencies",
"filter": "instrument_types contains \"option\"",
"currencyCount": 14,
"upstreamCurrencyCount": 68,
"asOf": "2026-09-23T01:33:35.734Z"
}| Field | Means |
|---|---|
currencies | the filtered list, in upstream order |
instrumentTypes | Derive's own instrument_types for that currency, passed through unmodified. Values observed: perp, option, erc20. |
filter | the predicate applied, stated in the response |
currencyCount | how many survived the filter, currently 14 |
upstreamCurrencyCount | how many Derive returned, currently 68 |
asOf | when the proxy fetched it. There is no long-lived cache. |
The filter, and why nothing is hardcoded#
A launch wizard offering an options venue needs the list of underlyings that actually have options, and Derive's raw currency list is much broader than that: it includes currencies that only have perpetuals or only exist as ERC-20 collateral. Showing all 68 would offer choices that cannot be traded as options.
Reporting upstreamCurrencyCount alongside currencyCount also makes an upstream outage obvious: a response with 68 upstream and 14 filtered is healthy, and one with 0 upstream is Derive failing, not everything being delisted.
Which Derive this is#
There is no Hyperliquid equivalent#
Hyperliquid's info endpoint is readable from a browser directly, so nothing needs proxying for it, and there is no asset-list route here. The indexer does poll Hyperliquid for equity readings, which surface on /coins/:mint/positions and /status rather than as a venue catalogue.
One Hyperliquid constraint worth knowing when sizing a deployment, quoted from its own API documentation: orders carry a $10 minimum order value. It is notional, so leverage counts toward it, and it is per order rather than per position. Derive's equivalents are per-instrument and are covered on risk in options.