{"name":"VotePredictor API","version":"v1","updated":"2026-08-26","license":"Free to use with attribution to votepredictor.com.","endpoints":[{"path":"/api/v1/race/{race_id}","description":"One race: forecast, provenance, movement, candidates.","example":"/api/v1/race/2026_SEN_OH"},{"path":"/api/v1/chamber/{senate|house}","description":"Control probability, every seat, biggest movers.","example":"/api/v1/chamber/senate"},{"path":"/api/v1/member/{bioguide_id}","description":"A member of Congress, their ideology, reported net worth and 2026 race.","example":"/api/v1/member/P000197"},{"path":"/api/v1/ratings?office=ALL","description":"Difficulty-adjusted accuracy for every forecaster, model, market and pollster.","example":"/api/v1/ratings?office=SEN"}],"race_ids":{"format":"{year}_{OFFICE}_{location}","count":491,"examples":["2026_SEN_OH","2026_GOV_TX","2026_HOUSE_CA-12"]},"conventions":{"probabilities":"p_dem_win is the Democratic win probability, clamped to [0.01, 0.99]. An election that has not happened is never certain.","source":"'polls' where a poll-driven forecast exists, otherwise 'fundamentals' (state or district lean, incumbency, national environment). Polls always take precedence.","no_forecast":"A race whose candidate has left the ballot returns forecast: null with a reason. The stored probability describes a matchup that no longer exists, so it is withheld here exactly as it is on the site.","movement":"Change in win probability in percentage POINTS since the first snapshot this cycle, not a percentage change."},"site":"https://votepredictor.com/","methodology":"https://votepredictor.com/methodology","track_record":"https://votepredictor.com/ratings"}