Skip to content
Product Documentation

Read an immutable archive baseline and complete revision metadata.

GET
/v1/games/{game_id}/{dataset}/archives/{archive_id}
curl --request GET \
--url https://api.betflux.ai/v1/games/example/example/archives/example \
--header 'Authorization: Bearer <token>'

Free metadata. Reconstruct locally from the actual first-revision baseline, then apply later changes; skip applying the first change again. Preserve empty replacements and verify snapshot_digest after every applied revision. Served only where MSF serving is enabled: GET /v1/datasets lists the MSF datasets available, and elsewhere every MSF route answers 404.

game_id
required
string
dataset
required
string
archive_id
required
string

Read an immutable archive baseline and complete revision metadata.

Media typeapplication/json
object
archive_id
required
string
<= 128 characters /^[A-Za-z0-9_-]+$/
dataset
required
string
Allowed values: game-state plays player-stats team-stats injuries
scope
required
One of:
object
kind
required
string
Allowed values: game
game_id
required
string
>= 1 characters
schema_version
required
string
Allowed values: v1
stream_epoch
required
string
<= 128 characters /^[A-Za-z0-9_-]+$/
first_revision
required
integer
> 0 <= 9007199254740991
last_revision
required
integer
> 0 <= 9007199254740991
source_start
required
string format: date-time
source_end
required
string format: date-time
baseline
required
object
dataset
required
string
Allowed values: game-state plays player-stats team-stats injuries
scope
required
One of:
object
kind
required
string
Allowed values: game
game_id
required
string
>= 1 characters
schema_version
required
string
>= 1 characters
stream_epoch
required
string
>= 1 characters
revision
required
integer
revision_kind
required
string
Allowed values: patch append replace
is_baseline
required
boolean
history_origin
required
string
Allowed values: captured reconstructed
source_observation
required
object
source_revision
required
string
>= 1 characters
source_updated_at
required
string format: date-time
request_started_at
required
string format: date-time
timestamp_basis
required
string
Allowed values: source request_start unverified
source_played_status
string | null
source_schedule_status
string | null
materialized_at
required
string format: date-time
status
required
string
Allowed values: provisional verified
coverage
required
object
state
required
string
Allowed values: complete legacy_partial degraded
coverage_start
required
string | null format: date-time
coverage_end
required
string | null format: date-time
gaps
required
Array<string>
pending_source_revision
required
string | null
files
required
Array<object>
object
rows
required
integer
sha256
required
string
/^[a-f0-9]{64}$/
url
required
string
>= 1 characters
row_count
required
integer
live_capture_started_at
required
string | null format: date-time
poll_after
required
integer
> 0
freshness
required
object
newest_applied_source_updated_at
required

Newest independently evidenced source version applied to serving state; null when no checkpoint evidence is published.

string | null format: date-time
last_changed_at
required

Time of the last publication containing data changes; null when change history is not evidenced.

string | null format: date-time
latest_request_started_at
required

Latest independently observed source request start, which does not prove request completion.

string | null format: date-time
last_pull_success_observed_at
required

Latest pull completion evidenced by source pull state; separate from source update time.

string | null format: date-time
last_normalized_at
required

Latest normalization evidenced by a retained normalize receipt; null when unavailable.

string | null format: date-time
health_observed_at
required

Time this independent health evidence was observed; null when health evidence is unavailable.

string | null format: date-time
cursor
required
string
>= 1 characters
revisions
required
Array<object>
>= 1 items <= 64 items
object
dataset
required
string
Allowed values: game-state plays player-stats team-stats injuries
scope
required
One of:
object
kind
required
string
Allowed values: game
game_id
required
string
>= 1 characters
schema_version
required
string
>= 1 characters
stream_epoch
required
string
>= 1 characters
revision
required
integer
revision_kind
required
string
Allowed values: patch append replace
is_baseline
required
boolean
history_origin
required
string
Allowed values: captured reconstructed
source_observation
required
object
source_revision
required
string
>= 1 characters
source_updated_at
required
string format: date-time
request_started_at
required
string format: date-time
timestamp_basis
required
string
Allowed values: source request_start unverified
source_played_status
string | null
source_schedule_status
string | null
materialized_at
required
string format: date-time
status
required
string
Allowed values: provisional verified
coverage
required
object
state
required
string
Allowed values: complete legacy_partial degraded
coverage_start
required
string | null format: date-time
coverage_end
required
string | null format: date-time
gaps
required
Array<string>
pending_source_revision
required
string | null
files
required
Array<object>
object
rows
required
integer
sha256
required
string
/^[a-f0-9]{64}$/
url
required
string
>= 1 characters
row_count
required
integer
cursor
required
string
>= 1 characters
snapshot_digest
required
string
/^[a-f0-9]{64}$/
snapshot_row_count
required
integer
Example
{
"dataset": "game-state",
"scope": {
"kind": "game"
},
"schema_version": "v1",
"baseline": {
"dataset": "game-state",
"scope": {
"kind": "game"
},
"revision_kind": "patch",
"history_origin": "captured",
"source_observation": {
"timestamp_basis": "source"
},
"status": "provisional",
"coverage": {
"state": "complete"
}
},
"revisions": [
{
"dataset": "game-state",
"scope": {
"kind": "game"
},
"revision_kind": "patch",
"history_origin": "captured",
"source_observation": {
"timestamp_basis": "source"
},
"status": "provisional",
"coverage": {
"state": "complete"
}
}
]
}

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), or a game or league revision outside the key’s history window (problem type history-restricted).

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

Unknown MSF dataset, unknown game, an uncovered league, an archive or file with no publisher commitment.

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, monthly row quota, or ops throttle — the problem type distinguishes rate-limited, quota-exhausted, and throttled.

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

Committed archive metadata or files are corrupt or missing.

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