API documentation
Read and write your bets from your own scripts, spreadsheets and agents.
Authentication
Every request needs a personal API token, sent as a Bearer header.
Create a free account, then create a token under API tokens.
Base URL: https://log.bet/api/v1
Endpoints
GET /bets— list all your betsPOST /bets— create a betGET /bets/{id}— fetch one betPATCH /bets/{id}— update a bet (send only the fields to change)DELETE /bets/{id}— delete a betGET /odds/search?q=— find upcoming matches (for automatic closing odds)GET /odds/events/{eventId}— list a match's betting selections
Fetch all your bets
curl https://log.bet/api/v1/bets \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Register a bet
curl -X POST https://log.bet/api/v1/bets \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"event":"Arsenal vs Chelsea","bet_description":"Arsenal to win","odds":2.1,"amount":10,"match_date":"2026-06-20","status":"pending","sport":"Football","league":"EPL"}'
Required: event, bet_description, odds, amount, match_date, status. Optional: bet_type (back or lay, default back), sport, league, tipster, bookmaker, closing_odds, each_way (true/false) with place_terms (4/5/6/8/10, i.e. 1/N of the odds, default 5). Statuses: pending, won, placed, half_won, lost, half_lost, push, void. An each-way bet is always a back bet; amount is the unit stake, staked on both the win and the place (total outlay 2×amount). It settles as won (both parts), placed (place part only) or lost (−2×amount). For automatic closing odds, see below.
Settle a bet (partial update)
curl -X PATCH https://log.bet/api/v1/bets/123 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"status":"won"}'
Send only the fields you want to change. DELETE the same URL removes the bet.
Automatic closing odds (CLV)
Log a bet against a real match and its closing line is fetched for you after kickoff, so you can track closing line value without entering it by hand. Three steps:
# 1) find the match
curl "https://log.bet/api/v1/odds/search?q=Arsenal" \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"
# 2) list its selections (use event_id from step 1)
curl https://log.bet/api/v1/odds/events/EVENT_ID \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json"
# 3) log the bet with the picked selection
curl -X POST https://log.bet/api/v1/bets \
-H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" \
-d '{"event":"Arsenal vs Chelsea","bet_description":"Over 2.5","odds":1.95,"amount":10,"match_date":"2026-06-20","status":"pending","external_event_id":"EVENT_ID","market_key":"totals","outcome_name":"Over","outcome_point":2.5}'
Pass external_event_id plus the selection's market_key, outcome_name and (if it has one) outcome_point from step 2 — the server fills in the rest. After the match settles, GET /bets returns closing_odds and clv_percent.