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
7-day bundle $3.00 USDC unlimited calls + draft kit ZIP

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
  • query parameters:
  • position=QB|RB|WR|TE — filter by position
  • limit=N — top N players (max 412)
  • 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

7-day bundle — $3.00

one payment, draft week covered.

POST https://api.regressionincoming.fyi/v1/bundle/purchase
  • cost: $3.00, USDC on Base via x402, paid once
  • returns: JWT bearer token valid for 7 days + draft kit ZIP URL
  • covers: all paid endpoints, unlimited calls for 7 days

pass the token as a bearer header on subsequent calls:

Authorization: Bearer <your-token>

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

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

returns rankings + draft board CSVs + methodology README in a ZIP.


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.