A betting API that places bets into your own bookmaker sessions
Send racing and sports bets from your own code into bookmaker accounts you already hold. B337 runs each account as a session on your computer, checks the current price and places the bet on your instructions.
What the betting API does
Odds data APIs return prices but do not place bets, and an exchange's own API places bets on that exchange only. The B337 betting API does a different job: it places racing and sports bets in Australian bookmaker accounts you already hold, from a script or server you run.
Every bet goes to a session you have running: one of your own accounts, logged in by the B337 software on your computer. The session checks the bookmaker's current price, places the bet if the price meets your target and reports the result back. B337 is software, not a bookmaker: it does not take bets or hold betting funds, and your money stays in your own accounts.
Your accounts, your computer
Sessions run in the B337 software on your own computer, logged in to accounts you hold with credentials you supply.
REST with an API key
JSON requests over HTTPS, authenticated by your API key in the X-API-Key header.
Asynchronous place-bet
The place-bet call answers straight away with a correlation id. The result follows by polling, or by a signed callback to your URL.
Racing and sports
Thoroughbred, harness and greyhound racing, and sports at bookmakers whose sessions support them. The docs list what each one takes.
Betting involves risk. Bookmakers can restrict or close accounts and void bets, automation can fail, prices move, and a positive expected value (+EV) bet can still lose. Promotions carry each bookmaker's own terms. There is no guarantee of profit. An API request is an instruction to your own session, not a promise that the bookmaker will take the bet or hold the price. See responsible gambling for limits and support.
How a bet goes through the API
Run your accounts as API sessions
Connect the bookmaker accounts you already hold in your B337 dashboard and run each one as an API session. Each API session can have a daily schedule, so it only takes bets in the hours you set.
Authenticate every request
Send your API key in the X-API-Key header, then list your running sessions to get the session ids your bets will go to.
Send the bet
Post the event, selection, stake and target odds to the asynchronous place-bet endpoint. It returns a correlation id immediately, and your session does the rest.
Collect the result
Poll the bet-status endpoint with the correlation id, or pass a callback URL and receive the result as a signed POST. Placed bets are recorded in your B337 dashboard.
A sample request
A racing win bet, sent to the asynchronous place-bet endpoint. Every value is a placeholder.
POST /v3/place_bet
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{
"session_id": "YOUR_SESSION_ID",
"category": "racing",
"track": "Flemington",
"race_num": 4,
"race_type": "(R)",
"country": "au",
"date": "2026-10-03",
"runner": "Runner Name",
"market": "win",
"stake": 10.00,
"target_odds": 4.20
}The reply comes back straight away, with the bet still pending (abridged):
{
"status": "pending",
"correlation_id": "9b3c...",
"session_id": "YOUR_SESSION_ID",
"submitted_at": "2026-10-03T03:11:00.000Z"
}Then poll with the correlation id until the status is completed:
POST /api/bet_status
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "correlation_ids": ["9b3c..."] }When it completes, result.success says whether the bet was placed and result.bet_result carries the bookmaker's receipt: bet id, odds and stake. A timeout status means no result came back in time, so check that account's bet history before you send the bet again.
Rather not poll? Add a callback_url to the request and the result is POSTed to your server when it is ready. Each callback carries a Bet-Signature header, an HMAC-SHA256 of the body keyed with your API key, so your server can check it came from B337 before acting on it.
Target odds are a floor, not a fixed price
The target_odds you send is the lowest price you will accept, not the price you will get. When your session goes to place the bet, it checks the bookmaker's current price. Below your target, the bet is refused and the result says so. At or above it, the bet goes on at the bookmaker's current price.
An optional max_odds adds a ceiling. A price far above what you expected can be a sign the wrong runner or line was matched, so the session refuses it rather than betting it. Prices move between your request and the bet, so a floor set right at the current price will sometimes miss.
Share one bet across your bookmakers
Name a distribution strategy in the request and one bet is spread across your running sessions at different bookmakers, by the rule you pick.
- Fixed wager: the same stake at every bookmaker, whatever its price.
- Ensure total wager: fixed-size chunks until your total is placed, moving stake to another bookmaker when one declines.
- Choose best odds: checks every price first, then bets only at the number of top-priced bookmakers you set.
- Minimum odds: bets only where the price meets your minimum and skips the rest.
- High odds first: starts at the best price and passes any unplaced amount to the next best price, and so on.
- Fixed profit: sizes each stake from that bookmaker's price, so each bet would win the same amount.
These rules decide where your stake goes. They do not change the chance of your selection winning: if it loses, every stake on it is lost.
What else the API covers
Placing bets is the core. The other endpoints cover running your accounts from the same code.
- Price checks: ask your sessions for a bookmaker's current price before you bet.
- Balances: read an account's balance through its session.
- Sessions: list your sessions, and start, restart or stop them.
- Promos: read the promotions already in your own accounts.
- Transactions: pull an account's recent transaction history.
The full API reference
Every endpoint, request field and error code, with curl and Python examples, is in the API docs. They open with any B337 account, including a free one.
Limits worth knowing before you build
- Your computer has to be on. Sessions run in the B337 software on your own computer, so the API can reach a session only while that computer is on and the software is running.
- Your own accounts only. It bets in accounts you hold and have connected, and nowhere you do not have a session running.
- Bookmakers set the terms. A bookmaker can decline a bet, limit stakes, restrict or close an account and void bets, and many bookmakers' terms restrict automated betting.
- Coverage differs by bookmaker. The docs list the bet types, sports and markets each one takes.
- No in-play. Australian bookmakers cannot take online in-play sports bets, so every bet goes on before the event starts.
- Schedules are enforced. A session with a daily schedule refuses bets sent outside its hours.
- You choose the bets. The API places what your code sends and does not pick selections. For help finding prices, the Terminal's sports screener ranks out-of-line prices by edge.
What you need
- Accounts you already hold with Australian bookmakers, connected to your B337 dashboard.
- A computer running the B337 software: Windows 10 or 11 (64-bit), macOS 11 or later on Apple Silicon, or Ubuntu 24.04+ or Debian 13+, with 4GB of RAM and 500MB of free disk.
- API access and your API key. Keep the key in server-side code or an environment variable, never in a web page, app bundle or public repository: anyone who has it can send bets to your sessions.
- Code that can send an HTTPS request with a JSON body, in any language.
Pricing and access
API access is set up through Discord: join the server, get verified and open a ticket for the plan you want. API pricing is confirmed in your ticket rather than published here. You can read the full API docs first with a free account.
Get API access
- Send racing and sports bets from your code into your own sessions
- Share one bet across your bookmakers with six distribution strategies
- Get each result by polling or a signed callback
- Check prices, balances, promos and transactions through the same API
Questions about the betting API
Is B337 a bookmaker?
Does my computer need to stay on?
Can I read the docs before I pay?
How do I know whether a bet was placed?
What if the price drops before the bet goes on?
Will bookmakers restrict my account?
Is automated betting allowed?
Can the API bet in-play?
How much does API access cost?
Related pages
Start with a free account
A free account opens the API docs and a limited view of the Terminal with live odds. API access for placing bets is set up through Discord.
By the B337 team. Last updated .