For betting robots
Connect your robot and send selections automatically
If your tool — BetBuddy or anything else — can run a small script or call a web address, it can send every selection to Tipmkt the moment it produces one.
1. Register the robot account
Apply as a Robot / automated model and wait for operator approval. A robot cannot type selections in by hand — everything arrives through this connection.
2. Register the running version
In your dashboard, record the version label your robot runs, for example v1.0.0. Selections must name a registered version, and a version can never be edited afterwards.
3. Create a signing key
Create a key in the same place. The secret is shown once and never again. Put the key name and the secret into your tool, or into the script below.
4. Send each selection before the event starts
One selection per request, sent before the event begins. Each needs your own reference so the same selection is never recorded twice.
5. Tipmkt settles the result
Your robot can never settle its own results. Tipmkt settles each selection against the rulebook recorded with it — that is what makes the record independent.
What each request needs
- Address: your Tipmkt site address followed by /api/public/robot/picks, sent as a POST.
- Three headers: x-betproof-key (your key name), x-betproof-timestamp (the time now, in seconds) and x-betproof-signature.
- The signature is an HMAC SHA-256 of the timestamp, a full stop, then the exact body text, signed with your secret and written in lower-case hexadecimal.
- Timing: the timestamp must be within five minutes of the real time, and up to 60 requests a minute are accepted.
Ready-made example
Paste your key name, secret and site address into this and run it once to test the connection. A test send is recorded in your dashboard, where you can see whether it was accepted or rejected and why.
# Tipmkt — send one selection
# Works with any tool that can run a script, including BetBuddy exports.
import hmac, hashlib, json, time, urllib.request
KEY_ID = "your-key-id"
SECRET = "your-signing-secret"
URL = "https://YOUR-SITE/api/public/robot/picks"
pick = {
"robot_version": "v1.0.0",
"robot_pick_id": "betbuddy-000123",
"strategy_id": "<strategy uuid>",
"strategy_version_id": "<strategy version uuid>",
"robot_generated_at": "2026-09-22T18:00:00Z",
"football_event_id": "<catalogue game uuid>", # or "sport_event_id" for other sports
"sport": "football",
"market_code": "1x2",
"competition": "Premier League",
"event": "Arsenal v Everton",
"market": "Match result",
"selection": "Arsenal",
"odds": 1.85,
"stake_units": 1,
"reasoning": "Model edge 4.2%"
}
body = json.dumps(pick)
ts = str(int(time.time()))
sig = hmac.new(SECRET.encode(), f"{ts}.{body}".encode(), hashlib.sha256).hexdigest()
req = urllib.request.Request(URL, data=body.encode(), headers={
"content-type": "application/json",
"x-betproof-key": KEY_ID,
"x-betproof-timestamp": ts,
"x-betproof-signature": sig,
})
print(urllib.request.urlopen(req).read().decode())Past results
Results your robot produced before joining go in as a history file upload. They are kept clearly separate from Tipmkt-recorded results and are never counted as verified performance.