Skip to main content
POST
/
api
/
users
/
{userId}
/
orders
Place Order
curl --request POST \
  --url https://trade.predexon.com/api/users/{userId}/orders \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "venue": "polymarket",
  "side": "buy",
  "amount": "<string>",
  "tokenId": "<string>",
  "ticker": "<string>",
  "outcome": "Yes",
  "price": "<string>",
  "type": "limit"
}
'
{
  "orderId": "0x1234567890abcdef...",
  "venue": "polymarket",
  "tokenId": "71321045679252212594626385...",
  "side": "buy",
  "outcome": "Yes",
  "amount": "50.00",
  "price": "0.65",
  "status": "live",
  "createdAt": "2024-01-15T10:30:00.000Z"
}

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"
amountstringYesUSDC to spend (buy) or shares to sell (sell)
pricestringLimit ordersPrice per share (0-1). Must match tick size.
typestringYes"limit" or "market"

Constraints

ConstraintValue
PriceMust be a multiple of the market’s tick_size
Min limit order> 5 shares (amount / price)
Min market order> 1 USDC
Amount precision2 decimal places
Tick size varies by market. A price is valid if price / tick_size is an integer.
  • tick_size = 0.010.65 valid, 0.655 invalid
  • tick_size = 0.0010.655 valid
You can fetch tick_size from the orderbook endpoint.

Order Status

StatusDescription
liveOrder is active on the orderbook (limit orders)
filledOrder fully executed (market orders)
matchedOrder partially or fully matched

Amount Semantics

SideAmount Represents
buyUSDC to spend
sellShares to sell
Get the tokenId from List Markets. Each outcome (Yes/No) has its own token ID.
{
  "orderId": "0x1234567890abcdef...",
  "venue": "polymarket",
  "tokenId": "71321045679252212594626385...",
  "side": "buy",
  "outcome": "Yes",
  "amount": "50.00",
  "price": "0.65",
  "status": "live",
  "createdAt": "2024-01-15T10:30:00.000Z"
}

Authorizations

x-api-key
string
header
required

Path Parameters

userId
string
required

Unique identifier for the user

Body

application/json
venue
enum<string>
required

Trading venue: polymarket or kalshi

Available options:
polymarket,
kalshi
side
enum<string>
required

Buy or sell

Available options:
buy,
sell
amount
string
required

USDC to spend (buy) or shares to sell (sell)

tokenId
string

Polymarket token ID (required for Polymarket orders)

ticker
string

Kalshi market ticker (required for Kalshi orders)

outcome
enum<string>

Yes or No (required for Kalshi, case-sensitive)

Available options:
Yes,
No
price
string

Price per share (0-1). Required for Polymarket limit orders. Must match tick size.

type
enum<string>

Order type (Polymarket only, defaults to limit)

Available options:
limit,
market

Response

201 - application/json

Order placed successfully

orderId
string

Unique order identifier

venue
string

Trading venue: polymarket or kalshi

tokenId
string

Polymarket token ID (Polymarket orders only)

ticker
string

Kalshi market ticker (Kalshi orders only)

side
string

Order side: buy or sell

outcome
string

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

amount
string

Order amount in USDC

price
string

Order price (0-1)

status
string

Order status: live, matched, or filled

createdAt
string

ISO 8601 timestamp