Skip to main content
Polymarket is the largest prediction market by volume, running on Polygon. Markets are framed as questions with binary YES / NO outcomes, collateralised in USDC, and traded on a central limit order book (CLOB). Bravado supports Polymarket across every product, and gives you execution and data capabilities the native APIs do not offer.

How Polymarket works

Each market has a condition_id, and each tradeable outcome within it has its own ERC-1155 token id, the symbol you pass when placing an order. Prices are decimal probabilities between 0.001 and 0.999, so 0.62 means 62 cents per share. Depositing USDC mints a complete set of outcome tokens, which can be split and merged. Because exactly one outcome resolves true, a complete set is always redeemable for the underlying collateral. See Positions for split, merge, and redeem mechanics. Once an event concludes, the outcome is reported through UMA’s Optimistic Oracle before winning shares become redeemable, see UMA resolution.

Supported Bravado products

Trade API

Eight order types including TWAP, Iceberg, Pegged, and three stop variants.

Copytrade API

Mirror any wallet’s fills with proportional, fixed, or capped sizing.

Data API

Wallet PnL, leaderboards, trade logs, and tax statements.

Combos API

Multi-leg parlays across 2 to 10 markets, priced by RFQ.

UMA resolution

How markets settle, and why a concluded event is not yet a redeemable one.

What Bravado adds over Polymarket’s native APIs

Venue constraints

These limits are enforced by Polymarket’s CLOB and the underlying protocol. Rejections that cite them are venue rules, not Bravado bugs:
  • Resting order share minimum, most markets require at least 5 shares per resting limit order.
  • Market order notional minimum, MARKET orders require a minimum spend of $1.
  • Iceberg slices are post-only, each slice is submitted passively, so for a buy the slice price must be at or below the current best bid.
Prices are decimal probabilities, not cents. Sending price: "62" is rejected because 62 falls outside the valid 0.0010.999 range. Send "0.62" instead.