Introspect the calling API key: tier, rate limit, and the period's games usage.
const url = 'https://api.betflux.ai/v1/me';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.betflux.ai/v1/me \ --header 'Authorization: Bearer <token>'The key’s whole entitlement: its plan, the plan’s limits and the period’s games usage. Reachable even when the period’s games allowance is exhausted, and never counts a game. rate_limit_per_minute is the effective limit for the channel the request came in on. usage is the current shape (games per billing period); the quota block is the pre-games row shape, kept for one SDK release with monthly_rows always null.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The key’s access and usage.
object
Id of the calling API key (not the secret).
The key’s tier code; plan.label is the name customers see.
Requests allowed per minute on the channel this request came in on.
The plan the key is on.
object
The plan’s display name, e.g. “Analyst” or “Premium 5k”.
Which size, for plans sold in sizes (Premium); null on every other plan.
The plan’s limits. The rules are the same for every key; the numbers are this key’s own and must be read here, never assumed.
object
Requests allowed per minute on the channel this request came in on — the same number as the top-level field.
Distinct games the plan allows per billing period; null when uncapped.
Games dated within this many days of now are read free (exempt); null when the plan has no such window.
API keys the account may hold at once.
Whether live sportsbook-lines (segments and the board) are included; a read without it is 403 plan-excludes.
Whether league-scoped datasets (injuries) are included; a read without them is 403 plan-excludes.
The sample rule on a trial key (“first-weekend”: only games dated the first Saturday of a month or the Sunday after it can be read, in every per-game dataset, with no games cap; any other date is 403 history-restricted); null on every other plan.
Legacy row block, kept for one SDK release. usage is the current shape.
object
Always null: usage is metered in games (see usage), never in rows.
Rows served so far this period — telemetry, never a limit (0 if the ledger is unreachable).
ISO date (UTC) the period resets: the date of usage.resets_at.
The period’s games usage. Every number is best-effort: zeros when the ledger is unreachable.
object
What is metered: distinct games per billing period.
ISO instant (UTC) the current period began. With a subscription the period is the monthly window stepped from its billing anchor; without one it is the UTC calendar month.
ISO instant (UTC) the period ends and the counters reset: the next step from the billing anchor, or the first of next month.
Distinct games counted so far this period.
Games the plan allows per period; null when uncapped.
Games left before a new one is refused; null when uncapped. Games already counted stay readable.
Games read free this period because they were dated within the plan’s recent-game window.
Rows served this period — telemetry, never a limit.
Counted games per league, e.g. {“NFL”: 120, “NBA”: 40}. The ids themselves are listed by GET /v1/me/games.
object
Where to change plan.
Example
{ "tier": "TRIAL", "plan": { "size": "2.5k" }, "limits": { "sample": "first-weekend" }, "usage": { "unit": "games" }}Missing, malformed, or unrecognized API key (problem type invalid-key).
RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.
object
Stable problem type URI.
Short human-readable summary.
HTTP status code.
Explanation specific to this occurrence.
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.
RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.
object
Stable problem type URI.
Short human-readable summary.
HTTP status code.
Explanation specific to this occurrence.
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".
RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.
object
Stable problem type URI.
Short human-readable summary.
HTTP status code.
Explanation specific to this occurrence.
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.
RFC 9457 problem details. Dispatch on the stable type URI (https://api.betflux.ai/problems/*), never on the English title.
object
Stable problem type URI.
Short human-readable summary.
HTTP status code.
Explanation specific to this occurrence.
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example"}