Skip to main content
On-chain CLOB trading is coming soon. Today’s production API still uses HMAC-only ledger settlement. This page describes the builder flow so you can prepare. The endpoints below are not live on https://api.futuur.com yet.
Every on-chain create is pre-signed. HMAC authenticates the HTTP request. The Safe owner EOA signs EIP-712 LimitOrderIntent. HMAC keys alone cannot create OOM or USDC orders once on-chain settlement is on. If you do not have credentials yet, start with Get your API keys. For the matching and settlement model, see On-chain trading.

Prerequisites

  1. A Futuur account with wallet_address linked and a registered Safe (POST /me/safe/).
  2. HMAC public and private keys for L2 request signing.
  3. The owner EOA private key — the same key that owns the Safe.
  4. The Safe funded with OOM and/or USDC on the active chain.
  5. Trading enabled once per collateral token.

Step 1 — Enable trading

Grant the pool a standing allowance so bids do not need a per-order approve.
After this succeeds, signing-context returns needsApproval: false and creates are intent-only.
Do this once per token (OOM and USDC). You do not repeat it on every order.

Step 2 — Signing context

Call this once at submit time, not on every UI keystroke.
HMAC-authenticated. Body:

Step 3 — Sign LimitOrderIntent

Sign eip712 with the owner EOA, not the Safe contract address. Domain: FutuurLimitOrder v1, verifyingContract is the zero address.
Use the eip712 object from signing-context as-is. maxUsdcRaw must match exactly.

Step 4 — Create the order

Send the usual order fields plus:
Sign the HTTP request with HMAC as usual. See Authentication. Bids match only after settlement_status is ready (standing allowance confirmed). Asks become ready as soon as the intent verifies.

Selling

Do not sell on-chain OOM or USDC with PATCH /wagers/{id}/. That path only moves the internal ledger. Use a signed side=ask create instead. When on-chain settlement is on, PATCH /wagers/ returns onchain_sell_requires_limit_order.

Common errors

Never store the owner wallet key in git or client-side code. HMAC keys cannot create on-chain orders by themselves.