forceMinimalAllowance: true on your POST /quote request to bound spending authorization to the amount Flash requires. The flag supports EVM and Solana, including streaming quotes. Omit it or set it to false to keep the default behavior.
Add the flag to your existing quote request:
Which amounts change
On EVM, pair the flag with
evmUsePermit2: true. See Pair with Permit2 on EVM. On Solana, the same amount applies to standalone delegation, sponsored delegation, and combined setup transactions.
How Flash sizes authorization
Flash includes unfilled open orders in the same source-token scope plus your new quote. For example, a new 25-USDC order with 40 USDC outstanding requires 65 USDC of authorization, or65000000 raw units for a six-decimal token.
Use the approval transaction, permit payload, or delegation instruction returned by the quote unchanged. Do not replace its amount with the new order’s quantity: doing so can leave existing orders without enough authorization.
Bound Permit2 duration
WithforceMinimalAllowance: true and evmUsePermit2: true, a new Permit2 permit also has a bounded expiration when every order it covers has an end time. Flash takes the latest deadline across the new quote and unfilled open orders for the same funder and source token, then adds 24 hours to the requested permit expiration.
Set an explicit expireTime for every order type that supports it. Apply this to all orders for the wallet and source token, not just the newest quote. A limit or other open order without an end time makes the shared duration unlimited (maxUint48, or 281474976710655).
For example, add these fields to an EVM limit quote:
evm.permitTypedData returned by the quote. A permit that already covers the required duration may be reused when its amount also matches; enabling the flag does not necessarily shorten an existing permit’s expiration.
This expiration policy applies to Permit2 permits. ERC-20 approvals and Solana SPL delegations do not gain time-based expiration from this flag. Quotes without forceMinimalAllowance retain the default unlimited Permit2 duration.
Existing authorization is reused only on an exact match
Flash reuses an existing authorization only when it exactly equals the cumulative amount: this quote plus unfilled open orders in the same source-token scope. Anything else, including an unlimited or oversized grant, is replaced with a fresh authorization sized to that amount on the next order. This is how the flag revokes an unlimited or oversized grant.
EVM reuse also applies to a Permit2 permit signed for an earlier order and held for settlement: the held permit is reused only when it exactly equals the cumulative amount and its expiration covers the latest required order deadline. On Solana, the token account must have the expected Flash delegate and exactly the cumulative delegated amount.
The ERC-20 approval to the Permit2 contract itself stays unlimited and is never replaced. Requests without
forceMinimalAllowance are unaffected.
After a fill consumes part of a bounded authorization, the remaining amount no longer equals the cumulative amount, so a later quote requests another approval, permit, or delegation. Always handle the returned authorization fields, even if the wallet previously traded the token.
Pair with Permit2 on EVM
SetevmUsePermit2: true alongside forceMinimalAllowance: true on EVM.
On the direct-approval path, bounding the allowance means evm.approveTx can change a non-zero allowance to a different non-zero value. Some ERC-20 tokens, notably USDT on Ethereum mainnet, revert on a non-zero-to-non-zero approve, so that transaction fails. Under Permit2, the one-time ERC-20 approval to the Permit2 contract goes from zero to unlimited, which every token accepts. Every subsequent bound is an offchain PermitSingle signature, which has no such restriction and costs no gas.
A wallet that already holds an unlimited direct approval to FlashAllowance keeps using it until that approval is revoked by setting it to 0. The direct path takes precedence whenever it covers the order, so evmUsePermit2 does not move such a wallet to Permit2 on its own.
Sign and submit
Follow the existing EVM or Solana setup and signing flow. Submit the returned signing payloads unchanged. You do not need to passforceMinimalAllowance to POST /order.
The required amount is a snapshot of open orders when Flash prepares the quote. It excludes other quotes that have not been submitted and does not make concurrent setup and submission atomic. Avoid overlapping setup transactions for the same source token; request a fresh quote when the order or authorization state changes.
Brackets
A standalone bracket is an ordinary open order on the asset it sells: itsqty counts toward the cumulative amount for that asset, alongside your other brackets and sell orders on it.
An attached bracket sells the asset the entry receives, so the quote returns a second authorization for that asset under attachedBracket. With the flag it is sized to the pair’s signedMaxFromAmount plus every other open order that sells the received asset, and a Permit2 permit’s expiration follows attachedBracket.expireTime, or stays unlimited when the pair has none. Flash counts a pending pair at its signedMaxFromAmount and an active pair at the amount it can still grow to, so later minimal-allowance orders on the same asset keep the pair covered.