Hyperliquid API endpoints: which one to use
Use POST https://api.hyperliquid.xyz/info for reads, POST https://api.hyperliquid.xyz/exchange for signed orders and wss://api.hyperliquid.xyz/ws for live streams. Data older than what /info keeps, such as past the most recent 5000 candles per interval, comes from the S3 archive or an indexed API.
Free key14 days of history at 60 requests a minute. Without a key, the API reaches 24 hours back.
By requesting a key you agree to the Terms and API terms; see the Privacy Policy. We may email you when your key keeps hitting its limits; you can opt out at any time.
The answer#
- Reading data:
/infofor one-off reads,/wswhen you need updates as they happen. - Trading:
/exchange, with every request signed. - HyperEVM:
rpc.hyperliquid.xyz/evm. - History: not these endpoints. See below.
Endpoints by job#
| Job | Endpoint | Limit or note |
|---|---|---|
| Read market and account state | POST https://api.hyperliquid.xyz/info | 1200 weight a minute per IP |
| Place and cancel orders | POST https://api.hyperliquid.xyz/exchange | Same IP budget, plus a limit per address |
| Live streams | wss://api.hyperliquid.xyz/ws | 10 connections, 1000 subscriptions per IP |
| HyperEVM JSON-RPC | https://rpc.hyperliquid.xyz/evm | 100 requests a minute, chain ID 999 |
| Testnet REST | https://api.hyperliquid-testnet.xyz | Same paths: /info and /exchange |
| Testnet WebSocket | wss://api.hyperliquid-testnet.xyz/ws | Same message format |
| Testnet HyperEVM | https://rpc.hyperliquid-testnet.xyz/evm | Chain ID 998 |
| Bulk history | s3://hl-mainnet-node-data, s3://hyperliquid-archive | Requester pays |
| Your own node | http://localhost:3001/info | No public limit on the requests it serves |
Base URLs are from Hyperliquid's API docs, the numbers from its rate limit page.
The exact calls#
A read on /info#
curl -s https://api.hyperliquid.xyz/info \
-H 'Content-Type: application/json' \
-d '{"type":"userRateLimit","user":"0xYOUR_ADDRESS"}'The answer has nRequestsUsed and nRequestsCap for the address. An address with no volume shows the buffer of 10000.
A read on HyperEVM#
curl -s https://rpc.hyperliquid.xyz/evm -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# {"jsonrpc":"2.0","id":1,"result":"0x3e7"} (999)A live stream#
Subscribe by sending JSON after you connect. Our WebSocket guide has every subscription type and a Python client.
{ "method": "subscribe", "subscription": { "type": "trades", "coin": "BTC" } }When you need history#
/info stops at the most recent 5000 candles per interval and the 10000 most recent fills per address. Older data is in two requester-pays S3 buckets described in Hyperliquid's historical data docs. The historical data guidecovers both, and Ironflow's API, SQL and free files.
Ironflow's endpoints#
These are ours, separate from Hyperliquid's, and free to start.
- Data API:
https://api.ironflow.sh/v1. REST, no key needed for 24 hours of history. - RPC URL:
https://api.ironflow.sh/rpc/<key>/info. Same body and answer as/infofor the supported types, on your plan's limits. - MCP:
https://mcp.ironflow.sh/mcp. 54 tools for AI agents, no key needed. - Live streams: Server-Sent Events at
/v1/trades/streamand/v1/liquidations/stream.
curl 'https://api.ironflow.sh/v1/candles?market=BTC-PERP&interval=1h&from=-24h'Questions#
What is the Hyperliquid API base URL?#
https://api.hyperliquid.xyz on mainnet and https://api.hyperliquid-testnet.xyz on testnet. Reads go to POST /info and orders to POST /exchange.
What is the difference between /info and /exchange?#
POST /info reads data and needs no signature. POST /exchange places and cancels orders and every request must be signed.
What is the Hyperliquid WebSocket URL?#
wss://api.hyperliquid.xyz/ws on mainnet and wss://api.hyperliquid-testnet.xyz/ws on testnet.
What is the Hyperliquid RPC URL?#
For the HyperEVM, https://rpc.hyperliquid.xyz/evm on mainnet with chain ID 999, and https://rpc.hyperliquid-testnet.xyz/evm on testnet with chain ID 998. The mainnet RPC is limited to 100 requests per minute.
Which Hyperliquid endpoint has historical data?#
None has it all. POST /info returns recent history with caps, such as the most recent 5000 candles per interval and the 10000 most recent fills per address. Older data is in the S3 archive or an indexed API.
Can I run these endpoints myself?#
Partly. A non-validator node serves some /info requests on localhost:3001, such as clearinghouseState, openOrders and meta. It does not serve l2Book, allMids or userFills, and it does not take orders.
Related guides#
- Hyperliquid API and WebSocket rate limits
- Hyperliquid WebSocket API
- Hyperliquid historical data: API, S3 archive, SQL and free downloads
- How to run a Hyperliquid non-validator node
References#
- Hyperliquid docs: API. Mainnet and testnet base URLs.
- Hyperliquid docs: Info endpoint. Request types and limits.
- Hyperliquid docs: Exchange endpoint. Signed orders and cancels.
- Hyperliquid docs: WebSocket. Subscriptions and post requests.
- Hyperliquid docs: HyperEVM. JSON-RPC URLs and chain IDs.
- Hyperliquid docs: Rate limits and user limits. Every limit in the table.
Short on rate limit? An Ironflow RPC URL reads /infoon your plan's limits.
Free key14 days of history at 60 requests a minute. Without a key, the API reaches 24 hours back.
By requesting a key you agree to the Terms and API terms; see the Privacy Policy. We may email you when your key keeps hitting its limits; you can opt out at any time.