Skip to main content
POST
/
api
/
users
/
{userId}
/
orders
{
  "venue": "polymarket",
  "tokenId": "71321045679252212...",
  "side": "buy",
  "type": "market",
  "amount": "2"
}
{
  "orderId": "0xe69245af3a00e487...",
  "venue": "polymarket",
  "marketIdentifier": "polymarket:71321045679252212...",
  "tokenId": "71321045679252212...",
  "side": "buy",
  "outcome": "Yes",
  "price": "0.53",
  "status": "filled",
  "createdAt": "2026-02-24T18:55:37.445Z",
  "sizeMatched": "3.754716",
  "originalSize": "3.7547",
  "fee": {
    "policyApplied": true,
    "feeBps": 50,
    "platformFeeBps": 0,
    "partnerFeeBps": 50,
    "grossAmount": "2",
    "netOrderAmount": "1.99",
    "maxFeeReserved": "0.01"
  }
}
For a complete walkthrough, see the Placing Trades guide.

Endpoint

POST /api/users/{userId}/orders
Place orders on Polymarket by setting venue: "polymarket" in the request body.
You can use the Bridge API to deposit from Ethereum, Solana, Bitcoin, or other chains. Funds are automatically converted to USDC.e and deposited to your Polymarket wallet.

Request Body

FieldTypeRequiredDescription
venuestringYesMust be "polymarket"
tokenIdstringYesOutcome token ID from List Markets
sidestringYes"buy" or "sell"
typestringYes"limit" or "market"
amountstringMarket BUY onlyUSDC.e to spend
sizestringMarket SELL / all limitsNumber of shares
pricestringLimit orders onlyPrice per share, between 0 and 1 (exclusive)

Required Fields by Order Type

Order TypeRequired FieldsRejected Fields
Market BUYamount (USDC.e)size
Market SELLsize (shares)amount
Limit BUYsize + priceamount
Limit SELLsize + priceamount

Market Identifier (Alternative)

Instead of providing venue and tokenId separately, you can use a composite marketIdentifier:
{
  "marketIdentifier": "polymarket:71321045679252212...",
  "side": "buy",
  "type": "limit",
  "size": "10",
  "price": "0.55"
}
Format: polymarket:<tokenId>. If marketIdentifier is provided, venue 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.
Passing the wrong field returns a 400. For example, sending amount on a limit order returns "Limit orders require size (shares), not amount".

Constraints

ConstraintValue
Price rangeBetween 0 and 1 (exclusive)
Min market order> 1 USDC.e
Min limit order> 5 shares

Order Status

StatusDescription
openResting on the orderbook
filledOrder fully executed
cancelledOrder was cancelled
expiredOrder expired
pendingSubmitted but not yet confirmed (transitional)
Get the tokenId from List Markets. Each outcome (Yes/No) has its own token ID.

Fees

There is currently no platform fee (0 bps) on filled orders. Partners can optionally add a markup fee via the Fee Policy API. When a partner fee is configured, the total fee is platformFeeBps + partnerFeeBps. Cancelled and expired orders incur no fee.

Fee Object

FieldTypePresentDescription
policyAppliedbooleanAlwaysWhether a fee policy was applied
feeBpsnumberAlwaysTotal fee in basis points (platform + partner)
platformFeeBpsnumberAlwaysPlatform fee portion (currently 0 bps)
partnerFeeBpsnumberAlwaysPartner fee portion (0 if no partner fee)
grossAmountstringMarket BUY onlyOriginal USDC.e amount requested
netOrderAmountstringMarket BUY onlyOrder amount after fee deduction
maxFeeReservedstringMarket BUY onlyMaximum fee reserved (grossAmount − netOrderAmount)

Market BUY

The fee is deducted upfront - your amount is reduced before execution.

All other orders (Market SELL, Limit BUY, Limit SELL)

The full size is used for the order. The fee is calculated and settled automatically after the order fills.
Market BUY responses omit size since the input is USDC.e-based. Use sizeMatched to see the shares received.
{
  "venue": "polymarket",
  "tokenId": "71321045679252212...",
  "side": "buy",
  "type": "market",
  "amount": "2"
}
{
  "orderId": "0xe69245af3a00e487...",
  "venue": "polymarket",
  "marketIdentifier": "polymarket:71321045679252212...",
  "tokenId": "71321045679252212...",
  "side": "buy",
  "outcome": "Yes",
  "price": "0.53",
  "status": "filled",
  "createdAt": "2026-02-24T18:55:37.445Z",
  "sizeMatched": "3.754716",
  "originalSize": "3.7547",
  "fee": {
    "policyApplied": true,
    "feeBps": 50,
    "platformFeeBps": 0,
    "partnerFeeBps": 50,
    "grossAmount": "2",
    "netOrderAmount": "1.99",
    "maxFeeReserved": "0.01"
  }
}
See also: Place Order (Predict) for Predict.fun-specific fields and constraints.

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

Stablecoin to spend - USDC.e for Polymarket, USDT for Predict (market BUY only)

size
string

Number of shares (market SELL, all limit orders)

price
string

Price per share, between 0 and 1 (exclusive). Required for limit orders.

Response

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: open, filled, cancelled, expired, or pending (transitional)

createdAt
string | null

ISO 8601 timestamp. May be empty for Predict orders.

sizeMatched
string

Number of shares filled

originalSize
string

Original order size in shares

fee
object

Fee metadata (when fees are active)