Browse the data.
Everything EVIO serves, one lane at a time. Each row is one endpoint: what it returns, what one call costs, and a real response to read before you spend anything. The records are the product. The model signals sit next to them and are scored in public.
A record. The recorded value, the schedule, the results. Cleaned and joined; nothing modeled. Yours to build on. From $0.001 per call.
A model output. A probability distribution or a fair line built on the records above. Snapshotted beside venue prices and scored after settlement. $0.01 per call.
The track record. Every settled head-to-head, misses included, in plain JSON with no key.
Prices are list prices per call, charged from your prepaid wallet; every response states what it was actually charged in _meta.price. A failed call is not billed, and an empty wallet returns 402 with a quote. Keys: Authorization: Bearer evk_… from the dashboard.
The official NWS climate day.
We serve the official NWS climatological report (CLI) for nine major US stations, the history behind it, and our own distribution for the day before the report prints. The report is the source some prediction markets, such as Kalshi rain and snow markets, settle on. Kalshi's daily high and low temperature markets name The Weather Company, which EVIO does not carry.
- 72,846 station-days
- 9 NWS stations
- history to ~2001
- source: NWS Climatological Report (CLI)
GET /v1/weather/stationsStation registry The nine NWS climate stations: id, city, timezone, NWS product, and the Kalshi and Polymarket series mapped to each. Data Freewith key
No parameters.
settles.kalshi_high_seriesandkalshi_low_seriesare the Kalshi series ids mapped to this station. Kalshi's daily temperature series now name The Weather Company as settlement source, so treat this mapping as a reference only.- Free with any key. It is the menu: agents never pay to see the instruments.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/weather/stations"
{
"results": {
"stations": [
{
"id": "KAUS",
"name": "Austin-Bergstrom Intl",
"city": "Austin",
"state": "TX",
"tz": "America/Chicago",
"cli_product": "CLIAUS",
"settles": {
"kalshi_high_series": "KXHIGHAUS",
"kalshi_low_series": "KXLOWTAUS",
"polymarket": null
},
"coordinates": {
"lat": 30.1975,
"lon": -97.6664
}
},
{
"id": "KDEN",
"name": "Denver Intl",
"city": "Denver",
"state": "CO",
"tz": "America/Denver",
"cli_product": "CLIDEN",
"settles": {
"kalshi_high_series": "KXHIGHDEN",
"kalshi_low_series": null,
"polymarket": null
},
"coordinates": {
"lat": 39.8467,
"lon": -104.6562
}
},
… 7 more
],
"count": 9
}
}
GET /v1/weather/settlementOfficial climate day High, low, precip and snow from the NWS Climatological Report, with the product id as the citation. Data $0.001per call
| stationreq | Registry station id, e.g. KNYC |
| day | Climate day (YYYY-MM-DD). Omit for the latest official report. |
settlement.high_f/low_fare the report values verbatim; no modeling is applied.nws_product_idis the exact NWS text product, so every value is auditable back to the source.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/weather/settlement?station=KNYC"
{
"results": {
"station": {
"id": "KNYC",
"name": "Central Park",
"city": "New York",
"state": "NY",
"tz": "America/New_York",
"cli_product": "CLINYC"
},
"settlement": {
"day": "2026-01-03",
"high_f": 41,
"low_f": 30,
"high_time_local": "153 PM",
"low_time_local": "1150 PM",
"precip_in": 0.11,
"snow_in": 0.0,
"source": "mock",
"nws_product_id": "202601041607-KOKX-CDUS41-CLINYC"
}
},
"_citations": [
{
"step": 0,
"source": "iem_cli_archive",
"locator": "https://mesonet.agron.iastate.edu/json/cli.py?station=KNYC"
},
{
"step": 1,
"source": "nws_climatological_report",
"locator": "https://mesonet.agron.iastate.edu/api/1/nwstext/202601041607-KOKX-CDUS41-CLINYC"
}
],
"_confidence": {
"score": 0.97,
"label": "settlement",
"factors": [
"official NWS climatological report",
"latest report; NWS occasionally issues same-day corrections"
]
}
}
GET /v1/weather/settlement/historyClimate day history A date range of official climate days for one station, up to 400 days per call. Backtest and training fuel. Data $0.005per call
| stationreq | Registry station id, e.g. KNYC |
| startreq | First climate day (YYYY-MM-DD) |
| endreq | Last climate day, inclusive (YYYY-MM-DD) |
days[]carries one row per climate day in the same shape as the single-day endpoint.coverage.first/lasttell you how far back the store goes for that station before you page.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/weather/settlement/history?station=KNYC&start=2026-08-01&end=2026-08-31"
{
"results": {
"station": {
"id": "KNYC",
"name": "Central Park",
"city": "New York",
"state": "NY",
"tz": "America/New_York",
"cli_product": "CLINYC"
},
"start": "2026-08-01",
"end": "2026-08-07",
"count": 0,
"days": [],
"coverage": {
"first": null,
"last": null
}
}
}
GET /v1/weather/forecastPoint forecast + alerts NWS forecast periods for any US latitude and longitude, 12 to 168 hours out, with active alerts and risk flags. Data $0.001per call
| latreq | Latitude in decimal degrees, e.g. 40.7789 |
| lonreq | Longitude in decimal degrees, e.g. -73.9692 |
| hours | Forecast window in hours (12 to 168). Default 48. |
| hourly | Hourly granularity instead of 12-hour periods. |
periods[]is the NWS forecast reduced to the fields a decision needs: temperature, precip chance, wind, summary.alerts[]andrisk_flags[]surface active NWS alerts without a second call.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/weather/forecast?lat=40.7789&lon=-73.9692&hours=48"
{
"results": {
"location": {
"lat": 40.78,
"lon": -73.97,
"name": "Mockville, NV",
"grid": {
"office": "MCK",
"x": 42,
"y": 99
},
"timezone": "America/Los_Angeles"
},
"generated_at": "2026-01-06T06:00:00",
"granularity": "12h",
"periods": [
{
"name": "Today",
"start": "2026-01-06T06:00:00",
"end": "2026-01-06T18:00:00",
"is_day": true,
"temp_f": 68,
"precip_pct": 30,
"wind_mph_max": 30,
"wind_dir": "W",
"summary": "Partly Cloudy"
},
{
"name": "Tonight",
"start": "2026-01-06T18:00:00",
"end": "2026-01-07T06:00:00",
"is_day": false,
"temp_f": 66,
"precip_pct": 20,
"wind_mph_max": 15,
"wind_dir": "W",
"summary": "Sunny"
}
],
"alerts": [],
"risk_flags": [
"high_wind"
]
}
}
GET /v1/weather/signalTemperature distribution Per-degree probabilities over a station's official high and low, up to six days out. Strike math built in: a “greater than T” contract is ge[T+1]. Signal $0.01per call
| stationreq | Registry station id, e.g. KNYC |
| target | Target climate day (YYYY-MM-DD). Default: today at the station. Up to 6 days ahead. |
probabilities.ge[T]is P(official high ≥ T). A contract phrased “greater than T” that settles on the official NWS report pays when the settled integer is at least T+1, so price it fromge[T+1].uncertainty.sigma_fwidens withlead_days; the calibration tightens from our own archived forecast-vs-outcome pairs.- Every live call is snapshotted beside Kalshi's open strikes and scored on the public scoreboard against the venue result. Kalshi's daily temperature markets settle on The Weather Company.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/weather/signal?station=KNYC&target=2026-09-12"
{
"results": {
"target_day": "2026-09-09",
"projection": {
"high_f": 88.0,
"low_f": 71.0,
"peak_time_utc": "2026-09-09T19:00:00+00:00",
"hours_covered": 24
},
"uncertainty": {
"sigma_f": 1.8,
"lead_days": 0.0,
"calibration": "v0 lead-time table; per-station self-calibration accrues in forecast_snapshots"
},
"probabilities": {
"pmf": {
… 6 lower
"84": 0.0197,
"85": 0.0565,
"86": 0.1199,
"87": 0.1883,
"88": 0.2188,
"89": 0.1883,
"90": 0.1199,
"91": 0.0565,
"92": 0.0197,
… 6 higher
},
"ge": {
… 6 lower
"84": 0.9938,
"85": 0.9741,
"86": 0.9176,
"87": 0.7977,
"88": 0.6094,
"89": 0.3906,
"90": 0.2023,
"91": 0.0824,
"92": 0.0259,
… 6 higher
}
},
"market_note": "Venue rules phrased 'greater than T' resolve YES when the settled integer is at least T+1: use ge[T+1]."
},
"_confidence": {
"score": 0.85,
"label": "reasoned",
"factors": [
"NWS hourly point forecast reduced over the climate-day window",
"sigma 1.8F from v0 lead-time calibration (self-calibration accruing in forecast_snapshots)"
]
}
}
Every game since 1999, and a fair line for the next one.
Schedule, finals and consensus lines back to 1999, quarterback stat lines, the official injury report and the players-voted Top 100, id-matched across all of it. The fair line is our model on top, stored append-only and scored after every final.
- 7,548 games
- 25,064 players
- 34,809 injury rows
- since 1999
- source: nflverse
GET /v1/nfl/gamesSchedule, results & lines Kickoffs, finals, consensus spread, total and moneylines, rest days and roof for any season, week or team. The id feed for the fair line. Data $0.001per call
| season | 1999 to current. Default: current season. |
| week | 1 to 22 (regular season + playoffs). |
| team | Team code, e.g. SEA |
game_idis the nflverse id (2026_01_NE_SEA) that/v1/nfl/fair-lineaccepts.marketcarries the consensus spread, total and moneylines;resultand scores fill in after the final.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/nfl/games?season=2026&week=1"
{
"results": {
"count": 1,
"games": [
{
"game_id": "2026_01_NE_SEA",
"season": 2026,
"week": 1,
"game_type": "REG",
"gameday": "2026-09-09",
"kickoff_local": "20:15",
"home_team": "SEA",
"away_team": "NE",
"home_score": null,
"away_score": null,
"result": null,
"total": null,
"market": {
"spread_line": 3.5,
"total_line": 44.5,
"home_moneyline": -180,
"away_moneyline": 150
},
"rest": {
"home": 7,
"away": 7
},
"roof": "outdoors",
"surface": "fieldturf",
"qbs": {
"home": "Sam Darnold",
"away": "Drake Maye"
},
"stadium": "Lumen Field"
}
]
}
}
GET /v1/nfl/qbQB stat lines Week-by-week completions, yards, TDs, INTs, sacks, EPA and CPOE for any quarterback, with aggregates. Ambiguous names return candidates. Data $0.002per call
| playerreq | QB name (partial ok) or GSIS id |
| season | 2002 to current. |
| last | Max recent weeks returned (1 to 60). Default 20. |
aggregatessums the returned weeks;weeks[]is the per-game line withpassing_epaandcpoe.- Lookup by name or GSIS id; an ambiguous name returns candidates instead of a guess.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/nfl/qb?player=Maye&last=10"
{
"results": {
"player": "Drake Maye",
"player_id": "00-0039918",
"team": "NE",
"aggregates": {
"weeks": 2,
"completions": 43,
"attempts": 69,
"passing_yards": 488,
"passing_tds": 2,
"interceptions": 3,
"sacks_suffered": 6,
"epa_per_week": -1.1,
"cpoe_mean": 0.55
},
"weeks": [
{
"season": 2025,
"week": 20,
"player_id": "00-0039918",
"player_name": "Drake Maye",
"team": "NE",
"opponent": "DEN",
"completions": 24,
"attempts": 34,
"passing_yards": 287,
"passing_tds": 2,
"interceptions": 1,
"sacks_suffered": 2,
"passing_epa": 6.1,
"cpoe": 4.2,
"rushing_yards": 31,
"rushing_tds": 0
},
… 1 more
]
}
}
GET /v1/nfl/injuriesInjury report & reserve list Official club practice and game-status rows in season, plus the year-round reserve list (IR, PUP, suspension). Season-scoped: last year never leaks forward. Data $0.002per call
| teamreq | Team code, e.g. SEA |
| season | Defaults to the current season; prior seasons must be asked for explicitly. |
| week | 1 to 22. |
reportis the official in-season practice/game-status report;reserve_listis the year-round IR/PUP/suspension list.- A 2026 answer is built only from 2026 rows, so an old injury can never appear current.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/nfl/injuries?team=SEA"
{
"results": {
"team": "SEA",
"season": 2026,
"week": null,
"current_season": 2026,
"is_current_season": true,
"report": {
"count": 0,
"by_status": {},
"players": []
},
"reserve_list": {
"as_of_week": 1,
"count": 1,
"players": [
{
"player": "Ben Burr-Kirven",
"gsis_id": "00-0034567",
"position": "LB",
"status": "RES",
"designation": "R01"
}
]
}
}
}
GET /v1/nfl/top100Top 100 registry The league's players-voted annual Top 100, id-matched to the player registry. The star watch list for injury and QB monitoring. Data $0.001per call
| season | 2011 to current. Default: latest loaded season. |
players[]carries rank, name, team and position, joined to the same player ids the QB and injury endpoints use.- Each season loads as the league publishes it.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/nfl/top100?season=2025"
{
"results": {
"season": 2025,
"count": 3,
"players": [
{
"rank": 1,
"player_name": "Saquon Barkley",
"team": "PHI",
"position": "RB"
},
{
"rank": 2,
"player_name": "Lamar Jackson",
"team": "BAL",
"position": "QB"
},
… 1 more
]
}
}
GET /v1/nfl/fair-lineFair line Model spread, total and win probability for one game, with the top feature drivers and the edge against the posted line. Every unplayed-game call is stored append-only. Signal $0.01per call
| game_id | nflverse id, e.g. 2026_01_NE_SEA |
| team | Team code: resolves that team's next unplayed game |
| opponent | Narrow the team lookup to this opponent |
fair_line.spreadis the model's line from the home side;edge.spread_pointsis the gap to the posted line andsidesays which way.drivers[]are the features that moved the number most, in points.- Calls for unplayed games are written to the track record (the database rejects edits) and scored at
/v1/nfl/performance.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/nfl/fair-line?game_id=2026_01_NE_SEA"
{
"results": {
"game": {
"game_id": "2026_01_NE_SEA",
"season": 2026,
"week": 1,
"gameday": "2026-09-09",
"home_team": "SEA",
"away_team": "NE",
"roof": "outdoors",
"surface": "fieldturf",
"qbs": {
"home": "Sam Darnold",
"away": "Drake Maye"
},
"stadium": "Lumen Field"
},
"prediction": {
"model_version": "nfl_v1",
"fair_line": {
"home_margin": 6.83,
"spread": -6.83,
"total": 48.57,
"win_prob_home": 0.7283,
"win_prob_away": 0.2717,
"sigma_margin": 13.751
},
"market": {
"spread_line": 3.5,
"total_line": 44.5
},
"edge": {
"spread_points": 3.33,
"side": "home",
"total_points": 4.07,
"ou": "over"
},
"drivers": [
{
"feature": "d_def_sacks",
"points": 1.16
},
{
"feature": "d_def_takeaways",
"points": 1.03
},
… 3 more
]
},
"form_games_used": {
"home": 10,
"away": 10
},
"retrospective": false,
"recorded_to_track_record": false
}
}
GET /v1/nfl/performanceTrack record The 570-game holdout backtest and every live prediction scored against finals, misses included. Plain JSON, no key. Proof Freeno key
No parameters.
backtest_holdoutis the model's out-of-sample record: spread error and straight-up accuracy next to the market's.livefills in as the season plays: predictions scored, games pending.- Rendered at evioinc.com/performance.html.
curl "https://api.evioinc.com/v1/nfl/performance"
{
"model_version": "nfl_v1",
"trained_at": "2026-08-27",
"backtest_holdout": {
"games": 570,
"spread": {
"mae_model": 10.151,
"mae_market": 9.687,
"su_accuracy_model": 0.6344,
"su_accuracy_market": 0.6819,
"ats_breakeven": 0.5238
},
"total": {
"mae_model": 10.248,
"mae_market": 10.096
},
"moneyline": {
"games_priced": 570,
"brier_model_wp": 0.2209,
"brier_market_devig": 0.2059
}
},
"live": {
"predictions_scored": 0,
"games_pending": 1,
"status": "no_predictions_scored_yet"
}
}
Today's slate, the probables, and a disclosed win probability.
About fifteen games a day. The slate carries records and announced starters; the fair odds come from a rating model with every constant printed in the response (Pythagorean strength, log5, home edge, starter ERA), so there is nothing to take on faith.
- 21,782 games scored
- ~15 games a day
- source: MLB Stats API + Retrosheet
GET /v1/mlb/gamesDaily slate & probables The day's games with records, venue, state and announced probable starters. gamePk ids feed the fair odds. Data $0.001per call
| date | Slate date (UTC, YYYY-MM-DD). Default today. |
games[].gamePkis the MLB Stats API id that/v1/mlb/fair-oddsaccepts.probable_pitcheris the announced starter, the biggest daily information event in baseball pricing.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/mlb/games"
{
"results": {
"date": "2026-09-09",
"count": 1,
"games": [
{
"gamePk": 824638,
"game_date_utc": "2026-08-28T18:20:00Z",
"state": "Scheduled",
"double_header": "N",
"game_number": 1,
"venue": "Wrigley Field",
"home": {
"team_id": 112,
"name": "Chicago Cubs",
"record": "74-60",
"probable_pitcher": "Shota Imanaga",
"probable_pitcher_id": 684007
},
"away": {
"team_id": 113,
"name": "Cincinnati Reds",
"record": "63-71",
"probable_pitcher": "Rhett Lowder",
"probable_pitcher_id": 695076
}
}
]
}
}
GET /v1/mlb/fair-oddsFair odds Home and away win probability for one game, with the model's inputs exposed. Snapshotted against the venue's game market. Signal $0.01per call
| game_pkreq | StatsAPI gamePk; list them via /v1/mlb/games |
prediction.inputsprints every number the probability was built from: Pythagorean strength, games played, starter ERA, home edge.ledger.snapshots_recordedsays whether this call was captured beside the venue's price for public scoring.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/mlb/fair-odds?game_pk=824638"
{
"results": {
"game": {
"gamePk": 824638,
"state": "Scheduled",
"venue": "Wrigley Field",
"home": {
"name": "Chicago Cubs",
"record": "74-60",
"probable_pitcher": "Shota Imanaga"
},
"away": {
"name": "Cincinnati Reds",
"record": "63-71",
"probable_pitcher": "Rhett Lowder"
}
},
"prediction": {
"model_version": "mlb_log5_v0",
"win_prob_home": 0.6639,
"inputs": {
"home_pyth": 0.5628,
"away_pyth": 0.4735,
"home_games": 134,
"away_games": 134,
"home_starter_era": 3.12,
"away_starter_era": 5.13,
"home_edge": 0.035
},
"win_prob_away": 0.3361
},
"ledger": {
"snapshots_recorded": 0
}
}
}
GET /v1/mlb/performanceTrack record The historical record against closing moneylines, including the seasons that lose. Plain JSON, no key. Proof Freeno key
No parameters.
backtest.overallis the flat-stake record at historical closing prices: accuracy, Brier vs the market, units.- Retrosheet attribution is included in the response by license.
curl "https://api.evioinc.com/v1/mlb/performance"
{
"model_version": "mlb_log5_v0",
"backtest": {
"overall": {
"games": 12717,
"accuracy": 0.568,
"brier_model": 0.2428,
"brier_market": 0.2384,
"accuracy_market": 0.5889,
"bets": 8099,
"wins": 3715,
"losses": 4384,
"hit_rate": 0.4587,
"units": -197.26,
"roi": -0.0244
}
},
"attribution": "Game results and starting pitchers from Retrosheet. …"
}
The one-minute tape and the distribution it implies.
Crypto is not a live sold lane: the crypto-bars-1m dataset is catalogued and not exported, and Kalshi's BTC and ETH markets settle on CF Benchmarks. The endpoints below return BTC and ETH spot from a one-minute tape, realized volatility over the last 120 closes, and P(price above K) across a strike grid at any horizon from five minutes to a day. Scored against Kalshi's hourly settlements: 24 gradings per asset per day.
- 1-min BTC/ETH tape
- 120-close realized vol
- 5 min to 24 h horizons
- source: Coinbase candles
GET /v1/crypto/spotSpot + realized vol Current spot, one-hour sigma, the expected one-hour move in dollars, and tape staleness flags. The free menu for the signal. Data Freewith key
| asset | BTC or ETH. Default BTC. |
realized_vol.sigma_1his the one-hour log-return sigma from the last 120 one-minute closes.tape.staleflips when the last candle is old; check it before trusting the number.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/crypto/spot?asset=BTC"
{
"results": {
"asset": "BTC",
"spot": 88709.5,
"realized_vol": {
"sigma_1h": 0.0016,
"expected_move_1h_usd": 142.17,
"annualized_est": 0.15,
"window": "last 120 one-minute closes"
},
"tape": {
"source": "mock_fixture",
"last_candle_age_s": 20.0,
"stale": false
}
}
}
GET /v1/crypto/signalPrice distribution P(price above K) for a grid of strikes at your horizon, from the realized-vol baseline. The strike note maps Kalshi's “greater” contracts exactly. Signal $0.01per call
| asset | BTC or ETH. Default BTC. |
| horizon_minutes | 5 to 1440. Default 60. |
p_above[]is the strike grid: for each K, the probability spot is above K at the horizon.sigma_lnandexpected_move_1sd_usdare the same volatility in two units.- Scored 24 times a day per asset on the public scoreboard, the fastest-settling record we publish.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/crypto/signal?asset=BTC&horizon_minutes=60"
{
"results": {
"asset": "BTC",
"spot": 88709.5,
"horizon_minutes": 60,
"sigma_ln": 0.0016,
"expected_move_1sd_usd": 142.28,
"annualized_vol_est": 0.15,
"p_above": [
{
"strike": 88200.0,
"p_above": 0.9998
},
{
"strike": 88300.0,
"p_above": 0.9981
},
{
"strike": 88400.0,
"p_above": 0.9854
},
… 8 more
],
"market_note": "Kalshi hourly strikes are 'greater' contracts: a strike of 88799.99 pays YES when the settlement average exceeds it, use p_above at that strike."
}
}
Where the models disagree with the venues, and the receipts.
Every EVIO probability for a live venue contract is snapshotted beside the venue's price at that instant. The edge board shows the open disagreements; the settled rows and the scoreboard show how they turned out, misses included.
- 65,668 settled head-to-heads
- 738 open contracts tracked
- venue: Kalshi
GET /v1/markets/edgeEdge board Every live contract where a model disagrees with the market by 5 cents or more, largest first, with the side and the ask. Signal $0.01per call
No parameters.
edgeis model probability minus market probability;actionableflags 5 cents or more.- Every row is snapshotted, so after settlement it is scored in public whether we were right or wrong.
curl -H "Authorization: Bearer $EVIO_KEY" \ "https://api.evioinc.com/v1/markets/edge"
{
"results": {
"count": 2,
"actionable_count": 2,
"min_edge_threshold": 0.05,
"edges": [
{
"venue": "kalshi",
"market": "KXHIGHNY-26AUG28-B83.5",
"title": "83° to 84°",
"instrument": "wx:KNYC:2026-08-28:high",
"model_prob": 0.32,
"market_prob": 0.24,
"edge": 0.08,
"side": "yes",
"actionable": true,
"yes_ask": 0.26,
"close_time": "2026-08-29T05:00:00+00:00",
"model_version": "wx_sigma_v0"
},
… 1 more
]
}
}
GET /v1/markets/settledSettled rows Row-level settled head-to-heads: our probability, the venue's price, the venue's result. Paginated by close time. The same rows the scoreboard aggregates. Data Freeno key
| domain | weather, nfl, mlb or crypto. Default crypto. |
| limit | 1 to 500. Default 200. |
| before | ISO-8601 close time; page backwards from here (use next_before). |
model_probvsmarket_probvsresulton every row: this is the audit trail behind every Brier score we publish.- Page with
next_before; the selection rule (last pre-close capture per market) is identical to the scoreboard's. - It is also the dataset we recalibrate our own models on. Customers get the same one.
curl "https://api.evioinc.com/v1/markets/settled?domain=weather&limit=2"
{
"domain": "weather",
"count": 2,
"rows": [
{
"venue": "kalshi",
"series": "KXHIGHLAX",
"market_ticker": "KXHIGHLAX-26SEP08-B84.5",
"title": "84° to 85°",
"instrument": "wx:KLAX:2026-09-08:high",
"strike_type": "between",
"floor_strike": 84.0,
"cap_strike": 85.0,
"yes_bid": 0.05,
"yes_ask": 0.07,
"no_ask": 0.95,
"market_prob": 0.06,
"model_prob": 0.3082,
"model_version": "wx_sigma_v0",
"close_time": "2026-09-09T08:00:00+00:00",
"captured_at": "2026-09-08T18:24:45+00:00",
"result": "no"
},
{
"venue": "kalshi",
"series": "KXHIGHLAX",
"market_ticker": "KXHIGHLAX-26SEP08-B86.5",
"title": "86° to 87°",
"instrument": "wx:KLAX:2026-09-08:high",
"strike_type": "between",
"floor_strike": 86.0,
"cap_strike": 87.0,
"yes_bid": 0.13,
"yes_ask": 0.15,
"no_ask": 0.87,
"market_prob": 0.14,
"model_prob": 0.4071,
"model_version": "wx_sigma_v0",
"close_time": "2026-09-09T08:00:00+00:00",
"captured_at": "2026-09-08T18:24:45+00:00",
"result": "no"
}
],
"next_before": "2026-09-09T08:00:00+00:00",
"methodology": "Last pre-close capture per market; the venue's own result is the outcome. …"
}
GET /v1/markets/performanceScoreboard Brier vs the market by lane, the contested subset, the hypothetical flat-stake ledger with fees, and recent calls with receipts. Proof Freeno key
No parameters.
domains.<lane>.brier_modelvsbrier_market: lower is better. Where the market wins, we publish that too.contestedrestricts to strikes the venue priced between 5% and 95%, where being right is not free.hypotheticalis a flat $1 ledger at captured asks with Kalshi fees applied. No orders are placed.
curl "https://api.evioinc.com/v1/markets/performance"
{
"as_of": "2026-09-09T16:54:29+00:00",
"overall": {
"markets_scored": 65668,
"brier_model": 0.0068,
"brier_market": 0.0097,
"model_beats_market": true
},
"contested": {
"markets_scored": 1991,
"brier_model": 0.1766,
"brier_market": 0.1472,
"model_beats_market": false
},
"domains": {
"weather": {
"markets_scored": 702,
"brier_model": 0.1496,
"brier_market": 0.0769
},
"nfl": {
"markets_scored": 0
},
"mlb": {
"markets_scored": 270,
"brier_model": 0.2476,
"brier_market": 0.1024
},
"crypto": {
"markets_scored": 64696,
"brier_model": 0.0043,
"brier_market": 0.0086
}
},
"hypothetical": {
"trades": 1609,
"wins": 395,
"losses": 1214,
"pnl_after_fees": -76.67,
"roi_after_fees": -0.1679
},
"live": {
"open_tracked": 738,
"awaiting_settlement": 778
}
}
Every keyed call comes back the same way.
The data sits in results. Around it, the same five fields on every endpoint, so an agent can read the reasoning, follow the citation to the source document, weigh the confidence, and see the price it paid without a second call.
_reasoningThe steps that produced the answer, in order._citationsSource and locator for each step: the NWS product id, the tape, the registry row._confidenceA score and a label: settlement for recorded values, reasoned for model output._linksRelated endpoints for the same entity, ready to call._meta.priceList price and what was actually charged, on every response.
The three Proof endpoints and the settled rows are plain JSON with no envelope and no key. Envelope reference →
{
"results": {
"…": "the data"
},
"_reasoning": [
"how the answer was built, step by step"
],
"_citations": [
{
"step": 1,
"source": "nws_climatological_report",
"locator": "…/202601041607-KOKX-CDUS41-CLINYC"
}
],
"_confidence": {
"score": 0.97,
"label": "settlement"
},
"_links": [
{
"id": "station:KNYC",
"endpoints": [
"/v1/weather/settlement/history"
]
}
],
"_meta": {
"request_id": "req_…",
"data_freshness": "live",
"price": {
"display": "$0.0010",
"charged_micros": 1000
}
}
}
In development · 1 filings primitive
SEC filing summaries. This endpoint returns deterministic mock JSON in its final response shape. Not part of the live catalogue above. The XBRL facts behind it export today as the sec-facts dataset.
SEC filing summaries. This endpoint returns deterministic mock JSON in its final response shape. Not part of the live catalogue above. The XBRL facts behind it export today as the sec-facts dataset.
Earlier versions of this catalogue listed /v1/options/unusual, /v1/factor/score, /v1/backtest/run, /v1/jobs/{job_id}, /v1/equity/research, /v1/regime/classify, /v1/news/sentiment and /v1/portfolio/risk as products in development. They are not offered: requests answer 410 not_offered, they are not part of the catalogue, carry no price, and nothing built on them is supported.
Fund a wallet, get a key, start calling.
Prepaid credits, priced per call, no seats. The free endpoints need nothing at all: pull the settled rows or the scoreboard right now and check our work before you spend a cent.
