Skip to main content
Withdrawals from Lighter are submitted via the SDK’s withdrawal flow with provider: 'lighter' (see SDK / Actions and the high-level withdraw() helper). The withdrawal blob is signed by the registered API key (WASM blob, not the L1 wallet).

withdrawal

SignersAPI_KEY (WASM blob)
ParamsWithdrawalParams{ destination, amount }
SDK methodswithdraw()
Unlike Hyperliquid — where withdrawals require an explicit L1 wallet signature — Lighter withdrawals are signed by the registered API key, the same signer used for trading actions. No per-withdrawal wallet popup is triggered.

Destination constraint

Lighter withdrawals must go to the account owner address
The backend rejects withdrawal requests where destination differs from the L1 account owner. Withdrawals always settle to the user’s own L1 Ethereum address.
SignerAPI_KEY (WASM blob signed by the registered Lighter API key)
DestinationL1 Ethereum mainnet (the account owner address only)
Quote assetUSDC

Standard vs fast withdrawal

Lighter supports two settlement paths. The SDK and the request shape are the same in both cases — callers always submit WithdrawalParams. The backend transparently selects the path:
PathSettlementWhen used
Standard (WITHDRAWAL)Multi-hour ZK-rollup exitFallback when the fast path is unavailable, or for amounts above the operator’s per-tx ceiling
Fast (internally rewritten to TRANSFER)Minutes (operator-relayed)When the relayer reports it is currently available and the requested amount fits within the operator’s per-tx and remaining-pool USDC ceilings
The action step’s action field reflects which path was selected (WITHDRAWAL or TRANSFER) — both dispatch through the same WASM signer. Public callers do not need to handle the distinction.
The fast path is a relayer-side optimisation; if the probe reports it is unavailable (insufficient operator balance, throttling, or build-time error) the backend falls back to the standard path with a logged warning. The public flow never regresses — a withdrawal request always succeeds on at least the standard path.

Internal note: TRANSFER

TRANSFER is an internal-only Lighter action type used by the fastwithdraw flow. It is not surfaced by GET /providers and is not callable directly via the public action API — exposing it would let callers transfer arbitrary balances between Lighter accounts, which is out of scope for this provider. Always request WITHDRAWAL; the backend rewrites internally as needed.