Limit orders are the default, foundational order type on Grvt's Central Limit Order Book (CLOB). This guide walks through placing one via the Grvt web/app interface and via the Grvt Trading API for programmatic traders.
Option 1: Placing a Limit Order on the Web/App
Step 1: Select your instrument Go to the trading page and pick the perpetual, future, or option contract you want to trade (e.g. SPYUSDT _Perp).
Step 2: Choose "Limit" as your order type In the order entry panel, select Limit from the order type dropdown (as opposed to Market, or advanced types like Scale).+Step 3: Set your price and size
Limit Price: the price at or better than which you want to trade.
Size: how much you want to buy or sell, in the base asset or notional, depending on your interface settings.
Step 4: Configure order behavior (optional but important)
Time in Force: choose GTT (rests on the book), IOC (fills immediately or cancels), or FOK (fills completely and immediately, or cancels entirely).
Post-Only: toggle this on if you want to guarantee your order only adds liquidity (maker). If your price would match immediately, the order is rejected rather than filled as a taker.
Reduce-Only: toggle this on if the order should only be allowed to reduce an existing position, never open a new or opposite one.
Step 5: Review and confirm If you have order confirmations enabled in your trading settings, a confirmation window will summarize price, size, and order flags before you submit. Click Buy or Sell to place the order.
Step 6: Monitor and manage
Resting limit orders appear under Open Orders.
You can cancel an unfilled or partially filled order at any time from this panel.
Filled and cancelled orders move to Order History.‘
Because Grvt settles trades on-chain via a ZKsync validium while matching happens off-chain, placing and cancelling limit orders is gas-free and near-instant. You don't pay network fees for normal order activity.
Option 2: Placing a Limit Order via the Grvt API
For programmatic traders, Grvt's Trading API exposes a create_order endpoint. A limit order is simply an order where is_market is false and a limit_price is supplied.
Example request:
curl --location 'https://trades.grvt.io/full/v1/create_order' \
--header "Cookie: $GRVT_COOKIE" \
--header "X-Grvt-Account-Id: $GRVT_ACCOUNT_ID" \
--data '{
"order": {
"sub_account_id": "'$GRVT_SUB_ACCOUNT_ID'",
"is_market": false,
"time_in_force": "GOOD_TILL_TIME",
"post_only": false,
"reduce_only": false,
"legs": [{
"instrument": "BTC_USDT_Perp",
"size": "10.5",
"limit_price": "65038.01",
"is_buying_asset": true
}],
"signature": {
"signer": "0x...",
"r": "0x...",
"s": "0x...",
"v": 28,
"expiration": "1697788800000000000",
"nonce": 1234567890
}
}
}'
Key fields to get right:
Field | Purpose |
is_market | Must be false for a limit order |
limit_price | Required for limit orders — the exchange rejects a limit order submitted without one |
time_in_force | GOOD_TILL_TIME (GTT), IMMEDIATE_OR_CANCEL (IOC), or FILL_OR_KILL (FOK) — the exchange (as opposed to RFQ venues) supports these three |
post_only | Set true to force maker-only execution |
reduce_only | Set true to restrict the order to closing/reducing an existing position |
signature | Because Grvt is self-custodial, every order must be signed with your account's key before submission — this is what lets Grvt settle trustlessly on-chain |
Because all orders are signed and trustlessly enforced on Grvt's Hyperchain, the API requires the same signature payload structure as the underlying smart-contract order object. This is different from most centralized exchanges, so make sure your integration handles signing correctly (Grvt's SDKs and the Grvt connector in CCXT handle this for you if you don't want to implement signing yourself).
Common rejection reasons to watch for:
Code | Meaning |
2020 | Market order was submitted with a limit price |
2021 | Limit order was submitted without a limit price |
2062 | Order size is smaller than the minimum size |
2064 | Limit price doesn't align to the instrument's tick size |
2066 | Order value is below the minimum notional |
Tips
If you want your order to always earn maker fees (or a rebate), use Post-Only.
If you're closing part of a position and don't want to risk accidentally flipping it, use Reduce-Only.
Check time_in_force support per venue. Grvt's main exchange order book only supports GTT, IOC, and FOK; AON is reserved for RFQ flows.
For high order-throughput strategies, be aware of Grvt's tiered rate limits on order creation, cancellation, and status queries.





