Skip to main content

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

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)
  • The API confirms your order was accepted into the queue
  • Your order may fill immediately, partially, or wait for matching
  • To check fill status: Use the Get My Portfolio endpoint

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 is accepted into the queue and processed asynchronously
  • 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 → API confirms acceptance
  • In the background: If someone sells at $0.65, your order fills
  • In the background: If only sellers at $0.70 exist, your order waits (doesn't fill at worse price)
  • To check what happened: Use Get My Portfolio to see your fill status

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:

  1. Your Bearer token from authentication
  2. An order context hash (from available markets or built yourself)

API Request

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"
}'

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 contract
  • 0.50 = You'll pay up to $0.50 per contract
  • 0.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 $100
  • 50 = Invest $50
  • 250 = 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

Important: Response Shows Acceptance, Not Fill Status

The place order response indicates whether your order was ACCEPTED and placed in the order queue. It does NOT tell you if or how much of your order has filled.

Orders are processed asynchronously after acceptance. To check the actual fill status of your order and see your positions, you must call the Get My Portfolio endpoint.

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

FieldDescription
placement_statusWhether order was accepted: "success" (order accepted into queue) or "failed" (order rejected)
messageHuman-readable message about the order acceptance
error(optional) Error message if placement failed
order_context(optional) Order details if placement succeeded
order_context.order_idsArray of order IDs that were accepted into the queue
order_context.position_idsArray of position IDs (Note: Use Get My Portfolio to check actual filled positions)
order_context.titleHuman-readable title of the market
order_context.pricePrice of the order
order_context.amountTotal amount invested
order_context.order_context_hashThe market identifier hash
order_context.statusOrder acceptance status: "approved" (accepted into queue), "cancelled", or "closed"

Understanding the Response

The place order response indicates whether your order was accepted into the order queue, not whether it has filled.

placement_status: "success"

  • Your order was accepted and placed in the queue
  • The order will be processed asynchronously
  • To check fill status: Call the Get My Portfolio endpoint

placement_status: "failed"

  • Your order was rejected (insufficient balance, invalid parameters, etc.)
  • Check the error field for details
  • No order was created

Checking Actual Fill Status

The order_ids and position_ids arrays in the response do not reliably indicate fill status. After placing an order, use the Get My Portfolio endpoint to:

  • See which orders have filled (fully or partially)
  • View your actual positions and contracts
  • Check your profit/loss on filled positions
  • See which orders are still open (resting)

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

info

The place order response only confirms your order was accepted. The examples below show what you might find when you check Get My Portfolio after placing your order.

Scenario 1: Order Accepted (May Fill Immediately)

You place an order at $0.65, and there might be someone already selling at $0.63.

Place Order 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.65,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}

What This Means:

  • Your order was accepted into the queue
  • The order will be processed asynchronously

To Check Fill Status:

Call Get My Portfolio to see:

  • If the order filled at $0.63 (better price)
  • If you now have a position with contracts
  • If the order is still open and waiting

Scenario 2: Order Accepted (May Wait for Matching)

You place an order at $0.60, but sellers might want $0.65.

Place Order 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"
}
}

What This Means:

  • Your order was accepted into the queue
  • Processing will happen asynchronously

To Check Fill Status:

Call Get My Portfolio to see:

  • If the order is still open (resting) and waiting
  • If someone matched your price and it filled
  • Your current position (if any)
  • You're offering liquidity at $0.60 for other traders

Scenario 3: Order Accepted (May Partially Fill)

You place a $100 order at $0.65, and there might be only $60 of liquidity at that price.

Place Order 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.65,
"amount": 100,
"order_context_hash": "team:lakers_nuggets_20240115:12345:over:athlete:2954:31.5",
"status": "approved"
}
}

What This Means:

  • Your order was accepted into the queue
  • It may fill partially, fully, or not at all

To Check Fill Status:

Call Get My Portfolio to see:

  • If part of your order filled (you have a position)
  • If part of your order is still resting (waiting for more liquidity)
  • Your exact contract count and cost basis

Best Practices

  1. Check Your Balance - Make sure you have enough funds before placing orders
  2. Review the Hash - Double-check your order context hash is correct
  3. Price Wisely - Look at existing liquidity to understand market prices
  4. Start Small - Place smaller orders while learning
  5. Monitor Fill Status - Use Get My Portfolio to check if your order filled or is still open

Next Steps

After placing your order:

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

Use Get My Portfolio to check if your order has filled, partially filled, or is still waiting.

Can I cancel an open order?

Yes! You can cancel open orders that haven't filled yet using the Cancel Order endpoint. You can also use Bulk Cancel Orders to cancel multiple orders at once.

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.