Data catalogue · three live lanes

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.

3live data lanes
$0for a failed call
6free endpoints
$0.001lowest paid call
65,668head-to-heads settled in public
Data

A record. The recorded value, the schedule, the results. Cleaned and joined; nothing modeled. Yours to build on. From $0.001 per call.

Signal

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.

Proof

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.

Lane 01 · Weather

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)
702 settled · Brier 0.150 vs 0.077 market →
5 endpoints · 1 free
MethodEndpointWhat you getKindPrice
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
Parameters

No parameters.

What to read
  • settles.kalshi_high_series and kalshi_low_series are 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.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/weather/stations"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
stationreqRegistry station id, e.g. KNYC
dayClimate day (YYYY-MM-DD). Omit for the latest official report.
What to read
  • settlement.high_f / low_f are the report values verbatim; no modeling is applied.
  • nws_product_id is the exact NWS text product, so every value is auditable back to the source.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/weather/settlement?station=KNYC"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
stationreqRegistry station id, e.g. KNYC
startreqFirst climate day (YYYY-MM-DD)
endreqLast climate day, inclusive (YYYY-MM-DD)
What to read
  • days[] carries one row per climate day in the same shape as the single-day endpoint.
  • coverage.first / last tell you how far back the store goes for that station before you page.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/weather/settlement/history?station=KNYC&start=2026-08-01&end=2026-08-31"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
latreqLatitude in decimal degrees, e.g. 40.7789
lonreqLongitude in decimal degrees, e.g. -73.9692
hoursForecast window in hours (12 to 168). Default 48.
hourlyHourly granularity instead of 12-hour periods.
What to read
  • periods[] is the NWS forecast reduced to the fields a decision needs: temperature, precip chance, wind, summary.
  • alerts[] and risk_flags[] surface active NWS alerts without a second call.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/weather/forecast?lat=40.7789&lon=-73.9692&hours=48"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
stationreqRegistry station id, e.g. KNYC
targetTarget climate day (YYYY-MM-DD). Default: today at the station. Up to 6 days ahead.
What to read
  • 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 from ge[T+1].
  • uncertainty.sigma_f widens with lead_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.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/weather/signal?station=KNYC&target=2026-09-12"
Example response · excerptshape exact, values illustrative
{
  "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)"
    ]
  }
}
Nothing in this lane matches the current filter.
Lane 02 · NFL

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
570-game holdout · spread error 10.15 vs 9.69 market →
6 endpoints · 1 free
MethodEndpointWhat you getKindPrice
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
Parameters
season1999 to current. Default: current season.
week1 to 22 (regular season + playoffs).
teamTeam code, e.g. SEA
What to read
  • game_id is the nflverse id (2026_01_NE_SEA) that /v1/nfl/fair-line accepts.
  • market carries the consensus spread, total and moneylines; result and scores fill in after the final.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/nfl/games?season=2026&week=1"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
playerreqQB name (partial ok) or GSIS id
season2002 to current.
lastMax recent weeks returned (1 to 60). Default 20.
What to read
  • aggregates sums the returned weeks; weeks[] is the per-game line with passing_epa and cpoe.
  • Lookup by name or GSIS id; an ambiguous name returns candidates instead of a guess.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/nfl/qb?player=Maye&last=10"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
teamreqTeam code, e.g. SEA
seasonDefaults to the current season; prior seasons must be asked for explicitly.
week1 to 22.
What to read
  • report is the official in-season practice/game-status report; reserve_list is the year-round IR/PUP/suspension list.
  • A 2026 answer is built only from 2026 rows, so an old injury can never appear current.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/nfl/injuries?team=SEA"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
season2011 to current. Default: latest loaded season.
What to read
  • 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.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/nfl/top100?season=2025"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
game_idnflverse id, e.g. 2026_01_NE_SEA
teamTeam code: resolves that team's next unplayed game
opponentNarrow the team lookup to this opponent
What to read
  • fair_line.spread is the model's line from the home side; edge.spread_points is the gap to the posted line and side says 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.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/nfl/fair-line?game_id=2026_01_NE_SEA"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters

No parameters.

What to read
  • backtest_holdout is the model's out-of-sample record: spread error and straight-up accuracy next to the market's.
  • live fills in as the season plays: predictions scored, games pending.
  • Rendered at evioinc.com/performance.html.
Request
curl "https://api.evioinc.com/v1/nfl/performance"
Live response · excerptsnapshot 2026-09-09 · refreshes when opened
{
  "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"
  }
}
Nothing in this lane matches the current filter.
Lane 03 · MLB

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
270 settled · Brier 0.248 vs 0.102 market →
3 endpoints · 1 free
MethodEndpointWhat you getKindPrice
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
Parameters
dateSlate date (UTC, YYYY-MM-DD). Default today.
What to read
  • games[].gamePk is the MLB Stats API id that /v1/mlb/fair-odds accepts.
  • probable_pitcher is the announced starter, the biggest daily information event in baseball pricing.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/mlb/games"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
game_pkreqStatsAPI gamePk; list them via /v1/mlb/games
What to read
  • prediction.inputs prints every number the probability was built from: Pythagorean strength, games played, starter ERA, home edge.
  • ledger.snapshots_recorded says whether this call was captured beside the venue's price for public scoring.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/mlb/fair-odds?game_pk=824638"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters

No parameters.

What to read
  • backtest.overall is the flat-stake record at historical closing prices: accuracy, Brier vs the market, units.
  • Retrosheet attribution is included in the response by license.
Request
curl "https://api.evioinc.com/v1/mlb/performance"
Live response · excerptsnapshot 2026-09-09 · refreshes when opened
{
  "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. …"
}
Nothing in this lane matches the current filter.
Lane 04 · Crypto

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
64,696 settled · Brier 0.004 vs 0.009 market →
2 endpoints · 1 free
MethodEndpointWhat you getKindPrice
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
Parameters
assetBTC or ETH. Default BTC.
What to read
  • realized_vol.sigma_1h is the one-hour log-return sigma from the last 120 one-minute closes.
  • tape.stale flips when the last candle is old; check it before trusting the number.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/crypto/spot?asset=BTC"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
assetBTC or ETH. Default BTC.
horizon_minutes5 to 1440. Default 60.
What to read
  • p_above[] is the strike grid: for each K, the probability spot is above K at the horizon.
  • sigma_ln and expected_move_1sd_usd are the same volatility in two units.
  • Scored 24 times a day per asset on the public scoreboard, the fastest-settling record we publish.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/crypto/signal?asset=BTC&horizon_minutes=60"
Example response · excerptshape exact, values illustrative
{
  "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."
  }
}
Nothing in this lane matches the current filter.
Lane 05 · Markets

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
as of 2026-09-09 · refreshes on load
3 endpoints · 2 free
MethodEndpointWhat you getKindPrice
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
Parameters

No parameters.

What to read
  • edge is model probability minus market probability; actionable flags 5 cents or more.
  • Every row is snapshotted, so after settlement it is scored in public whether we were right or wrong.
Request
curl -H "Authorization: Bearer $EVIO_KEY" \
  "https://api.evioinc.com/v1/markets/edge"
Example response · excerptshape exact, values illustrative
{
  "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
Parameters
domainweather, nfl, mlb or crypto. Default crypto.
limit1 to 500. Default 200.
beforeISO-8601 close time; page backwards from here (use next_before).
What to read
  • model_prob vs market_prob vs result on 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.
Request
curl "https://api.evioinc.com/v1/markets/settled?domain=weather&limit=2"
Live response · excerptsnapshot 2026-09-09 · refreshes when opened
{
  "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
Parameters

No parameters.

What to read
  • domains.<lane>.brier_model vs brier_market: lower is better. Where the market wins, we publish that too.
  • contested restricts to strikes the venue priced between 5% and 95%, where being right is not free.
  • hypothetical is a flat $1 ledger at captured asks with Kalshi fees applied. No orders are placed.
Request
curl "https://api.evioinc.com/v1/markets/performance"
Live response · excerptsnapshot 2026-09-09 · refreshes when opened
{
  "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
  }
}
Nothing in this lane matches the current filter.
One response shape

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 →

Envelope
{
  "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.

GET /v1/sec/filingSEC filing summary Structured summary keyed by accession number, with a diff against the prior filing of the same form. $0.005list Docs →
Not offered

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.