Deposits & Withdrawals
Funding configuration
The single source of truth for deposit destinations and withdrawal thresholds.
Read the deposit address from /config at runtime — never hardcode it. It is elided from the sample above for that reason.
Track deposits
Takes your account_id; a plain wallet address is rejected here. Accepts limit, offset, from, and to.
Returns data: { account, deposits: [] }, newest first. Poll it to follow a transfer you just sent through to credit.
Request a withdrawal
Withdrawals are signed by your main wallet, never the trading key:
Two fields need care when signing:
destination— your own wallet on the default HyperCore rail, or the EVM recipient on the Arbitrum rail.amount— USDC base units, 6 decimals. 25 USDC signs as25000000, while the request body carries the same value as the decimal string"25".
Request body
This is the one endpoint that takes the signature split into { r, s, v } rather than a single hex string.
Of the five signed members, three are not in the body: user is the wallet your account_id derives from, destination is described below, and hyperflowEnvironment is "Mainnet" on this base URL.
On the default HyperCore rail, send no destination field at all — sign your own wallet address as destination and the server verifies against it.
On the Arbitrum (EVM) rail, add two more fields:
The EVM rail is offered only to email / embedded-wallet accounts. A normal EOA withdraws to its own HyperCore wallet.
The response
A valid request returns status: "REQUESTED" together with a withdrawal_id.
A request that fails validation returns status: "REJECTED" — still a 200 — with one of these reasons:
Follow the lifecycle
The single form is a top-level route, not under /account. The list form returns data: { account, withdrawals: [] } — no total. One withdrawal looks like this:
The l1_ prefix means Hyperliquid’s L1 — the chain the transfer actually settles on.
The happy path is REQUESTED → ACCEPTED → PROCESSING → COMPLETED. Four states are terminal:
Between ACCEPTED and COMPLETED every withdrawal passes the platform’s multi-signature review, which adds a short delay before funds leave custody.
The first-ever credit to a destination wallet with no HyperCore history incurs Hyperliquid’s one-time $1 USDC activation fee.