Meta

Model transparency metrics (Brier, calibration)

Published accuracy of the model: Brier, Brier skill score vs the 0.25 no-skill baseline, and the settled-match sample, per market.

GET
/v1/{game}/model/metrics

Published accuracy of the model: Brier, Brier skill score vs the 0.25 no-skill baseline, and the settled-match sample, per market. Empty until the model's validation gate clears (https://esportsodds.gg/methodology).

Authorization

AuthorizationBearer <token>

The primary way to authenticate: Authorization: Bearer <api-key>. When a request also carries ?apiKey=, the header wins. We store only a SHA-256 hash of a key, never the key itself. To try the API with no account, use the public sample key eo_sample_public: one published key, shared by everyone, that reads a fixed sample of past matches within daily limits. For evaluation; our Terms apply.

In: header

Path Parameters

game*string

Game slug. cs2 is the only populated title today; an un-onboarded game 404s cleanly.

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/cs2/model/metrics"
{  "data": [    {      "market": "match_winner",      "brier": 0.2814810548009245,      "brier_skill_score": -0.125924219203698,      "settled_matches": 514,      "model_version": "v0-placeholder",      "gate_passed": false    }  ],  "meta": {    "count": 1,    "next_cursor": null  }}
{  "error": {    "code": "not_found",    "message": "not found",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}
{  "error": {    "code": "not_found",    "message": "not found",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}

{  "error": {    "code": "rate_limited",    "message": "rate limit exceeded",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}