api reference
endpoints, pricing, and how to pay without an account
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 positionlimit=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.