Documentation Index
Fetch the complete documentation index at: https://goldrush.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
Hyperliquid Info API
Available Types (today)
| Type | Body | Returns |
|---|---|---|
metaAndAssetCtxs | {type:"metaAndAssetCtxs",dex:""} | Tuple [meta, assetCtxs[]] |
clearinghouseState | {type:"clearinghouseState",user:"0x...",dex:""} | Perp account state |
spotClearinghouseState | {type:"spotClearinghouseState",user:"0x...",dex:""} | Spot balances |
frontendOpenOrders | {type:"frontendOpenOrders",user:"0x...",dex:""} | Open orders w/ TP/SL metadata |
batchClearinghouseState | {type:"batchClearinghouseState",users:["0x...",...],dex:""} | Array of clearinghouseState slots, 1-50 wallets. GoldRush-native (no upstream equivalent) |
batchSpotClearinghouseState | {type:"batchSpotClearinghouseState",users:["0x...",...]} | Array of spotClearinghouseState slots, 1-50 wallets. GoldRush-native (no upstream equivalent) |
{"error":"unsupported_type","type":"<the type you sent>"} with HTTP 400. Requests are not forwarded to upstream Hyperliquid.
Migration Pattern
The GoldRush Hyperliquid Info API is a drop-in replacement for
POST https://api.hyperliquid.xyz/info. The request body, the response shape, and the JSON keys are byte-for-byte identical to the public Hyperliquid API. The only differences are the URL and the authentication header.
Endpoint
What’s different from the public Hyperliquid API
Public api.hyperliquid.xyz/info | GoldRush hypercore.goldrushdata.com/info | |
|---|---|---|
| Auth | None | Authorization: Bearer |
| Rate limit | 1200 weight/min/IP | None |
| Orderbook latency target | ~280 ms p50 | Sub-150 ms p50 |
| Wire compatibility | n/a (it’s the source) | Byte-for-byte |
| Types not in public API | n/a | Batched user state, builder fills, liquidation feed, composites - see Roadmap |
| Unsupported types | n/a | Return {"error":"unsupported_type","type":""} instead of being forwarded |
Available types
The Info API ships today with six types: four wire-compatible drop-ins covering the core “show me the market and my account” UX, plus two GoldRush-native batch endpoints with no upstream Hyperliquid equivalent.| Type | Body | Returns |
|---|---|---|
metaAndAssetCtxs | {"type": "metaAndAssetCtxs", "dex": ""} | Tuple [meta, assetCtxs[]] - perp universe + per-asset live mark price, funding, OI, day volume. |
clearinghouseState | {"type": "clearinghouseState", "user": "0x…", "dex": ""} | Perp account: positions, margin summary, account value, withdrawable. |
spotClearinghouseState | {"type": "spotClearinghouseState", "user": "0x…", "dex": ""} | Spot balances per token, total USD value. |
frontendOpenOrders | {"type": "frontendOpenOrders", "user": "0x…", "dex": ""} | Open orders + trigger metadata (TP/SL, isPositionTpsl, reduceOnly, orderType). |
batchClearinghouseState | {"type": "batchClearinghouseState", "users": ["0x…", …], "dex": ""} | Array of clearinghouseState slots. GoldRush-native, 1 to 50 wallets per call. |
batchSpotClearinghouseState | {"type": "batchSpotClearinghouseState", "users": ["0x…", …]} | Array of spotClearinghouseState slots. GoldRush-native, 1 to 50 wallets per call. |
type that isn’t in the table above, the response body is {"error":"unsupported_type","type":""}. Requests are not forwarded to upstream Hyperliquid. Type expansion is tracked on the Roadmap.
See the Roadmap for what’s shipping next.
How clients see it
Existing Hyperliquid SDKs work unchanged after abaseUrl override. See SDK compatibility for nomeida/hyperliquid (JS) and hyperliquid-dex/hyperliquid-python-sdk setup snippets.
Errors
| Status | Body | Cause |
|---|---|---|
400 | {"error":"invalid request"} | Malformed body. |
400 | {"error":"unsupported_type","type":""} | The type field isn’t one of the natively-supported types. |
401 | {"error":"unauthorized"} | Missing or invalid Authorization header. |
5xx | Server error | Internal server error. |
Networks
Mainnet only. Testnet support is deferred.Next
Migration guide
Side-by-side examples - change one URL and one header.SDK compatibility
Drop-in setup fornomeida/hyperliquid and hyperliquid-python-sdk.
Limits and caching
No rate limits - what to know about caching and recommended polling cadences.API reference
Per-endpoint request and response schemas.Moving from the public Hyperliquid
/info API to GoldRush is two changes:
- URL - replace
api.hyperliquid.xyz/infowithhypercore.goldrushdata.com/info. - Header - add
Authorization: Bearer.
Side-by-side
cURL
Public Hyperliquid
GoldRush
JavaScript / TypeScript
Public Hyperliquid
GoldRush
Python
Public Hyperliquid
GoldRush
Behavioral notes
Things to be aware of when you cut over.Response is byte-equal, modulo live drift
For implemented types, the response body matches Hyperliquid byte-for-byte - same keys, same nesting, same value types. Numeric fields update independently on each side, so a market-price field will diverge by tens of milliseconds, but the schema is identical.Unsupported types return a JSON error
Types that GoldRush doesn’t natively serve return{"error":"unsupported_type","type":""} with HTTP 400. They are not forwarded to upstream Hyperliquid. See the Info API overview for the current list of supported types and the Roadmap for what’s shipping next.
Auth errors return JSON
A missing or invalid key returns401 with body {"error":"unauthorized"}. Public Hyperliquid has no auth and never returns 401.
Existing SDKs work after a baseUrl override
The two most-used SDKs work unchanged:
nomeida/hyperliquid(JavaScript)hyperliquid-dex/hyperliquid-python-sdk(Python)
Authentication
The Info API uses your standard GoldRush API key. The same key works against the Foundational API, the Streaming API, and the Pipeline API. If you don’t have one yet, sign up here. Never hardcode keys in source. Use environment variables or a secrets manager.What you gain
- No rate limits. No 1200 weight/min cap, no per-address throttling, no IP buckets.
- Faster reads. Sub-150 ms p50 target for warm responses; orderbook reads driven from a live WebSocket-fed cache.
- More types. Batched user state, builder-attribution data, liquidation feed, and composites are on the Roadmap.
- HIP-3 and HIP-4 first-class. Deployer-prefix syntax (
xyz:GOLD-USDC) is supported acrossmetaandmetaAndAssetCtxswhen adexis provided. - One key for everything Hyperliquid. The same API key unlocks Streaming, Pipeline, and HyperEVM via the Foundational API.
The most popular Hyperliquid SDKs work against GoldRush after a one-line
baseUrl override and adding an Authorization header.
JavaScript / TypeScript: nomeida/hyperliquid
Install
npm
yarn
Configure
Note: If your SDK version doesn’t expose aheadersoption, wrapfetchto inject the header globally before instantiating the SDK. See the patch pattern below.
Header injection fallback
Python: hyperliquid-dex/hyperliquid-python-sdk
Install
Configure
Tip: skip_ws=True is recommended when using the Info API only - it skips the WebSocket connection that the SDK opens by default to upstream Hyperliquid. For real-time event streams, use the GoldRush Streaming API instead.
Verification
After cutover, confirm everything is wired correctly:- Diff a known wallet - call
clearinghouseStatefor the same wallet against both endpoints; the JSON shape (keys, nesting, types) should match exactly. - Confirm auth - remove the API key and confirm you get a
401with body{"error":"unauthorized"}. If you get any other response, your request isn’t reaching GoldRush.
Other SDKs
The pattern is the same for any HTTP client: override the base URL tohttps://hypercore.goldrushdata.com and attach Authorization: Bearer . If you run into a specific SDK that doesn’t expose either knob, email us - we’ll publish a recipe.
No rate limits
The GoldRush Hyperliquid Info API has no per-IP, per-key, or per-address rate limits. The 1200 weight/min cap on the public Hyperliquid/info API does not apply.
You can:
- Poll any user-state endpoint as fast as your code wants.
- Open as many concurrent connections as your client supports.
- Pull state for thousands of wallets in tight loops.
walletTxs subscription instead - push-based, also no rate limits.
How caching works
Responses are served from a real-time cache that’s kept fresh by direct ingestion from Hyperliquid. The cache is transparent to your client code - same JSON in, same JSON out.| Cache layer | Typical freshness |
|---|---|
User-state types (clearinghouseState, spotClearinghouseState, frontendOpenOrders) | Sub-second after each user event. |
Market types (metaAndAssetCtxs) | Sub-second on every mark-price tick. |
Recommended polling cadences
You’re not rate-limited, but polling smartly saves your own bandwidth.| Endpoint | Recommended interval | Notes |
|---|---|---|
metaAndAssetCtxs | 1 second | Mark prices update on every tick - for sub-second freshness, use the Streaming API. |
clearinghouseState | 1 second per user, OR push via walletTxs | Account state only changes on a user event; push is far more efficient than polling. |
spotClearinghouseState | 5 seconds | Spot balances change less frequently than perp positions. |
frontendOpenOrders | 1 second per user, OR push via walletTxs | Same as clearinghouseState. |
Watch out for client-side limits
GoldRush has no rate limits, but the rest of your stack might:- Browser fetch concurrency - most browsers cap at ~6 concurrent requests per host. Use connection pooling on the server side or batch requests.
- HTTP/2 stream limits - most clients allow 100+ concurrent streams per connection by default. Bump if you’re saturating.
- OS file descriptor limits - if you’re opening thousands of connections, raise
ulimit -n.
batchClearinghouseState and batchSpotClearinghouseState endpoints, which accept up to 50 wallets per call. For more than 50 wallets, issue multiple calls.
Network and TLS
- HTTP/2 keep-alive is supported and recommended.
- TLS 1.2+ required.
Accept-Encoding: gzipis honored.zstdsupport is on the roadmap.