When to use signed intents
Use a signed intent when you cannot be online to submit at the exact trigger moment, but you can decide the trigger and exit constraints in advance.- Take profit: exit long when mark price is greater than or equal to target, or exit short when mark price is less than or equal to target.
- Stop loss: exit long when mark price is less than or equal to stop, or exit short when mark price is greater than or equal to stop.
AcceptQuote.
End-to-end flow
The trigger is not latched. If the mark price moves back before the transaction lands, the contract can reject the settlement astrigger_not_satisfied.
Conditional order body
These fields are sent to the indexer and contract. The v2 signature covers theSignedTakerIntent typed-data fields; chain_id, contract_address, evm_chain_id, and unfilled_action are wire/runtime fields.
EIP-712 domain
Signed intents use the same domain separator as maker quotes:
The domain
chainId is the EVM chain ID, not the Cosmos chain ID.
Sign and submit a conditional order
Usesign_conditional_order_v2 from injective-rfq-toolkit to produce the EIP-712 v2 digest signature, then submit via TakerStreamClient.send_conditional_order. The helper returns a 0x-prefixed 65-byte signature; pass it through unchanged.
sign_conditional_order_v2 and the values in the order_body you submit must match exactly. Any drift (different price string, different lane_version, different evm_chain_id) will fail signature recovery at the indexer or contract.
For REST submissions, include the same signing mode explicitly:
Trigger types
direction field is the closing direction, opposite to the open position):
The contract re-evaluates the mark-price trigger during settlement. If mark moves back before the executor’s transaction lands, the contract rejects with
trigger_not_satisfied; the executor should retry according to its trigger-order policy.
Epochs and lanes
Before signing, read the currentepoch and lane_version for the taker. A signed intent is valid only for the exact values it signs.
CancelAllIntentsincrements the taker’s epoch and invalidates every outstanding intent for that taker.CancelIntentLaneincrements the lane version for one(taker, market_id, subaccount_nonce)lane.- Successful settlement also advances the lane version, making trigger intents one-shot by construction.
Common failures
Next
- Accepting quotes covers the synchronous
AcceptQuotepath. - Trigger orders explains TP/SL behavior at the product level.
- Best practices covers expiry races, idempotency, and
cidusage.

