the API lives at api.regressionincoming.fyi. it serves structured JSON for every player in the rankings.

payments use the x402 protocol: HTTP 402, USDC on Base, no account required. an agent that understands x402 can hit the endpoint, pay inline, and receive data in a single round-trip.


pricing

three tiers. no subscription required.

tier cost what you get
free $0 QB1/RB1/WR1/TE1 snapshot, rate-limited
full list $1.00 USDC/call complete 412-player rankings or full draft board
single player $0.10 USDC/call one player lookup
14-day draft bundle $3.00 USDC best value: unlimited calls for 14 days + the full draft kit ZIP

the bundle is the one most people want. one $3 payment, no per-call math, and it unlocks the draft kit: both VOR boards (half-PPR + full-PPR), the VOR-vs-ADP draft playbook, and an offline draft-night companion tool you can drive yourself or hand to an AI assistant to call your picks live.

payment is USDC on Base via x402 — no account, no registration, no subscription.


free endpoint

no payment, no wallet, rate-limited to 30 requests/minute per IP.

GET https://api.regressionincoming.fyi/v1/free/rankings/top1

returns the top-ranked player at each position (QB1, RB1, WR1, TE1) with projected points and confidence score. use this to verify the API is alive before paying.


paid endpoints

full-list endpoints cost $1.00 per call. single-player lookups cost $0.10 per call. all paid via USDC on Base with x402.

full rankings — $1.00

GET https://api.regressionincoming.fyi/v1/rankings/preseason
  • returns: all 412 players with full projection fields by default — one call gets you the whole board
  • query parameters (all optional):
  • position=QB|RB|WR|TE — filter by position
  • limit=N — cap the response to the top N. omit it to get the full list (the default)
  • min_confidence=0.65 — filter by minimum confidence score

single-player lookup — $0.10

GET https://api.regressionincoming.fyi/v1/rankings/preseason/{player_id}
  • returns: single player row by nflreadpy player_id

half-PPR draft board — $1.00

GET https://api.regressionincoming.fyi/v1/draft-board/half-ppr
  • returns: VOR-based draft board for half-PPR scoring, all positions ordered by draft value

single-player draft slot — $0.10

GET https://api.regressionincoming.fyi/v1/draft-board/half-ppr/{player_id}
  • returns: single player draft slot

14-day draft bundle — $3.00 (best value)

one payment, your whole draft window covered. this is the tier built for actually drafting, not just sampling the data.

POST https://api.regressionincoming.fyi/v1/bundle/purchase
  • cost: $3.00, USDC on Base via x402, paid once — cheaper than three full-list calls
  • returns: JWT bearer token valid for 14 days + the draft kit ZIP
  • covers: every paid endpoint, unlimited calls for 14 days, through the weekly refreshes leading into your draft

pass the token as a bearer header on subsequent calls:

Authorization: Bearer <your-token>

download the draft kit at any time during the 14-day window:

GET https://api.regressionincoming.fyi/v1/bundle/draft_kit.zip

the kit is the part people pay for. it contains:

  • both VOR draft boards as CSVs — half-PPR and full-PPR
  • the VOR-vs-ADP draft playbook: slot-by-slot game plans that translate the model into picks (high rank does not mean draft early)
  • an offline draft-night companion tool — feed it picks as they happen and it recommends your next pick by rolling out the rest of the draft. run it yourself, or hand it to an AI assistant and let it call your board live, turn by turn. no internet needed once you have it.

response format

every rankings response returns a players array:

{
  "data_version": "2026-preseason-v3",
  "generated_at": "2026-06-01T12:00:00Z",
  "players": [
    {
      "player_id": "00-0034796",
      "name": "Jaxson Dart",
      "team": "NYG",
      "position": "QB",
      "rank": 1,
      "proj_fp_per_game": 18.4,
      "proj_season_fp": 294.4,
      "confidence": 0.70,
      "age": 22,
      "age_multiplier": 1.12,
      "sos_adjustment": 0.98,
      "depth_rank": 1
    }
  ]
}

x402 payment flow

the x402 protocol works in two steps:

step 1: call the endpoint without payment. you receive a 402 response with payment details:

{
  "x402Version": 1,
  "accepts": [{
    "scheme": "exact",
    "network": "base-mainnet",
    "maxAmountRequired": "1000000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "<wallet-address>",
    "extra": { "name": "USDC", "decimals": 6 }
  }]
}

step 2: attach payment in the X-PAYMENT header and retry:

from x402 import facilitate_payment

response = requests.get(url)
if response.status_code == 402:
    payment = facilitate_payment(response)
    response = requests.get(url, headers={"X-PAYMENT": payment})

agents using coinbase's x402 client library handle both steps automatically.


what "x402" means for humans

you need a wallet that holds USDC on Base. the most common options:

  • coinbase wallet (easiest for Base)
  • metamask with Base network added
  • any EVM-compatible wallet that supports Base mainnet

you don't need an exchange account. you don't need KYC. you just need USDC on Base.

if you'd rather not deal with crypto: the Substack newsletter is free and covers all the same rankings in readable form.


discovery manifest

machine-readable endpoint listing for agents:

GET https://api.regressionincoming.fyi/v1/discovery/resources

openapi spec

GET https://api.regressionincoming.fyi/openapi.json

interactive docs at https://api.regressionincoming.fyi/docs.


health check

GET https://api.regressionincoming.fyi/v1/health

returns current API version, data version, and model last-updated timestamp. no payment required.


rate limits

  • free endpoint: 30 req/min/IP
  • paid endpoints: 60 req/min per paying address
  • bundle (JWT): 120 req/min

support

if something's broken: x.com/regression_inc. best-effort uptime, no SLA.