Skip to main content
The public API is served by the United Market backend. Use this API for market data, trading, order status, authentication, user profiles, comments, leaderboards, and real-time subscriptions. Only the public backend integration surface is documented here.
United Market is now live on BNB Smart Chain mainnet. We just launched — start trading on-chain prediction markets today.

Calling Endpoints

Use HTTPS in the playground and browser clients. The HTTP endpoints redirect to HTTPS, which can make requests appear to fail from hosted docs. Some user-specific actions require SIWE authentication and a bearer token. Trading actions require EIP-712 order signatures. Open any endpoint page in this section to use the interactive playground.

Endpoint Groups

Common Conventions

  • Amounts are usually returned as raw token units. Collateral uses the collateral token decimals.
  • List endpoints such as GET /markets and GET /market-groups return { data, pagination } (page / pageSize, default 60, max 250), not a bare array.
  • Order identifiers are orderHash values derived from the signed EIP-712 order.
  • Public orders use the zero address as taker.
  • Market rooms and real-time events are keyed by conditionId.
  • Trading fees are quoted in basis points. Read a market’s effective rate from GET /markets/{id}/fee and sign it as the order’s feeRateBps. See Fees & Referrals.

Errors

Most failures use Nest’s default JSON:
message can be a string or a validation array. A few handwritten responses omit error and only return { statusCode, message }. Treat statusCode + message as the stable fields.

Rate limits

Responses include X-RateLimit-Limit-short / -medium, X-RateLimit-Remaining-*, and X-RateLimit-Reset-*. Exceeding a limit returns 429. short is per second, medium is per minute — they are independent, not perMin / 60. Limits depend on the route class and the key’s tier. The shared public web key is treated as anon. Fallback ceilings when a route has no class: DEFAULT is tighter than anon on many read classes on purpose. A named integration that 429s after switching off the web key needs PRO or MM, not a new DEFAULT key. Order-write / cancel budgets are separate and much tighter for anon. See API Keys.

Order statuses

Public GET /orders?conditionId=… only returns filled and partially_filled. To see your own open quotes use GET /me/orders or GET /orders?account=<you> with credentials.