Hyperliquid

Build the typed data for a Hyperliquid withdrawal (step 1 of 2)

Builds the EIP-712 withdraw3 payload for a USDC withdrawal from Hyperliquid to an Arbitrum address. Kairos never signs a withdrawal — your main wallet does, and this endpoint only hands you the bytes. This call is pure. It writes nothing, reserves nothing, and has no side effects. Never calling POST /exchanges/hyperliquid/withdraw afterwards has zero consequence. destination defaults to wallet_address. Omit it and you withdraw to yourself. If you set it, be certain: Kairos validates only the amount, never the destination address, and a signed withdrawal to a wrong address is irreversible. No server-side binding between prepare and submit. The submit endpoint accepts any well-formed {amount, time, destination, signature} — correctness rests entirely on Hyperliquid re-verifying your signature. Prepare is a convenience, not a control. Auth & scope. Requires trade:execute for hyperliquid, wallet ownership, and the mutation gate. Not rate limited.

post/exchanges/hyperliquid/withdraw/prepare

Request

  • Base URL
    https://execution.kairos.trade
  • Auth
    API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret

Request body

wallet_addressstring required

The Hyperliquid main wallet. Must be owned by the authenticated caller.

amountstring required

USDC amount as a plain decimal string. Only ASCII digits and a single . not in first position are accepted, and it must parse to a finite value > 0 — 1e5, .5, -1, inf and NaN are all rejected. Kairos enforces NO minimum and NO maximum; Hyperliquid's own withdrawal minimum and flat fee are applied venue-side.

destinationstring nullable

Arbitrum destination address. Defaults to wallet_address (withdraw to self) when omitted. Kairos does NOT validate this address — see the endpoint description.

Response

Typed data to sign, plus the time nonce to echo back.

typed_dataobject required

The EIP-712 typed data for Hyperliquid's withdraw3 action. Sign this with the main wallet.

timeinteger required

Millisecond timestamp that is ALSO the action's nonce. Pass it back unchanged to POST /exchanges/hyperliquid/withdraw.

destinationstring required
amountstring required

Changes

No recorded changes to this operation across all 1 revision of this API.