Weekly and full-season NFL fantasy projections from the JerryGM model, scored under any league's rules — with the stat line behind every number, the model's reasoning, and ids for ESPN, Sleeper, MFL, Yahoo, CBS and Sportradar on every row. One JSON call.
{
"season": 2026, "week": 3, "scoring": "half", "source": "jgm_baseline",
"players": [{
"name": "Josh Allen", "position": "QB", "team": "BUF",
"projectedPPG": 20.06, "seasonTotal": 341.0,
"statLine": { "passAtt": 33.1, "passYds": 249.8, "passTds": 1.9, "passInts": 0.7,
"rushAtt": 6.8, "rushYds": 38.2, "rushTds": 0.4, … },
"injuryStatus": null,
"breakdown": { "trailingPPG": 21.4, "positionMean": 15.2, "shrinkWeight": 0.75 },
"ids": { "gsis": "00-0034857", "espn": "3918298", "sleeper": "4984",
"mfl": "13593", "yahoo": "30977", "cbs": "2071510", … }
}],
"attribution": "JerryGM projections. Derived from openly licensed nflverse data."
}
Most projection feeds hand you one scoring format and a point total. This one hands you the box score, the reasoning, and the join keys — under your rules.
Pass your league's per-stat weights as JSON — 6-point passing TDs, TE premium, half-PPR, whatever the rulebook says — and every number comes back scored that way. Points per first down for PPFD leagues, and points per long play — +1 for each 40+ yard completion, +2 for each 40+ yard touchdown, at any length you name — counted from play-by-play. Threshold bonuses too: +5 for 300 passing yards, +3 for 100 rushing, at any threshold you name, priced by each player's real chance of clearing it. Presets for PPR, half and standard if you just want to start.
Every row carries the projected per-game box score behind its points. Score statLine under your own weights and you reproduce projectedPPG exactly — so you can use raw stats, points, or both.
breakdown shows the recency-weighted rate, the positional prior and how much the projection leans on each. The cofactor source adds named adjustments in plain English: TD regression, Vegas implied totals, depth-chart slot.
Joining is normally the hardest part. Every row carries gsis, ESPN, Sleeper, MFL, Yahoo, CBS and Sportradar ids, and GET /players hands you the whole pool's crosswalk in one call, free on every plan — join once, cache ids.gsis, and never match a name again.
Ask for season=2025&week=10 and you get what the model would have said before that week, using only what was known then. That is how we backtest it, and it is a backtesting product on its own.
Draft-capital priors fitted from the last four rookie classes, priced under your scoring and flagged as such — then replaced by real usage the moment a rookie plays a game.
No sales call, no contract. A JerryGM account is the API account.
Sign in to JerryGM, open Settings → System → JerryGM API, and create a key. It is shown once. Revoking it there cuts that app off within a minute.
Put the key in a header and ask for anyone by name or by the id you already have.
curl -H "X-API-Key: jgmk_…" \ "https://api.jerrygm.com/api/ext/v1/projections?names=Josh%20Allen&scoring=half"
Cache ids.gsis from the first response and pass ids= from then on. Send your league's weights in scoring=; GET /sources returns the presets to start from. Omit week for the season number.
Monthly or annual — annual is ten months for twelve. No overage billing: past your allowance, calls return 429 until the month rolls over.
Self-serve plans carry no SLA. QB, RB, WR, TE, kickers and team defenses (kicking data from the 2025 season on). Canceling downgrades your keys to Free limits; it never revokes them, so nothing you built stops mid-season. Need more than Pro? Email us.
attribution string that comes back with every
response wherever the numbers appear. Pro carries a commercial redistribution license —
you may show JerryGM-derived numbers inside your own paid product, attribution waived. Reselling
the raw feed itself is not covered by any self-serve plan.
ids
or names returns the whole projected pool on Starter and Pro — still one call.
On Free that same call returns the top 100 by projected points, with truncated: true
and the full total so nothing is hidden, and a single request may name up to 25
players by id or name (Starter and Pro have no per-request limit). GET /players lists the
whole pool's ids on every plan. Per-player calls are what add up. Every response carries
X-Quota-Remaining and X-Quota-Reset, and you get an email at 80%.
/v1 path. A breaking change gets a new version path and at least 90 days'
notice by email to every active key holder, with the old path kept alive through that window.
The console builds the request, shows the JSON and hands you the cURL. Bring a free key.