What changes, and what never does.
The shapes only ever gain fields. Nothing is renamed and nothing is removed, so code you write today keeps working.
The promise
A field you read today will be there tomorrow, with the same name, the same meaning and the same type. A value we can answer with today is a value we can still answer with later. A field that is always sent keeps being always sent.
What we do is add. New fields appear, and new words appear in lists of words. So read past a field you do not recognise, and treat a word you do not know as something to skip rather than something to fail on. A consumer that does both never breaks.
A test in this codebase compares the published document with the last approved one and fails on any removal or retyping. The promise is not a policy somebody remembers; it is a build that goes red.
Every change, dated
| Date | What changed |
|---|---|
| 2026-09-22 | First release. |
| 2026-09-23 | Season totals for a team, and one player's season, previous seasons and career. |
| 2026-09-23 | A team answer carries the link to its logo, logoUrl. |
| 2026-09-25 | A play carries where the ball went, hitLocation. In the event log, a game start can carry ordersOpen, a move of fielders can carry tenthFielder, and a placed runner can be on first, second or third base. |
| 2026-09-28 | A new outcome for a turn at bat, obstruction. |
| 2026-09-28 | lob changed its meaning. A batter is charged the runners left on base only when he makes an out. |
| 2026-09-28 | On a player, previous is now always an empty list and career is always null. A key reads the season of its own team only. |
| 2026-10-05 | hitLocation.angle now runs from -180 to 180, so that a foul ball behind home plate has a place. |
| 2026-10-07 | The event log reference now lists the fielding detail and the hit position that an entry can carry: fielding, hitLocation, errorBy, wouldHaveBeenOut, and battedBall on a foul. |
| 2026-10-07 | The rule for a rewind in the event log changed. A correction to an entry that the rewind keeps is kept, even when the correction was recorded before the rewind. |
| 2026-10-07 | The event log reference now says what happens when a coach starts a game over: every entry is removed, the lineups come back as new entries, and sequence begins again at 0. The API always worked this way. |
| 2026-10-23 | Earned runs (er) are now worked out by rebuilding the half-inning as it would have gone with no error and no passed ball (OBR 9.16). A finished game's er can go up or down from what it showed before. In a game still being played, a run can be in r before it is in er: er can rise on a later play in the same half-inning, once the rebuilt inning decides the run. |
| 2026-10-29 | The Data API is included with every plan: Base 1 team, Standard 3, Pro 6. Nothing is sold apart from the plan. The shared limit for all the keys on one account rose from 600 to 720 requests a minute. The sentences of api-lapsed and no-api-seat changed; the codes did not. |
If we ever have to break something
We would open a second address beside this one and leave this one answering. A change that breaks your code will not arrive at an address you already use.