Place Your First Order
This guide will walk you through placing your first order on BettorEdge Markets, explaining all the order parameters and options available.
Prerequisites
- Completed authentication and obtained a Bearer token (see Authentication Guide)
- Understand how BettorEdge Markets work (see What are BettorEdge Markets?)
- Know how to find or build an order context hash (see Understanding Liquidity)
What is an Order?
An order is your request to buy contracts in a specific market outcome. When you place an order:
- You specify what you want to trade (order context hash)
- You specify how much you're willing to pay (price)
- You specify how much you want to invest (amount)
- Your order either fills immediately (if liquidity exists) or waits for someone to match it
How Orders Work
When you place an order on BettorEdge, you're creating a limit order that lets you set the maximum price you're willing to pay:
- You specify your price (e.g., $0.65)
- Your order only fills at that price or better
- If no one matches your price, your order waits in the market
- You become liquidity for other traders
Example:
- You place a buy order at $0.65
- Someone sells at $0.65 → Your order fills
- Only sellers at $0.60 exist → Your order waits (doesn't fill at worse price)
All orders placed through the API use real USD from your account balance.
Placing an Order
Now let's place your first order. Make sure you have:
- Your Bearer token from authentication
- An order context hash (from available markets or built yourself)
API Request
- cURL
- JavaScript
- Python
curl -X POST https://proxy.bettoredge.com/markets/v1/orders/order/place \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"price": 0.65,
"amount": 100,
"market_type": "FOR_MONEY"
}'
const response = await fetch('https://proxy.bettoredge.com/markets/v1/orders/order/place', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
order_context_hash: 'team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5',
price: 0.65,
amount: 100,
market_type: 'FOR_MONEY'
})
});
const order = await response.json();
console.log('Order placed!', order);
response = requests.post(
'https://proxy.bettoredge.com/markets/v1/orders/order/place',
headers={
'Content-Type': 'application/json',
'Authorization': f'Bearer {access_token}'
},
json={
'order_context_hash': 'team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5',
'price': 0.65,
'amount': 100,
'market_type': 'FOR_MONEY'
}
)
order = response.json()
print('Order placed!', order)
Understanding Order Parameters
order_context_hash (required)
The complete hash identifying what you want to trade.
Format: contest_type:contest_id:market_id:side:side_type:side_id:variable
Example: team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5
This means: "LeBron James to score over 31.5 points in Lakers vs Nuggets"
See the Understanding Liquidity guide for how to get this hash.
price (required)
Your limit price - the maximum you're willing to pay per contract.
Format: Decimal between 0.00 and 1.00
Examples:
0.65= You'll pay up to $0.65 per contract0.50= You'll pay up to $0.50 per contract0.85= You'll pay up to $0.85 per contract
How it works:
- If someone is selling at $0.60 and you bid $0.65, you'll buy at $0.60 (you get the better price)
- If no one is selling at $0.65 or lower, your order waits in the market
- Other traders see your order and can decide to sell to you
Choosing a price:
- Higher price = More likely to fill immediately, but lower potential profit
- Lower price = Less likely to fill, but higher potential profit
- Check existing liquidity to see current market prices
amount (required)
The total dollar amount you want to invest (your cost basis).
Format: Number (dollars)
Examples:
100= Invest $10050= Invest $50250= Invest $250
How contracts are calculated:
Contracts = Amount / Price
Example:
- Amount: $100
- Price: $0.65
- Contracts: $100 / $0.65 = ~153 contracts
If you win:
- Each contract pays $1.00
- You receive: 153 × $1.00 = $153
- Your profit: $153 - $100 = $53
market_type (required)
The type of order you're placing.
Value: "FOR_MONEY"
Important: Currently, the API only supports real USD orders. You must use "FOR_MONEY" as the market_type value. This means you are placing an order with real money from your account balance.
Response
Success Response
{
"placement_status": "success",
"message": "Order placed successfully",
"order_context": {
"order_ids": ["order_xyz789"],
"position_ids": ["position_abc123"],
"title": "LeBron James Over 31.5 Points",
"price": 0.65,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}
Response Fields
| Field | Description |
|---|---|
| placement_status | Status of the placement: "success" or "failed" |
| message | Human-readable message about the order |
| error | (optional) Error message if placement failed |
| order_context | (optional) Order details if placement succeeded |
| order_context.order_ids | Array of order IDs created or updated |
| order_context.position_ids | Array of position IDs created or updated |
| order_context.title | Human-readable title of the market |
| order_context.price | Price of the order |
| order_context.amount | Total amount invested |
| order_context.order_context_hash | The market identifier hash |
| order_context.status | Order status: "approved", "cancelled", or "closed" |
Order Status
The response tells you if your order placement was successful via placement_status. The actual order status is found in order_context.status:
Approved
- Order was successfully placed
- Check
order_idsandposition_idsto see what was created - If
position_idsis not empty, you have an active position - If only
order_idsexist, the order is resting and waiting to fill
Cancelled
- Order was cancelled before executing
- No position was created
Closed
- Order has been fully executed and closed
- All contracts were filled
- You have a complete position
Understanding Your Investment
Let's break down an example order:
Order Details:
- Order Context Hash:
team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5 - Price: $0.65
- Amount: $100
What You Get:
- Contracts: $100 / $0.65 = 153.85 contracts (rounded to 153)
- Cost Basis: $100
Potential Outcomes:
If LeBron scores over 31.5 points (you win):
- Each contract pays: $1.00
- You receive: 153 × $1.00 = $153
- Your profit: $153 - $100 = $53 profit (53% return)
If LeBron scores 31.5 points or under (you lose):
- Each contract pays: $0.00
- You receive: $0
- Your loss: $100 loss (100% of investment)
Trading Strategies
Strategy 1: Take Existing Liquidity
Find existing liquidity and match their price for instant execution.
// From available markets API
const liquidity = market.sides[0].liquidities[0];
const order = {
order_context_hash: liquidity.order_context_hash,
price: liquidity.price, // Match their price
amount: 100,
market_type: 'FOR_MONEY'
};
Pros:
- Instant fill
- Know exactly what you're getting
- No waiting
Cons:
- May not get the best price
- Limited to available liquidity
Strategy 2: Set Your Own Price
Build your own hash and set a better price.
const order = {
order_context_hash: 'team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5',
price: 0.60, // Lower than current market ($0.65)
amount: 100,
market_type: 'FOR_MONEY'
};
Pros:
- Better price = higher potential profit
- You set the terms
Cons:
- May not fill immediately
- Need to wait for someone to match
Strategy 3: Create New Markets
Trade at lines that don't exist yet.
const order = {
order_context_hash: 'team:lakers_nuggets_20240115:12345:over:athlete:2954:35.0',
price: 0.45, // LeBron over 35 points
amount: 100,
market_type: 'FOR_MONEY'
};
Pros:
- Trade your exact thesis
- Potentially unique edge
Cons:
- May take time to fill
- You're the first liquidity
Common Scenarios
Scenario 1: Order Fills Immediately
You place an order at $0.65, and someone is already selling at $0.63.
Response:
{
"placement_status": "success",
"message": "Order placed successfully",
"order_context": {
"order_ids": [],
"position_ids": ["position_abc123"],
"title": "LeBron James Over 31.5 Points",
"price": 0.63,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}
Result:
- Your order fills at $0.63 (you get the better price!)
position_idsarray contains your new positionorder_idsis empty because the order filled completely- You have a position immediately
Scenario 2: Order Waits in Market
You place an order at $0.60, but sellers want $0.65.
Response:
{
"placement_status": "success",
"message": "Order placed successfully",
"order_context": {
"order_ids": ["order_xyz789"],
"position_ids": [],
"title": "LeBron James Over 31.5 Points",
"price": 0.60,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}
Result:
- Your order stays open (resting order)
order_idsarray contains your resting orderposition_idsis empty because nothing filled yet- You're now offering liquidity at $0.60
- When someone decides to sell at $0.60, your order fills
Scenario 3: Partial Fill
You place a $100 order at $0.65, but only $60 of liquidity exists at that price.
Response:
{
"placement_status": "success",
"message": "Order placed successfully",
"order_context": {
"order_ids": ["order_xyz789"],
"position_ids": ["position_abc123"],
"title": "LeBron James Over 31.5 Points",
"price": 0.65,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}
Result:
- Both
order_idsandposition_idsare populated - Part of your order filled → You have a position
- Part of your order is resting → Waiting for more liquidity
- You have both a position and an open order
Best Practices
- Check Your Balance - Make sure you have enough funds before placing orders
- Review the Hash - Double-check your order context hash is correct
- Price Wisely - Look at existing liquidity to understand market prices
- Start Small - Place smaller orders while learning
- Monitor Status - Check if your order filled or is still open
Next Steps
After placing your order:
- Check Your Portfolio - View your positions and P&L
- Get Your Balance - See your available funds
- Manage Open Orders - Cancel or modify orders (coming soon)
Common Questions
What happens if my order doesn't fill?
Your order stays open in the market until:
- Someone matches your price
- You cancel the order
- The market closes/settles
Can I cancel an open order?
Yes! You can cancel open orders that haven't filled yet (API documentation coming soon).
What if I want to sell instead of buy?
Selling positions will be covered in an upcoming guide. Selling creates liquidity on the opposite side.
How do I know if my price is good?
Check the liquidities array in available markets to see current prices. If you want to fill immediately, match or beat those prices.
Need help? Check out the Orders API Reference for detailed endpoint documentation.