Skip to main content

Overview

All orders on Limitless are signed using EIP-712 structured data. The venue’s exchange address is used as the verifyingContract in the signing domain.
If you’re using the Programmatic API with delegated signing, the server handles EIP-712 signing for you via managed wallets. This page is for partners and traders who sign orders with their own private keys.

EIP-712 Domain

{
  "name": "Limitless CTF Exchange",
  "version": "1",
  "chainId": 8453,
  "verifyingContract": "<venue.exchange address>"
}
The verifyingContract must be fetched from the market’s venue data via GET /markets/:slug. See Venue System.

Order Type Definition

{
  "Order": [
    { "name": "salt", "type": "uint256" },
    { "name": "maker", "type": "address" },
    { "name": "signer", "type": "address" },
    { "name": "taker", "type": "address" },
    { "name": "tokenId", "type": "uint256" },
    { "name": "makerAmount", "type": "uint256" },
    { "name": "takerAmount", "type": "uint256" },
    { "name": "expiration", "type": "uint256" },
    { "name": "nonce", "type": "uint256" },
    { "name": "feeRateBps", "type": "uint256" },
    { "name": "side", "type": "uint8" },
    { "name": "signatureType", "type": "uint8" }
  ]
}

Field Reference

FieldTypeDescription
saltuint256Unique order identifier (typically timestamp-based)
makeraddressChecksummed address of the order creator
signeraddressSame as maker for EOA wallets
takeraddress0x000...000 for open orders (any taker)
tokenIduint256Position ID — YES or NO token from market data
makerAmountuint256Amount the maker offers, scaled by 1e6 (see Amount Calculation)
takerAmountuint256Amount the maker wants in return, scaled by 1e6 (always 1 for FOK orders)
expirationuint2560 for no expiration
nonceuint256Order nonce
feeRateBpsuint256Fee rate in basis points
sideuint80 = BUY, 1 = SELL
signatureTypeuint80 = EOA signature

Order Types

TypeDescription
GTC (Good Till Cancelled)Remains active until filled or cancelled
FOK (Fill or Kill)Must fill completely or be cancelled

Amount Calculation

USDC has 6 decimals (1 USDC = 1,000,000 units). Shares are also scaled by 1e6.

GTC (limit orders)

SidemakerAmounttakerAmount
BUYprice * size * 1e6 (USDC to spend)size * 1e6 (shares to receive)
SELLsize * 1e6 (shares to sell)price * size * 1e6 (USDC to receive)
// BUY 10 shares at $0.50
makerAmount = 0.50 * 10 * 1e6 = 5,000,000
takerAmount = 10 * 1e6         = 10,000,000

// SELL 10 shares at $0.50
makerAmount = 10 * 1e6         = 10,000,000
takerAmount = 0.50 * 10 * 1e6  = 5,000,000

FOK (market orders)

SidemakerAmounttakerAmount
BUYusdcToSpend * 1e61 (constant)
SELLsharesToSell * 1e61 (constant)
FOK orders always set takerAmount = 1 and omit price. The makerAmount represents the raw amount being offered.
The SDKs handle amount scaling automatically — you pass human-readable values (price, size, or makerAmount) and the builder calculates the scaled on-chain amounts.