Skip to main content
POST
/
api
/
users
/
{userId}
/
orders
{
  "venue": "predict",
  "tokenId": "103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "marketId": "46954",
  "side": "buy",
  "type": "market",
  "amount": "10.00"
}
{
  "orderId": "0x8f3a...c721",
  "venue": "predict",
  "marketIdentifier": "predict:46954:103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "tokenId": "103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "side": "buy",
  "outcome": "Nuggets",
  "size": "15.38",
  "price": "0.6500",
  "status": "filled",
  "createdAt": "2026-03-14T10:30:00.000Z",
  "sizeMatched": "15.38"
}

Endpoint

POST /api/users/{userId}/orders
Place orders on Predict.fun by setting venue: "predict" in the request body.
Predict.fun is a prediction market on BNB Smart Chain (BSC). Collateral is USDT (BEP-20, 18 decimals). Send USDT to the user’s predictWalletAddress to fund their account.

Markets, Outcomes, and Token IDs

Every Predict market has a numeric market ID (e.g., "46954") and two or more outcomes (e.g., “Nuggets” and “Lakers”). Each outcome has a unique token ID — a large numeric string that identifies it on-chain. To place an order, you need both the marketId and the tokenId for the specific outcome you want to trade.
Market data is available from the Predict.fun API or the Predict.fun website. The tokenId is the on-chain outcome token ID shown in market details.

Request Body

FieldTypeRequiredDescription
venuestringYesMust be "predict"
tokenIdstringYesOn-chain outcome token ID from Predict market data
marketIdstringYesNumeric Predict market ID (e.g., "46954")
sidestringYes"buy" or "sell"
typestringYes"limit" or "market"
amountstringMarket BUY onlyUSDT to spend
sizestringMarket SELL / all limitsNumber of shares
pricestringLimit orders onlyPrice per share (between 0 and 1, exclusive)

Market Identifier (Alternative)

Instead of providing venue, tokenId, and marketId separately, you can use a composite marketIdentifier:
{
  "marketIdentifier": "predict:46954:103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "side": "buy",
  "type": "market",
  "amount": "10.00"
}
Format: predict:<marketId>:<tokenId>. If marketIdentifier is provided, venue, marketId, and tokenId are parsed from it automatically. Explicit fields override parsed values. The marketIdentifier is returned in all order and position responses, so you can reuse it directly when placing new orders on the same market.

Required Fields by Order Type

Order TypeRequired FieldsRejected Fields
Market BUYamount (USDT)size
Market SELLsize (shares)amount
Limit BUYsize + priceamount
Limit SELLsize + priceamount
Passing the wrong field returns a 400. For example, sending size on a market buy returns "Market BUY orders require amount (USDT), not size".

Constraints

ConstraintValue
Min order value~$0.90 USDT
Price range0 – 1 (exclusive)

Order Status

StatusDescription
openResting on the orderbook (limit orders)
filledOrder fully executed
cancelledOrder was cancelled
expiredOrder expired
pendingSubmitted but not yet confirmed (rare)

Fees

Predict.fun charges an exchange fee per market (typically 2%). This fee is applied automatically by Predict’s matching engine — you do not need to account for it in your order parameters.
  • The price in order responses reflects the price before the exchange fee
  • There is no fee field in Predict order responses (unlike Polymarket)
  • There is no configurable platform fee for Predict — the Fee Policy API is Polymarket-only

Response Fields

FieldTypeDescription
orderIdstringOrder hash (used for cancel, lookup)
venuestring"predict"
marketIdentifierstringComposite identifier (predict:<marketId>:<tokenId>)
tokenIdstringOutcome token ID
sidestring"buy" or "sell"
outcomestringOutcome name (e.g., "Nuggets", "Yes")
sizestringNumber of shares
pricestringExecution price (market) or requested price (limit)
statusstringOrder status (see table above)
createdAtstringISO 8601 timestamp
sizeMatchedstringShares filled (present when order has fills)
originalSizestringOriginal requested size (present for market sell orders)
Market BUY responses may omit size since the input is USDT-based. Use sizeMatched to see the shares received.
{
  "venue": "predict",
  "tokenId": "103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "marketId": "46954",
  "side": "buy",
  "type": "market",
  "amount": "10.00"
}
{
  "orderId": "0x8f3a...c721",
  "venue": "predict",
  "marketIdentifier": "predict:46954:103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "tokenId": "103210916722172747942846166716572235061234589599991001208035034049741504775450",
  "side": "buy",
  "outcome": "Nuggets",
  "size": "15.38",
  "price": "0.6500",
  "status": "filled",
  "createdAt": "2026-03-14T10:30:00.000Z",
  "sizeMatched": "15.38"
}

Authorizations

x-api-key
string
header
required

Path Parameters

userId
string
required

Unique identifier for the user

Body

application/json
side
enum<string>
required

Buy or sell

Available options:
buy,
sell
type
enum<string>
required

Order type

Available options:
limit,
market
venue
enum<string>

Trading venue ('polymarket' or 'predict')

Available options:
polymarket,
predict
tokenId
string

Outcome token ID

marketId
string

Numeric market ID (required for Predict orders)

marketIdentifier
string

Composite identifier (e.g., 'predict:46954:tokenId'). Alternative to providing venue, marketId, and tokenId separately.

amount
string

USDC to spend (market BUY only)

size
string

Number of shares (market SELL, all limit orders)

price
string

Price per share (0.01–0.99). Required for limit orders. Must match tick size.

Response

201 - application/json

Order placed successfully

orderId
string

Unique order identifier

venue
string

Trading venue ('polymarket' or 'predict')

marketIdentifier
string

Composite identifier (e.g., 'polymarket:tokenId' or 'predict:marketId:tokenId')

tokenId
string

Outcome token ID

side
string

Order side: buy or sell

outcome
string

The outcome being traded (e.g., Yes, No)

size
string

Number of shares (when size was provided in request)

price
string | null

Execution or limit price

status
string

Order status: pending, filled, or canceled

createdAt
string

ISO 8601 timestamp

sizeMatched
string

Shares matched by CLOB (filled market orders)

originalSize
string

Original order size in shares

fee
object

Fee metadata (when fees are active)