Skip to content
Product Documentation

Price a list of game ids against the period's games allowance without counting any.

POST
/v1/me/games/preview
curl --request POST \
--url https://api.betflux.ai/v1/me/games/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "game_ids": [ "example" ] }'

What reading each game would cost right now: new would count it, already and exempt are free, restricted is outside the free sample and refused, invalid is not a game id. fits and over_by say whether the gateway would refuse any of the new games today. Counts nothing, is reachable at the allowance, and answers 503 instead of guessing when the usage ledger is unreachable.

Media typeapplication/json
object
game_ids
required

Public game ids (LEAGUE_AWAY_HOME_YYYYMMDD, case-insensitive, at most 64 characters each), 1 to 5,000, answered in this order.

Array<string>
>= 1 items <= 5000 items
Examplegenerated
{
"game_ids": [
"example"
]
}

The cost of each game and the period’s counters.

Media typeapplication/json
object
games
required

One entry per requested id, in request order.

Array<object>
object
game_id
required

The id exactly as sent.

string
cost
required

new: a read would count the game; already: recorded this period (counted or exempt), so free; exempt: dated within the plan’s recent-game window, so free; restricted: outside the free sample (the first weekend of a month), so every dataset refuses it with 403 history-restricted; invalid: not a public game id.

string
Allowed values: new already exempt restricted invalid
games_used
required

Distinct games counted so far this period.

integer
games_allowance
required

Games the plan allows per period; null when uncapped.

integer | null
games_remaining
required

New games the period still allows; null when uncapped.

integer | null
fits
required

Whether the gateway would admit every new game right now: false only when enforced and the new games outnumber games_remaining.

boolean
over_by
required

How many of the new games would be refused; 0 whenever fits.

integer
enforced
required

Whether the allowance is enforced for this key today. False on an uncapped plan, and while a plan’s allowance is still being measured — then fits is always true.

boolean
Example
{
"games": [
{
"cost": "new"
}
]
}

Validation failed — unknown or invalid query parameter, or a malformed range (problem type validation-error).

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}

Missing, malformed, or unrecognized API key (problem type invalid-key).

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}

The key is valid, but the account has no active subscription (problem type subscription-required). The response includes upgrade_url.

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}

API key revoked or suspended (problem type key-disabled); a feature the plan does not include (problem type plan-excludes, with feature — live for the live sportsbook-lines routes, league_datasets for league-scoped datasets — required_tiers and upgrade_url; never worth retrying on the same key); or a game outside the key’s history window (problem type history-restricted): a trial key reads only games dated the first Saturday of a month or the Sunday after it, and its 403 carries upgrade_url and sample: "first-weekend".

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}

Rate limit, games allowance, or ops throttle — the problem type distinguishes rate-limited, quota-exhausted and throttled. quota-exhausted refuses only a new game past the period’s allowance (games already counted stay readable) and carries reset_at, upgrade_url, game_id, games_used and games_allowance.

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}

The usage ledger did not answer (problem type internal-error, title Usage ledger unavailable). Nothing was counted; retry shortly.

Media typeapplication/problem+json

RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.

object
type
required

Stable problem type URI.

string
title
required

Short human-readable summary.

string
status
required

HTTP status code.

integer
detail

Explanation specific to this occurrence.

string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example"
}