Nerf Radar API for agents
Structured, source-linked patch data for AI agents, game-assistant bots and Discord bots. Discovery endpoints are free; full patch data and cross-patch queries are paid per call with x402 (HTTP 402 with USDC). No signup, no API key.
Live payments: paid endpoints accept real USDC on Base mainnet (eip155:8453). Payments settle on-chain through the Coinbase CDP x402 facilitator.
Endpoints
| Endpoint | Price | Returns |
|---|---|---|
GET /api/games | free | Supported games, publishers, release status (beta, early access), official patch-notes URLs, patch and change counts, and the newest and oldest tracked patch. |
GET /api/patches?game=&limit= | free | Latest patches, newest first: id, version, title, publish date, official URL, TL;DR and counts by change type. |
GET /api/patch/:id | $0.01 | Full structured patch: TL;DR, who it matters to, and every change with change_type, before and after, a summary and the verbatim source_text. |
GET /api/changes?target=&game=&type=&limit= | $0.02 | Change history: every recorded change to a target (class, ability, champion, agent, hero, weapon, item or system) across up to the 10 most recent official patches per game. Target-name matches come first, then other mentions, each newest first; each result carries its patch and official URL, and a history block lists the patches and dates per target. Returns up to 200 results by default (limit up to 500). |
Games
| Game | game slug | Status | Example target |
|---|---|---|---|
| World of Warcraft: Forever | world-of-warcraft-forever | Beta | Druid, Warrior |
| Counter-Strike 2 | counter-strike-2 | Released | Rush, Ancient |
| League of Legends | league-of-legends | Released | Bel'Veth, Locke |
| VALORANT | valorant | Released | Bucky, Judge |
| Deadlock | deadlock | Released | Celeste, Viscous |
| WARDOGS | wardogs | Early Access | Z20 Lakota, CIWS |
Beta patches carry "channel": "beta" in the API; released builds omit the field. Coverage goes back up to 10 official updates per game (hotfixes and minor updates count when the publisher lists them separately); GET /api/games gives each game's patch count and date range. On the site, every target changed in more than one patch has a change-history page, for example K'Sante.
How payment works
- Call a paid endpoint. You get
402 Payment Requiredwith a base64PAYMENT-REQUIREDheader (x402 v2; the JSON body mirrors it): schemeexact, networkeip155:8453(Base), USDC amount in 6-decimal units (10000= $0.01),payTo. - Sign a USDC transfer authorization with any x402 client (for example
@x402/fetch) and retry with thePAYMENT-SIGNATUREheader. - Get JSON plus a
PAYMENT-RESPONSEsettlement header. Unknown ids return 404 before any payment is requested.
curl -i https://nerfradar.com/api/patch/lol-26-20
# HTTP/1.1 402 Payment Required
# PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi…
# TypeScript (x402 client with a Base wallet that holds USDC)
import { wrapFetchWithPayment } from "@x402/fetch";
const pay = wrapFetchWithPayment(fetch, client); // client = x402Client with an EVM signer
const patch = await (await pay("https://nerfradar.com/api/patch/lol-26-20")).json();
const ksante = await (await pay("https://nerfradar.com/api/changes?game=league-of-legends&target=K'Sante")).json();
const druid = await (await pay("https://nerfradar.com/api/changes?game=world-of-warcraft-forever&target=Druid")).json();
const wowBeta = await (await pay("https://nerfradar.com/api/patch/wowf-2026-10-06")).json();
Change object
{
"id": "lol-26-20-012",
"target": "K'Sante",
"category": "champion",
"scope": "Summoner's Rift",
"ability": "W - Path Maker",
"stat": "Mana Cost",
"change_type": "nerf",
"label_basis": "numbers",
"before": "40 / 45 / 50 / 55 / 60",
"after": "45 / 50 / 55 / 60 / 65",
"summary": "Mana cost on K'Sante's Path Maker (W) increases from 40 / 45 / 50 / 55 / 60 to 45 / 50 / 55 / 60 / 65.",
"source_text": "Mana Cost: 40 / 45 / 50 / 55 / 60 → 45 / 50 / 55 / 60 / 65"
}
Categories: champion, agent, hero, weapon, item, augment, map, mode, system, client, progression, competitive, class, race, dungeon, quest, profession, pvp. Change types: buff, nerf, adjust, new, removed, fix. label_basis says why a change carries its label: numbers, publisher (the notes say so; see label_note), mechanics (see label_note), explicit (the notes call it new, removed or fixed) or neutral.
Discovery: paid routes carry x402 Bazaar discovery metadata (an input schema and an output example) in their 402 responses so agent marketplaces can index them. Payment address on Base: 0x76f1E6ecBBebd59727F448099D306Ec2ed4906Ea.