Skip to content
Product Documentation

Introspect the calling API key: tier, rate limit, and the period's games usage.

GET
/v1/me
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.

The key’s access and usage.

Media typeapplication/json
object
key_id
required

Id of the calling API key (not the secret).

string
tier
required

The key’s tier code; plan.label is the name customers see.

string
Allowed values: TRIAL BETA STARTER PRO PREMIUM ENTERPRISE INTERNAL
rate_limit_per_minute
required

Requests allowed per minute on the channel this request came in on.

integer
plan
required

The plan the key is on.

object
label
required

The plan’s display name, e.g. “Analyst” or “Premium 5k”.

string
size
required

Which size, for plans sold in sizes (Premium); null on every other plan.

string | null
Allowed values: 2.5k 5k
limits
required

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
rate_limit_per_minute
required

Requests allowed per minute on the channel this request came in on — the same number as the top-level field.

integer
games_per_period
required

Distinct games the plan allows per billing period; null when uncapped.

integer | null
free_recent_game_days
required

Games dated within this many days of now are read free (exempt); null when the plan has no such window.

integer | null
max_keys
required

API keys the account may hold at once.

integer
live
required

Whether live sportsbook-lines (segments and the board) are included; a read without it is 403 plan-excludes.

boolean
league_datasets
required

Whether league-scoped datasets (injuries) are included; a read without them is 403 plan-excludes.

boolean
sample
required

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.

string | null
Allowed values: first-weekend
quota
required

Legacy row block, kept for one SDK release. usage is the current shape.

object
monthly_rows
required

Always null: usage is metered in games (see usage), never in rows.

integer | null
used_rows
required

Rows served so far this period — telemetry, never a limit (0 if the ledger is unreachable).

integer
resets
required

ISO date (UTC) the period resets: the date of usage.resets_at.

string
usage
required

The period’s games usage. Every number is best-effort: zeros when the ledger is unreachable.

object
unit
required

What is metered: distinct games per billing period.

string
Allowed values: games
period_start
required

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.

string
resets_at
required

ISO instant (UTC) the period ends and the counters reset: the next step from the billing anchor, or the first of next month.

string
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

Games left before a new one is refused; null when uncapped. Games already counted stay readable.

integer | null
games_exempt
required

Games read free this period because they were dated within the plan’s recent-game window.

integer
rows_used
required

Rows served this period — telemetry, never a limit.

integer
counted_by_league
required

Counted games per league, e.g. {“NFL”: 120, “NBA”: 40}. The ids themselves are listed by GET /v1/me/games.

object
key
additional properties
integer
upgrade_url
required

Where to change plan.

string
Example
{
"tier": "TRIAL",
"plan": {
"size": "2.5k"
},
"limits": {
"sample": "first-weekend"
},
"usage": {
"unit": "games"
}
}

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"
}