Skip to content

Error catalogue

Practitioner

Every error string Hyperliquid is known to return, from the official list and from measurement on chain, with its cause, the fix and the page that explains it.

Search this page for the exact string you got back. The same errors, grouped by cause with the reasoning, are on error responses.

Shape When
{"status":"err","response":"<string>"} the whole action failed: signature, account state, shape
{"status":"ok","response":{"type":"order","data":{"statuses":[{"error":"<string>"}, ...]}}} an order or cancel batch: one status per item, in request order
a single error for the whole batch a deterministic pre-validation failure (empty batch, non-reduce-only TP/SL, price too far from the reference, some tick checks). Duplicate it n times if your callback expects one per order
HTTP 422 with plain text the body did not deserialise; read the text before parsing JSON
EVM transaction status 1, nothing happened a CoreWriter action was refused; the reason is only in the HyperCore record

Source: docs (the official error list or API pages), measured (seen on chain) or SDK (in SDK code).

Error string Source Cause Fix Page
Price must be divisible by tick size. docs price breaks the 5 significant figure or decimal rule; also seen when a trailing zero made the signed price differ from the sent one round with floor(log10(p)) + 1 digits and strip trailing zeros before signing Precision
Order must have minimum value of $10. docs order notional below the perp minimum size up Orders
Order must have minimum value of 10 {quote_token}. docs spot notional below 10 units of the quote token size up Spot markets
Insufficient margin to place order. docs not enough free collateral at the chosen leverage add margin, lower size or raise leverage Margin
Reduce only order would increase position. docs the reduce-only order would open or add to a position resize, or drop r Order types
Post only order would have immediately matched, bbo was {bbo}. docs ALO price crosses the book reprice behind the touch Order types
Order could not immediately match against any resting orders. docs IOC found nothing to fill at its price widen the limit or use GTC Order types
Invalid TP/SL price. docs trigger price on the wrong side of the market check the trigger against the mid TP/SL, TWAP and scale
No liquidity available for market order. docs the book is empty on the side you hit wait, or rest a limit order Order types
Order would increase open interest while open interest is capped docs the asset is at its open interest cap (covers position increase and flip) only reduce, or wait for the cap to lift Contract specifications
Order rejected due to price more aggressive than oracle while at open interest cap docs at the cap, orders priced through the oracle are refused price at or behind the oracle Contract specifications
Order would increase open interest too quickly docs open interest growth limit retry later, smaller Contract specifications
(Spot-only) Order has insufficient spot balance to trade docs spot balance cannot cover the order fund the spot balance Spot markets
Order price too far from oracle docs price outside the band around the oracle reprice nearer the oracle Oracles
Order would cause position to exceed margin tier limit at current leverage docs the position would outgrow its margin tier at this leverage lower leverage or size Margin
Order was never placed, already canceled, or filled. docs cancel for an oid that is not resting reconcile by cloid; treat as done Orders
Price would cross book measured modify into a price that would take liquidity reprice, or send a new order Orders
Invalid TWAP duration: 1 min(s) docs TWAP shorter than the minimum running time 5 minutes or more TP/SL, TWAP and scale
TWAP was never placed, already canceled, or filled. docs twapCancel for an unknown or finished TWAP treat as done TP/SL, TWAP and scale
Action already expired docs the app did not see the action accepted within 15 s resend deliberately; beware duplicates Nonces, expiry and API wallets

The outcome-market minimum order value is open: it was $10, and a reduction to $1 was anticipated. The docs list only the general $10 perp and 10-quote-token spot minimums.

orderStatus and historical orders report a status instead of the message; rejection statuses map one to one onto the errors above: tickRejected, minTradeNtlRejected, perpMarginRejected, reduceOnlyRejected, badAloPxRejected, iocCancelRejected, badTriggerPxRejected, marketOrderNoLiquidityRejected, positionIncreaseAtOpenInterestCapRejected, positionFlipAtOpenInterestCapRejected, tooAggressiveAtOpenInterestCapRejected, openInterestIncreaseRejected, insufficientSpotBalanceRejected, oracleRejected, perpMaxPositionRejected.

Cancellations the protocol makes on its own:

Status Why the order was cancelled
marginCanceled not enough margin to fill
vaultWithdrawalCanceled a depositor withdrew from the vault
openInterestCapCanceled too aggressive while open interest was at the cap
selfTradeCanceled self-trade prevention
reduceOnlyCanceled a reduce-only order no longer reduces
siblingFilledCanceled the other leg of a TP/SL pair filled
delistedCanceled the asset was delisted
liquidatedCanceled the account was liquidated
scheduledCancel the dead man’s switch fired
Error string Source Cause Fix Page
L1 error: User or API Wallet 0x... does not exist. docs, measured the signature recovered a different address. Almost always serialisation: key order, trailing zeros, a checksummed address, the wrong signing scheme, a map signed as an object. The address changes with the input log the exact bytes hashed and compare with a golden vector Debugging
Must deposit before performing actions. User: 0x... docs, measured either a wrong signature as above, or a genuinely unfunded account. If the payload was a probe, it proves the shape parsed check the recovered address against yours; fund the account Debugging
Unable to recover signer. measured the shape parsed but the signature is invalid, for example a dummy signature in a probe sign properly Debugging
HTTP 422 Failed to deserialize the JSON body into the target type measured wrong wire shape, for example a missing key or an omitted nullable key send nullable keys as explicit null; check the current shape Debugging
Invalid multi-sig outer signer measured leading zeros in inner r or s, or a checksummed address; about 1 in 4 submissions failed before the fix, 24 of 24 passed after minimal hex for r and s; lowercase addresses Multi-sig actions
Invalid multi-sig inner signer measured on testnet a user-signed inner action (such as cWithdraw) signed as an L1 action sign the inner action as typed data with payloadMultiSigUser and outerSigner Multi-sig actions
Multi-sig required measured on testnet the original key of a converted account acted alone send through multiSig Multi-sig accounts
Multi-sig threshold not met measured on testnet fewer signatures than the threshold collect the quorum before submitting Multi-sig accounts
Error string Source Cause Fix Page
Action disabled when unified account is active measured usdClassTransfer, spotSend or usdSend on a unified or portfolio margin account use sendAsset Account modes
Abstraction transition not allowed measured on testnet switching back after enabling unified account (observed in testing) plan the mode before funding Account modes
Cannot disable unified account with open positions, open orders, or active TWAP orders measured changing mode with open exposure flatten first Account modes
Portfolio margin requires account value of $10000 or total volume of $5000000 measured below the eligibility bar. One measurement suggests supplied balances do not count toward account value (unconfirmed) add equity or volume Portfolio margin
Invalid token measured HyperCore to HyperEVM sendAsset with destinationDex: "" use "spot" Transfers
Insufficient USDC or HYPE balance for token transfer gas measured on testnet the crossing fee (200k gas at the next base fee) cannot be paid from the HyperCore balance, for example when sending 100% leave a reserve on HyperCore Moving assets
Invalid number of decimals: <amount> measured HyperCore to HyperEVM amount not a multiple of 10^abs(evmExtraWeiDecimals); for USDC, wei % 100 must be 0. 5 of 5 cases floor before sending Moving assets
Error string Source Cause Fix Page
Manual borrow/lend not allowed with portfolio margin measured borrowLend or CoreWriter action 15 from a portfolio margin account; enforced for CoreWriter too use Standard or Unified mode Borrowing and lending
Borrow/Lend error: Insufficient spot balance for operation measured the operation needs more spot balance than the account holds size to the spot balance Borrowing and lending
Error string Source Cause Fix Page
Insufficient stake measured on testnet activateOutcomeDeployer without the requirement in the account’s own staking balance (delegated plus undelegated) stake more to the deployer account itself Becoming an outcome deployer
Deployer cannot have staking link measured on testnet the deployer account is linked to a staking account holding the stake; someone else’s stake cannot be the bond stake from the deployer account Becoming an outcome deployer
Insufficient balance to withdraw from CStaking measured on testnet cWithdraw would take stake below the escrowed requirement withdraw only the headroom Deployer economics and risk
Deployer fee scale cannot be negative or greater than 10. docs HIP-4 deployerFeeScale outside 0 to 10 use a decimal string in range Deployer economics and risk
Invalid perp deployer measured another dex’s deployer acting on an allowlisted dex act from that dex’s deployer Operating a perp dex
Error deploying perp: Collateral asset not supported measured on testnet registerAsset2 with a collateral token testnet did not accept for new dexes (5 tokens tried) choose an accepted collateral token Deploying a perp dex
Invalid perp DEX measured on testnet seen on testnet for collateralToken: 0; cause unresolved after a sweep of every other field none known Deploying a perp dex

Two deployer rejections have no known string: a uDecimal keyword value with a trailing zero ("95.000", not "95") signs cleanly but is refused on submission, and the old spotDeploy.outcome shape is refused on testnet. A rejected HIP-4 deploy still uses one of the day’s deploys.

Error or symptom Source Cause Fix Page
EVM status 1, no effect on HyperCore measured every CoreWriter refusal is silent confirm from a precompile in a later block, or the explorer’s userDetails error field CoreWriter
Action 17 silently dropped docs, measured a non-zero unused field zero question for split and merge, outcome for merge question CoreWriter action reference
CoreWriter action rejected for a new contract docs the sender was not a HyperCore account before the EVM block was built activate in an earlier block Execution order
InvalidTransaction(PrecompileOutOfGas(50000000)) measured invalid precompile input, or any explicit block number on an archive node; all forwarded gas is consumed cap gas per call; read at latest only Precompiles
PrecompileError measured a live precompile refused the input check the index type and value Precompiles
empty 0x with success measured the address is not an assigned precompile (0x815 and up) use 0x800 to 0x814 Precompile reference
0x811 reverts measured no borrow or lend record exists yet for that account and token guard the call; treat as zero Precompile reference
Error or symptom Source Cause Fix Page
too many pending post requests id=N SDK more than 100 posts in flight across your connections queue posts client side WebSocket
an error channel frame SDK a dead subscription resubscribe WebSocket
HTTP 429 measured IP weight exhausted (1,200 per minute). No Retry-After header is sent back off with jitter; move reads to WebSocket Rate limits
one request per 10 s accepted docs address-based limit hit trade more, or buy weight with reserveRequestWeight Rate limits
timeouts, 5xx measured outcome unknown; for deploys there is no receipt id record intent first; reconcile before retrying Error responses

To probe a shape safely, see Debugging signatures and wire shapes; for what each action expects, the Exchange action reference.