agent.lighter.orders.create takes the Hyperliquid perp order shapes: a limit order { asset, side, size, price, timeInForce?, reduceOnly? } or a reduce-only { type: "takeProfit" | "stopLoss", asset, side, size, triggerPrice }. asset is a Lighter perpetual symbol from data.markets({ venue: "lighter" }), such as ETH. "gtc" and "alo" orders rest at most 28 days, Lighter’s maximum order expiry. Results carry Lighter’s orderId, limitPrice, filled, state, type and triggerPrice; Circuit keeps observing a resting order and attributes later fills to the placing operation and session.
Preparation rounds sizes down to the market’s size decimals and tightens prices to its price decimals. Orders below the market’s minimum size or 10 USDC notional fail preparation. lighter.orders.listOpen() returns the session’s resting orders and lighter.orders.cancel({ orderId }) cancels one the session placed, completing with the order’s state if it already closed. Stopping a session cancels its resting orders before unwind runs, and unwind accepts only reduce-only orders.
A Lighter account belongs to the wallet’s Ethereum address. The first deposit must be Ethereum USDC through the lighter swap provider, which creates the account; later deposits and withdrawals route through Relay. Orders then need Circuit’s Lighter API key, which the owner registers once through a reviewed accountSetup with venue: "lighter"; agents receive ACCOUNT_SETUP_REQUIRED until then. Lighter USDC is asset 3 on network lighter, and perp holdings use kind: "perp" with the same fields as Hyperliquid.