Hyperliquid Developer Tool

Hyperliquid Market Lookup

Paste a display name, app URL, or canonical coin and get back the symbol Hyperliquid APIs and Dwellir endpoints expect - plus metadata, live context, and copy-paste request snippets. All from one search box.

How this tool works

The exact Dwellir calls behind every lookup

Each step below is a live Dwellir endpoint the tool would (or just did) call to build the result above. With nothing selected we run the walkthrough against BTC; pick a market and the same steps re-run against that canonical coin.

Reference

Display name vs canonical coin

Hyperliquid distinguishes between the app display name shown in the trading UI and the canonical coin used by every Info, orderbook, candle, funding, and trading endpoint. The trade route at app.hyperliquid.xyz/trade/<coin> often surfaces the display name, while the canonical coin is what protocol-level APIs accept.

Annotations expose both halves of the mapping. For HIP-3 perpetuals on the xyz dex, display names like WTIOIL or BRENTOIL resolve to canonical coins like xyz:CL and xyz:BRENT.

{"type":"perpAnnotation","coin":"xyz:CL"}

# → {"displayName":"WTIOIL","keywords":["crude","CL"]}
HIP-3 perps, native perps, and spot markets

HIP-3 perpetuals live on deployer-operated dexes. List dexes through perpDexs, then load each dex's universe with {"type":"meta","dex":"xyz"} or pull every universe at once with allPerpMetas. Native perpetuals (BTC, ETH, SOL, …) live on the implicit native dex and share the same metadata shape without a dex prefix.

Spot pairs are addressed by an @<index> identifier or a slash-form pair label like PURR/USDC, and described by spotMeta, which carries the base/quote token table. Spot markets do not carry leverage or funding metadata.

Calling Dwellir Hyperliquid Info

Send the same JSON payloads as the public Hyperliquid Info API to your Dwellir Info endpoint. This tool calls Dwellir for metadata, annotations, perpDexs, allPerpMetas, spotMeta, and live context. The Dwellir API key stays server-side and is never exposed to the browser.

curl -sS -X POST \
  "https://api-hyperliquid-mainnet-info.n.dwellir.com/<API_KEY>/info" \
  -H "Content-Type: application/json" \
  -d '{"type":"perpConciseAnnotations"}'
Info call: perpAnnotation

perpAnnotation returns the rich display metadata for one canonical coin: display name, category, keywords, and a human-readable description. Use it any time you need to render a market UI from a coin identifier you already have.

curl -sS -X POST \
  "https://api-hyperliquid-mainnet-info.n.dwellir.com/<API_KEY>/info" \
  -H "Content-Type: application/json" \
  -d '{"type":"perpAnnotation","coin":"xyz:CL"}'

# → {"category":"commodities","description":"WTIOIL (CL) tracks ...",
#    "displayName":"WTIOIL","keywords":["crude","CL"]}
Info call: perpConciseAnnotations

perpConciseAnnotations returns the entire annotation table as an array of [coin, {category?, displayName?, keywords?}] tuples. This is what powers the display-name search in this tool: load it once, build an in-memory map from displayName back to canonical coin.

curl -sS -X POST \
  "https://api-hyperliquid-mainnet-info.n.dwellir.com/<API_KEY>/info" \
  -H "Content-Type: application/json" \
  -d '{"type":"perpConciseAnnotations"}'

# → [
#     ["xyz:CL", {"category":"commodities","displayName":"WTIOIL","keywords":[...]}],
#     ["xyz:BRENTOIL", {"category":"commodities","displayName":"BRENTOIL", ...}],
#     ...
#   ]
WebSocket: l2Book streaming

Dwellir runs its own Hyperliquid orderbook server. Once you have the canonical coin, subscribe to l2Bookon Dwellir's orderbook WebSocket and Dwellir streams fresh snapshots as the book updates - the first frame is a subscriptionResponse, every subsequent frame is an l2Book payload. The same subscription works for native perps, HIP-3 perps, spot markets, and HIP-4 outcomes.

nLevels controls depth (1-100, default 20). nSigFigs sets price aggregation (2-5 sig figs, default 5). strict: true sends a frame only when something inside the subscribed levels actually changed.

wss://api-hyperliquid-mainnet-orderbook.n.dwellir.com/<API_KEY>/ws

{"method":"subscribe","subscription":{
  "type":"l2Book","coin":"xyz:CL","nLevels":100,"nSigFigs":5,"strict":true
}}

# First frame: { "channel":"subscriptionResponse", ... }
# Then each update: { "channel":"l2Book",
#   "data":{ "coin":"xyz:CL", "time":..., "levels":[[bids],[asks]] } }
# Each level: { "px": "97.26", "sz": "10.2", "n": 2 }
WebSocket: l4Book streaming

l4Bookis Dwellir's most detailed market-data stream. Instead of aggregated price levels it gives you individual orders: user address, order id, timestamp, limit price, size, order type, time-in-force. The first frame is a full Snapshot wrapper, subsequent frames are Updates with order-status deltas and book diffs. Full snapshots can be tens of MB - bump your WebSocket max payload size.

wss://api-hyperliquid-mainnet-orderbook.n.dwellir.com/<API_KEY>/ws

{"method":"subscribe","subscription":{"type":"l4Book","coin":"xyz:CL"}}

# Snapshot frame: { "channel":"l4Book",
#   "data":{ "Snapshot":{ "coin":"xyz:CL", "height":..., "levels":[[bids],[asks]] } } }
# Each order: { "user":"0x...", "side":"B"|"A", "limitPx":"97.26", "sz":"0.33",
#   "oid": 289682065711, "timestamp": 1767878782721, "orderType":"Limit", "tif":"Alo" }
WebSocket: live candles from the Hyperliquid Index

Dwellir's Hyperliquid Index runs its own WebSocket that streams live OHLCV candles. Subscribe to one market + interval (1s, 1m, 5m) and Dwellir pushes both unfinalized updates (the candle still forming) and the final closed candle in one stream. Successive frames with the same cursor are successive states of the same candle - watch x flip to true on finalization.

wss://api-hyperliquid-index.n.dwellir.com/<API_KEY>/ws

{"type":"subscribe","market":"xyz:CL","interval":"1m"}

# Ack:   { "type":"subscribed", ... }
# Frame: { "type":"candle", "s":"xyz:CL", "i":"1m",
#   "t":1775601060000, "T":1775601119999,
#   "o":"71564", "h":"71578", "l":"71563", "c":"71577",
#   "v":"0.21291", "n": 57, "x": false }

FAQ

Why does xyz:WTIOIL not work as a canonical coin?

On the HIP-3 dex named xyz, WTIOIL is the app-facing display name, while CL is the canonical symbol used by the Info, orderbook, and trading APIs. The canonical coin is xyz:CL - Hyperliquid stores display names separately and only resolves them through perpAnnotation and perpConciseAnnotations.

What is the canonical coin for WTIOIL?

xyz:CL. Use this value with the Dwellir orderbook WebSocket, perpAnnotation Info calls, candle snapshots, funding history, and any other coin-keyed Hyperliquid endpoint.

How do spot @index markets differ from HIP-3 perps?

Spot markets are addressed by an @<index> identifier (for example @150) or a pair label like PURR/USDC, and described by spotMeta. HIP-3 perpetuals are addressed by <dex>:<symbol> (for example xyz:CL). Spot markets do not have leverage or funding; HIP-3 perpetuals do.

Which Hyperliquid endpoint exposes display names?

perpAnnotation returns one annotation per coin, and perpConciseAnnotations returns the full list with display names, keywords, and descriptions. Both are exposed through Dwellir Info.

Can I search Hyperliquid Info by display name?

No. Hyperliquid Info has no server-side display-name search, which is why this tool builds an in-memory index from perpConciseAnnotations, allPerpMetas, perpCategories, perpDexs, and spotMeta. The index is refreshed every few minutes.

Can I use this with Dwellir orderbook WebSocket?

Yes. Copy the canonical coin into a subscribe payload like {"method":"subscribe","subscription":{"type":"l2Book","coin":"xyz:CL"}} against wss://api-hyperliquid-mainnet-orderbook.n.dwellir.com/<API_KEY>/ws.

Get your API key

and join other leading Web3 companies using Dwellir's infrastructure