BetTune API

BetTune API

Interaktive Dokumentation für die externe BetTune API: Matches finden, eigene Wetten prüfen, Prediction-Filter lesen sowie Prediction-Quoten und individuelle Einsatzbeträge verwalten.

OpenAPI-Schema herunterladen
Öffentliche API-Basis-URL
https://ovaccess.com/bet-tune-api/v1
API-Token

Du kannst deinen API-Token auf der BetTune-Settings-Seite erstellen oder neu generieren.

BetTune Settings öffnen
Nur mit PRO-Abonnement

Die BetTune API ist nur für Nutzer mit aktivem PRO-Abonnement verfügbar.

Authentication

Authorization: Bearer your_bettune_api_token

Endpoints

Open an endpoint to see parameters, request body, responses, examples, and schemas.

get/sports

List available sports

Sports

Responses

200 Available sports.
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 1
namerequired
string
example: "football"
{
  "count": 1,
  "items": [
    {
      "id": 1,
      "name": "football"
    }
  ]
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
get/matches

List matches for one UTC date

Matches

Parameters

NameInRequiredTypeDescription
datequeryYesstring:dateUTC date in `YYYY-MM-DD` format.
sportqueryYesintegerSport id.

Responses

200 Matches for the requested UTC date.
object
daterequired
string:date
example: "2026-06-06"
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 1611243
daterequired
string:date-time
example: "2026-06-06T18:00:00+00:00"
finishedrequired
boolean
example: false
scorerequired
object
countryrequired
object
tournamentrequired
object
seasonrequired
object
homerequired
object
awayrequired
object
400 Invalid query parameters.
object
coderequired
string
messagerequired
string
{
  "code": "date_invalid",
  "message": "Invalid or missing date. Expected format: YYYY-MM-DD"
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
get/bets

List user bets

Bets

Parameters

NameInRequiredTypeDescription
pagequeryNointegerPage number. Pages are 1-based. Each page returns up to 100 bets.

Responses

200 Authenticated user's bets sorted by bet date, newest first.
object
pagerequired
integer
example: 1
perPagerequired
integer
example: 100
hasNextPagerequired
boolean
True when one more page exists.
example: true
countrequired
integer
Number of returned bets on this page.
example: 100
itemsrequired
array<object>
object
idrequired
integer
example: 12345
createdAtrequired
string:date-time
Bet placement date.
example: "2026-06-09T12:30:00+00:00"
statusrequired
string
example: "pending"
enum: pending, won, lost, push, canceled, refunded
approvedrequired
boolean
True when the bet result has been approved.
example: false
sportrequired
object
matchrequired
object
filterrequired
object
betTyperequired
string
example: "Home"
oddsrequired
string
example: "2.15"
amountrequired
string
example: "10"
profitrequired
string | null
example: null
{
  "page": 1,
  "perPage": 100,
  "hasNextPage": true,
  "count": 100,
  "items": [
    {
      "id": 12345,
      "createdAt": "2026-06-09T12:30:00+00:00",
      "status": "pending",
      "approved": false,
      "sport": {
        "id": 1,
        "name": "football"
      },
      "match": {
        "id": 1611243,
        "date": "2026-06-06T18:00:00+00:00",
        "finished": true,
        "score": {
          "home": 2,
          "away": 1
        },
        "home": {
          "id": 10,
          "name": "Team A"
        },
        "away": {
          "id": 20,
          "name": "Team B"
        }
      },
      "filter": {
        "id": 11583,
        "name": "Manual football"
      },
      "betType": "Home",
      "odds": "2.15",
      "amount": "10",
      "profit": null
    }
  ]
}
400 Invalid query parameters.
object
coderequired
string
messagerequired
string
{
  "code": "page_invalid",
  "message": "Page must be a positive integer"
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
get/prediction-filters

List prediction filters

Prediction Filters

Responses

200 Prediction-based filters for the current API token user.
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 11583
namerequired
string
example: "Manual football"
sportrequired
object
betTyperequired
string
example: "Home"
statusrequired
string
example: "approved"
enum: disabled, approved
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
post/predictions/search

Search existing predictions

Predictions

Request body

object
filterIdrequired
integer
example: 11583
matchIdsrequired
array<integer>
example: [1611243,1611244]
{
  "filterId": 11583,
  "matchIds": [
    1611243,
    1611244
  ]
}

Responses

200 Existing predictions for requested matches.
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string | null
example: "2.150000"
amountrequired
string | null
Custom bet amount for this match. Null means the default filter amount is used.
example: "25.000000"
sourcerequired
string
example: "api"
enum: api, ui
createdAtrequired
string:date-time
example: "2026-06-06T12:00:00+00:00"
updatedAtrequired
string:date-time
example: "2026-06-06T12:05:00+00:00"
400 Validation error.
object
coderequired
string
messagerequired
string
{
  "code": "invalid_json_body",
  "message": "Invalid JSON body"
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
403 The current user cannot access this resource.
object
coderequired
string
messagerequired
string
{
  "code": "pro_subscription_required",
  "message": "Prediction-based filters are available only for PRO subscription"
}
404 Filter or match not found.
object
coderequired
string
messagerequired
string
{
  "code": "filter_not_found",
  "message": "Filter not found"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
put/prediction-filters/{filterId}/matches/{matchId}/prediction

Create or update prediction odds

Predictions

Parameters

NameInRequiredTypeDescription
filterIdpathYesinteger-
matchIdpathYesinteger-

Request body

object
oddsrequired
string | number
example: "2.15"
amount
string | number
Optional custom bet amount for this match. Empty or null means the default filter amount will be used.
example: "25"
{
  "odds": "2.15",
  "amount": "25"
}

Responses

200 Created or updated prediction.
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string | null
example: "2.150000"
amountrequired
string | null
Custom bet amount for this match. Null means the default filter amount is used.
example: "25.000000"
sourcerequired
string
example: "api"
enum: api, ui
createdAtrequired
string:date-time
example: "2026-06-06T12:00:00+00:00"
updatedAtrequired
string:date-time
example: "2026-06-06T12:05:00+00:00"
400 Validation error.
object
coderequired
string
messagerequired
string
{
  "code": "invalid_json_body",
  "message": "Invalid JSON body"
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
403 The current user cannot access this resource.
object
coderequired
string
messagerequired
string
{
  "code": "pro_subscription_required",
  "message": "Prediction-based filters are available only for PRO subscription"
}
404 Filter or match not found.
object
coderequired
string
messagerequired
string
{
  "code": "filter_not_found",
  "message": "Filter not found"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window
delete/prediction-filters/{filterId}/matches/{matchId}/prediction

Delete prediction

Predictions

Parameters

NameInRequiredTypeDescription
filterIdpathYesinteger-
matchIdpathYesinteger-

Responses

204 Prediction deleted. The endpoint is idempotent.
400 Validation error.
object
coderequired
string
messagerequired
string
{
  "code": "invalid_json_body",
  "message": "Invalid JSON body"
}
401 Missing or invalid API token.
object
coderequired
string
messagerequired
string
{
  "code": "missing_token",
  "message": "No token provided"
}
403 The current user cannot access this resource.
object
coderequired
string
messagerequired
string
{
  "code": "pro_subscription_required",
  "message": "Prediction-based filters are available only for PRO subscription"
}
404 Filter or match not found.
object
coderequired
string
messagerequired
string
{
  "code": "filter_not_found",
  "message": "Filter not found"
}
429 Rate limit exceeded.
object
coderequired
string
messagerequired
string
{
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded"
}
Headers: Retry-After, X-RateLimit-Limit, X-RateLimit-Window

Schemas

ErrorResponse
object
coderequired
string
messagerequired
string
SportsResponse
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 1
namerequired
string
example: "football"
Sport
object
idrequired
integer
example: 1
namerequired
string
example: "football"
MatchesResponse
object
daterequired
string:date
example: "2026-06-06"
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 1611243
daterequired
string:date-time
example: "2026-06-06T18:00:00+00:00"
finishedrequired
boolean
example: false
scorerequired
object
countryrequired
object
tournamentrequired
object
seasonrequired
object
homerequired
object
awayrequired
object
Match
object
idrequired
integer
example: 1611243
daterequired
string:date-time
example: "2026-06-06T18:00:00+00:00"
finishedrequired
boolean
example: false
scorerequired
object
countryrequired
object
tournamentrequired
object
seasonrequired
object
homerequired
object
awayrequired
object
BetsResponse
object
pagerequired
integer
example: 1
perPagerequired
integer
example: 100
hasNextPagerequired
boolean
True when one more page exists.
example: true
countrequired
integer
Number of returned bets on this page.
example: 100
itemsrequired
array<object>
object
idrequired
integer
example: 12345
createdAtrequired
string:date-time
Bet placement date.
example: "2026-06-09T12:30:00+00:00"
statusrequired
string
example: "pending"
enum: pending, won, lost, push, canceled, refunded
approvedrequired
boolean
True when the bet result has been approved.
example: false
sportrequired
object
matchrequired
object
filterrequired
object
betTyperequired
string
example: "Home"
oddsrequired
string
example: "2.15"
amountrequired
string
example: "10"
profitrequired
string | null
example: null
Bet
object
idrequired
integer
example: 12345
createdAtrequired
string:date-time
Bet placement date.
example: "2026-06-09T12:30:00+00:00"
statusrequired
string
example: "pending"
enum: pending, won, lost, push, canceled, refunded
approvedrequired
boolean
True when the bet result has been approved.
example: false
sportrequired
object
matchrequired
object
filterrequired
object
betTyperequired
string
example: "Home"
oddsrequired
string
example: "2.15"
amountrequired
string
example: "10"
profitrequired
string | null
example: null
BetMatch
object
idrequired
integer
example: 1611243
daterequired
string:date-time | null
example: "2026-06-06T18:00:00+00:00"
finishedrequired
boolean
example: true
scorerequired
object
homerequired
object
awayrequired
object
Score
object
homerequired
integer | null
example: null
awayrequired
integer | null
example: null
IdName
object
idrequired
integer
namerequired
string
NullableIdName
object
idrequired
integer | null
namerequired
string | null
PredictionFiltersResponse
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 11583
namerequired
string
example: "Manual football"
sportrequired
object
betTyperequired
string
example: "Home"
statusrequired
string
example: "approved"
enum: disabled, approved
PredictionFilter
object
idrequired
integer
example: 11583
namerequired
string
example: "Manual football"
sportrequired
object
betTyperequired
string
example: "Home"
statusrequired
string
example: "approved"
enum: disabled, approved
SearchPredictionsRequest
object
filterIdrequired
integer
example: 11583
matchIdsrequired
array<integer>
example: [1611243,1611244]
PutPredictionRequest
object
oddsrequired
string | number
example: "2.15"
amount
string | number
Optional custom bet amount for this match. Empty or null means the default filter amount will be used.
example: "25"
PredictionsResponse
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string | null
example: "2.150000"
amountrequired
string | null
Custom bet amount for this match. Null means the default filter amount is used.
example: "25.000000"
sourcerequired
string
example: "api"
enum: api, ui
createdAtrequired
string:date-time
example: "2026-06-06T12:00:00+00:00"
updatedAtrequired
string:date-time
example: "2026-06-06T12:05:00+00:00"
Prediction
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string | null
example: "2.150000"
amountrequired
string | null
Custom bet amount for this match. Null means the default filter amount is used.
example: "25.000000"
sourcerequired
string
example: "api"
enum: api, ui
createdAtrequired
string:date-time
example: "2026-06-06T12:00:00+00:00"
updatedAtrequired
string:date-time
example: "2026-06-06T12:05:00+00:00"