BetTune API
BetTune API
Interactive documentation for BetTune external API: discover matches, read prediction filters, and manage prediction odds.
Download OpenAPI schemaPublic API base URL
https://ovaccess.com/bet-tune-api/v1PRO subscription only
The BetTune API is available only for users with an active PRO subscription.
Authentication
Authorization: Bearer your_bettune_api_tokenEndpoints
Open an endpoint to see parameters, request body, responses, examples, and schemas.
get/sportsList available sports
Sports
get
/sportsList available 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/matchesList matches for one UTC date
Matches
get
/matchesList matches for one UTC date
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| date | query | Yes | string:date | UTC date in `YYYY-MM-DD` format. |
| sport | query | Yes | integer | Sport id. Currently only football is exposed by `/sports`. |
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/prediction-filtersList prediction filters
Prediction Filters
get
/prediction-filtersList 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/searchSearch existing predictions
Predictions
post
/predictions/searchSearch existing 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
example: "2.150000"
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}/predictionCreate or update prediction odds
Predictions
put
/prediction-filters/{filterId}/matches/{matchId}/predictionCreate or update prediction odds
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| filterId | path | Yes | integer | - |
| matchId | path | Yes | integer | - |
Request body
object
oddsrequired
string | number
example: "2.15"
{
"odds": "2.15"
}Responses
200 Created or updated prediction.
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string
example: "2.150000"
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}/predictionDelete prediction
Predictions
delete
/prediction-filters/{filterId}/matches/{matchId}/predictionDelete prediction
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| filterId | path | Yes | integer | - |
| matchId | path | Yes | integer | - |
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
Score
object
homerequired
integer
example: null
awayrequired
integer
example: null
IdName
object
idrequired
integer
namerequired
string
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"
PredictionsResponse
object
countrequired
integer
itemsrequired
array<object>
object
idrequired
integer
example: 10
filterIdrequired
integer
example: 11583
matchIdrequired
integer
example: 1611243
oddsrequired
string
example: "2.150000"
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
example: "2.150000"
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"