Build on x402Pulse

Skill-ranked Polymarket data your agent or app can buy one call at a time. No API key, no account: just HTTP and a wallet with a little USDC.

Quick start

Every paid endpoint works the same way:

  1. Call it. Without a payment you get 402 Payment Required and the price. This is free.
  2. Pay. Your x402 client signs a USDC payment for that exact amount. Signing costs no gas.
  3. Get the data. The client repeats the call with the signature and receives JSON.

Check a price right now, for free:

curl -i "https://www.x402pulse.dev/v1/top-traders?period=month"

Payments are in USDC on Base (eip155:8453). You only pay for successful responses: any error is never charged.

How it works

What happens, step by step, every time your agent calls x402Pulse.

  1. Checks

    Your request arrives. Bad parameters get a free 400, and more than 60 calls a minute gets a free 429. You're never asked to pay for a request that can't succeed.

  2. Price

    With no payment attached, x402Pulse answers 402 Payment Required. The PAYMENT-REQUIRED header says how much, in which token, on which network, and to which address.

  3. Verify

    Your client signs a USDC authorization and resends the request. x402Pulse asks its facilitator (Coinbase) to confirm the signature, amount and network are valid. No money moves yet.

  4. Answer

    x402Pulse builds the answer from Polymarket's public APIs (trades, leaderboards, positions, holders, markets), scores the wallets involved, and reuses recent results from its cache.

  5. Settle

    Only if the answer succeeded, the facilitator settles the payment on the blockchain: USDC moves from your wallet to x402Pulse. If anything failed, it never settles.

  6. Receive

    You get JSON with the data, plus a PAYMENT-RESPONSE header containing the receipt and transaction hash.

What you need

Any program that can make HTTP requests, an x402 client library (or your own code), and a wallet with a little USDC on Base.

What you don't need

No API key, no account, no subscription, no sign-up, and no ETH for gas. The facilitator pays the network fee.

Start from a template

Want a working agent right away? Our open-source stock-research agent buys live data per call: latest quarter, insider trades and important SEC filings for any U.S. stock, about 2 cents a run. It comes in two versions: a 20-line script, and a Claude-powered agent that decides what to buy and answers in plain English. Payments are limited to x402Pulse's address, USDC on Base, and a spending cap you set.

git clone https://github.com/TheProject2-0/x402pulse-stock-agent.git
cd x402pulse-stock-agent && npm install
cp .env.example .env   # add a small test wallet key (USDC on Base) or a Pro key
npm run brief -- NVDA

Source and instructions: github.com/TheProject2-0/x402pulse-stock-agent (MIT license).

Your first paid call

From an empty folder to a paid answer in about ten minutes. Follow the steps in order and copy the commands exactly.

  1. Check Node.js

    You need Node.js 20 or newer. Run this; it should print v20 or higher. If not, install it from nodejs.org.

    node -v
  2. Create a project

    mkdir my-pulse-agent && cd my-pulse-agent
    npm init -y
    npm pkg set type=module
    npm install @x402/fetch @x402/evm viem
  3. Create a test wallet

    This makes a brand-new wallet just for your agent and prints its private key and address.

    node -e "import('viem/accounts').then(({generatePrivateKey,privateKeyToAccount})=>{const k=generatePrivateKey();console.log('private key:',k);console.log('address:    ',privateKeyToAccount(k).address)})"

    Save the private key somewhere safe and never share it or paste it into chats, screenshots or GitHub. Anyone with it can spend the wallet's money. Use this wallet only for your agent, with small amounts.

  4. Add a little USDC

    Send a few dollars of USDC on Base to the address from step 3. Check the network says Base before sending. You don't need any ETH.

  5. Create the agent

    Create a file named agent.mjs in the folder, paste this in, and save it.

    import { x402Client, wrapFetchWithPayment, x402HTTPClient } from "@x402/fetch";
    import { registerExactEvmScheme } from "@x402/evm/exact/client";
    import { privateKeyToAccount } from "viem/accounts";
    
    const API = "https://www.x402pulse.dev";
    const MAX_PRICE = 0.5; // never pay more than $0.50 for one call
    
    // 1. Load the wallet from the AGENT_KEY setting (never write the key in this file).
    const account = privateKeyToAccount(process.env.AGENT_KEY);
    const client = new x402Client();
    registerExactEvmScheme(client, { signer: account });
    
    // 2. A guardrail: see each price and refuse anything above MAX_PRICE.
    client.onBeforePaymentCreation(async ({ selectedRequirements }) => {
      const price = Number(selectedRequirements.amount) / 1e6;
      console.log("Price:", price, "USDC");
      if (price > MAX_PRICE) return { abort: true, reason: "Too expensive" };
    });
    
    // 3. A fetch that pays automatically when it receives a 402.
    const pay = wrapFetchWithPayment(fetch, client);
    
    // 4. Ask who the most skilled traders are this month.
    const res = await pay(API + "/v1/top-traders?period=month&limit=5");
    console.log("Status:", res.status);
    const body = await res.json();
    
    if (res.ok) {
      for (const t of body.data.traders) {
        console.log(`#${t.rank} ${t.name ?? t.wallet}  skill ${t.skill} (${t.label})  edge ${Math.round(t.edge * 100)} pts`);
      }
      const receipt = new x402HTTPClient(client).getPaymentSettleResponse((h) => res.headers.get(h));
      console.log("Paid. Transaction:", receipt?.transaction);
    } else if (res.status === 402) {
      console.log("Not charged: the payment wasn't accepted. Check the wallet has USDC on the network shown in the 402 response.");
    } else {
      console.log("Not charged. Error:", body.error);
    }
  6. Run it

    Replace the key with your private key from step 3. Putting it in front of the command keeps it out of your files.

    AGENT_KEY=0xYOUR_PRIVATE_KEY node agent.mjs
  7. Read the result

    You should see something like this. The first run can take up to 30 seconds while wallets are scored.

    Price: 0.003 USDC
    Status: 200
    #1 primm  skill 88 (Sharp)  edge 13 pts
    #2 Kch-Temp  skill 76 (Sharp)  edge 6 pts
    …
    Paid. Transaction: 0x31a8…9169

    That's a real payment: search the transaction on basescan.org to see it. Now swap the URL for any other endpoint below. If something goes wrong, see Troubleshooting.

Endpoints

All endpoints are GET, return JSON shaped as { data, cached }, and live under https://www.x402pulse.dev.

EndpointParametersReturnsPrice
/v1/whales
min
Minimum trade size in USD (default 1000)
limit
Number of trades, 1 to 50 (default 20)
Polymarket whale trades: the largest recent buys and sells across all markets above a size you choose, with trader name, outcome, price and USD size. 5- and 15-minute crypto markets filtered out. Pair with /v1/wallet to check whether a whale is any good.$0.0028
/v1/wallet
address
Polymarket wallet address (0x…)
Polymarket trader scorecard for any wallet: skill score (0-100), edge over the odds paid, win rate vs. the win rate the odds implied, return (ROI), realized PnL, specialty and largest open positions. Scores the latest 200 finished bets, losses included.$0.0056
/v1/top-traders
period
day, week, month or all (default month)
category
Optional: sports, politics, crypto, economy or other
limit
Number of traders, 1 to 25 (default 10)
Polymarket leaderboard re-ranked by skill, not size: top traders by edge over the odds paid, return and consistency, for day, week, month or all time, optionally per category (sports, politics, crypto, economy). Exposes big-volume losers the profit leaderboard hides.$0.014
/v1/smart-money
market
Market link, market slug or condition ID
Polymarket smart money for one market: the biggest holders on each side, each scored for skill (edge, win rate, ROI), plus which way skilled money leans and whether it agrees with the market's odds. Accepts a market link, slug or condition ID. Data, not investment advice.$0.014
/v1/skilled-whales
min
Minimum trade size in USD (default 1000)
limit
Number of trades, 1 to 50 (default 20)
Smart-money whale trades on Polymarket: recent large trades by skilled (Solid or Sharp) traders only, each tagged with the trader's skill score, edge over the odds paid, return and specialty. Separates informed whales from big gamblers.$0.0084
/v1/disagreements
category
Optional: sports, politics, crypto, economy or other
limit
Number of markets, 1 to 20 (default 5)
Polymarket markets where smart money disagrees with the odds: scans the 30 busiest open markets every 15 minutes and returns those where skilled traders' money implies a different probability than the price, tempered against thin evidence, with a low, medium or high confidence rating. Data, not investment advice.$0.028
/v1/health/drug-safety
drug
Drug brand or generic name, e.g. atorvastatin or Lipitor
FDA drug safety snapshot for any drug (brand or generic name): total adverse event reports, share serious and fatal, most-reported side effects and the quarterly report trend from FDA FAERS. Reports are not proof of causation. Data, not medical advice.$0.0028
/v1/health/safety-signals
drug
Drug brand or generic name
Drug safety signal detection (pharmacovigilance) from FDA FAERS: side effects reported disproportionately often with a drug versus all other drugs, using the proportional reporting ratio (PRR) and chi-square with standard Evans criteria. A statistical prompt for study, not evidence of harm. Not medical advice.$0.014
/v1/health/recalls
type
drug or food (default drug)
class
Optional: I, II or III
firm
Optional: recalling company
days
Look-back window, 1 to 365 (default 30)
limit
Number of recalls, 1 to 50 (default 20)
FDA drug recalls and food recalls: the latest FDA enforcement reports with recall class (Class I is most serious) explained in plain language, recalling firm, product, reason, status, dates and distribution. Filter by class, company and time window. openFDA data, not medical advice.$0.0014
/v1/health/drug-label
drug
Drug brand or generic name
FDA drug label lookup: boxed warning, approved indications, contraindications, warnings and drug interactions for any drug, plus brand and generic names, manufacturer and route, as clean structured text from openFDA. Not medical advice.$0.0014
/v1/health/drug-approvals
days
Look-back window, 1 to 365 (default 30)
sponsor
Optional: company name
kind
original (default), supplement or all
limit
Number of approvals, 1 to 50 (default 20)
FDA drug approvals: which companies just won FDA approval for new drugs, generics or biologics, from Drugs@FDA. Approval date, sponsor company, NDA/ANDA/BLA type, brand and active ingredients, dosage form, review priority, and a flag for novel drugs (new molecular entities). Filter by company, days and original vs. supplemental approvals.$0.0028
/v1/health/drug-shortages
drug
Optional: drug name; omit to list current shortages
status
current (default), resolved, discontinued or all
limit
Number of drugs, 1 to 50 (default 20)
FDA drug shortages: which medicines are in shortage now, grouped by drug, with availability (unavailable or limited) per package, companies, dosage forms, shortage reasons, estimated recovery notes and posting dates. Search one drug or list current shortages. For hospitals, pharmacies and supply chains. openFDA data, not medical advice.$0.0028
/v1/health/hospital
id
CMS facility ID (6 characters), or
name
Hospital name (with state)
state
Two-letter state, required with name
Hospital scorecard for any U.S. Medicare hospital from the Centers for Medicare & Medicaid Services (CMS, the U.S. government agency): CMS overall star rating, type, ownership, emergency services, and how it compares with the national average on mortality, safety and readmissions (measures better, same, worse), plus its rank and percentile among rated hospitals in its state. Look up by CMS facility ID or name plus state. Not medical advice.$0.0056
/v1/health/hospitals
state
Two-letter state (omit for nationwide)
city
Optional city
minStars
Optional 1 to 5
emergency
Optional true or false
type
Optional: acute, critical, childrens or psychiatric
limit
1 to 50 (default 20)
Best hospitals ranking for a U.S. state or city from Centers for Medicare & Medicaid Services (CMS) Care Compare data: ranked by CMS star rating, then net score (quality measures better than national minus worse across mortality, safety and readmissions). Filter by city, minimum stars, emergency services and hospital type (acute, critical access, children's, psychiatric). Not medical advice.$0.0084
/v1/oil/pricesnoneCrude oil prices: WTI and Brent daily spot prices from the U.S. Energy Information Administration (EIA), with 1-day, 1-week, 1-month and 1-year changes, 52-week range and position in it, and the Brent-WTI spread. Official daily figures, not live futures quotes. Data, not trading advice.$0.0014
/v1/oil/inventoriesnoneU.S. oil inventories from the EIA Weekly Petroleum Status Report: commercial crude, Cushing (WTI hub), Strategic Petroleum Reserve, gasoline and distillate stocks, each with the weekly build or draw, change vs. a year ago and vs. the 5-year average for the same week. Data, not trading advice.$0.0028
/v1/oil/supplynoneU.S. oil supply from the EIA weekly report: crude production, refinery utilization, crude imports and exports (thousand barrels per day), weekly change, 4-week average, change vs. a year ago, and net imports. Data, not trading advice.$0.0028
/v1/oil/positioningnoneWTI crude oil positioning from the CFTC Commitments of Traders: managed money (hedge funds) long, short and net contracts, weekly change, long/short ratio, and how extreme the net position is vs. the last 3 years (percentile), plus producers, swap dealers and open interest. Data, not trading advice.$0.0056
/v1/oil/markets
limit
Number of markets, 1 to 10 (default 10)
Oil prediction markets with smart money: busy Polymarket markets about oil prices, OPEC, Strait of Hormuz and fuel, each with the skilled-trader lean (skill-weighted money vs. the market's odds) from x402Pulse scoring. Data, not trading advice.$0.014
/v1/attention/trending
lang
Wikipedia language code, e.g. en, es, pt, de (default en)
limit
Number of topics, 1 to 100 (default 25)
Trending topics: yesterday's most-viewed Wikipedia articles in any language, cleaned of site pages, with rank change vs. the day before, new entries, week-long regulars, and likely automated surges flagged separately. A daily read of what people are paying attention to. Based on Wikimedia pageview data (CC0).$0.0028
/v1/attention/spikes
lang
Wikipedia language code (default en)
minRatio
Minimum surge, 2 to 100 (default 3)
minViews
Minimum views (default 1000)
limit
1 to 50 (default 20)
Attention spikes: Wikipedia articles whose views surged far above their usual level yesterday (ratio to the previous week's median), the earliest sign of breaking public interest in a person, company, event or idea. Any language. Likely automated traffic filtered. Based on Wikimedia pageview data (CC0).$0.0056
/v1/attention/topic
title
Exact Wikipedia article title, e.g. Bitcoin
lang
Language code (default en)
days
7 to 90 (default 30)
Attention history for any topic: daily Wikipedia pageviews of one article (a company, person, drug, coin or event) for 7 to 90 days, with its baseline, latest day vs. baseline, spike days and 7-day trend. Use the exact article title, e.g. Bitcoin. Based on Wikimedia pageview data (CC0).$0.0014
/v1/attention/markets
lang
Language code (default en)
limit
1 to 10 (default 10)
Attention meets prediction markets: topics trending or spiking on Wikipedia matched to open Polymarket markets, each with prices and the skilled-trader lean from x402Pulse scoring. Find markets the public is suddenly paying attention to. Data, not investment advice.$0.014
/v1/travel/trip-check
from
Origin airport code, e.g. SFO
to
Destination airport code, e.g. LHR
date
Travel date YYYY-MM-DD (default today, UTC). Weather forecasts reach about 30 hours ahead
Trip check: one call rates the delay risk (low, moderate, high) for a flight between two airports on a date, with plain-language reasons. Combines live FAA delays and ground stops, current airport weather and airport forecasts for both ends, the destination's State Department travel advisory, and the currency exchange rate for international trips. Any airport worldwide by IATA code, e.g. SFO to LHR. Not for flight planning.$0.014
/v1/travel/airport-status
airport
Airport code, e.g. JFK, SFO, LHR or KJFK
Airport status right now: live FAA delays, ground stops, ground delay programs and closures (restrictions that only affect private aircraft are labeled as such), plus current weather in plain words and a delay-risk rating. FAA data covers U.S. airports; weather covers airports worldwide. Not for flight planning.$0.0028
/v1/travel/airport-forecast
airport
Airport code, e.g. LHR, ORD or EGLL
Airport weather forecast decoded: the next 24 to 30 hours at any airport worldwide, broken into periods with wind, gusts, visibility, cloud ceiling, flight category and a delay-risk rating, flagging when low clouds, storms, snow or strong gusts are expected. Not for flight planning.$0.0028
/v1/travel/weather
lat
Latitude in decimal degrees, e.g. 37.77
lon
Longitude in decimal degrees, e.g. -122.42
airport
Instead of lat/lon: an airport code, e.g. SFO or LHR
tz
Optional IANA time zone for the daily breakdown, e.g. Europe/Paris (U.S. locations detect it automatically)
name
Optional place name to label the answer, e.g. Paris
Weather anywhere: current conditions, the next 12 hours and a daily forecast up to about 9 days (high, low, precipitation and its chance, wind) for any coordinates or airport, in °C and °F. U.S. locations add the National Weather Service forecast in words and any active weather alerts. Sources: MET Norway worldwide, NWS for the U.S.$0.0014
/v1/travel/disruptions
includeRestrictions
true to also list restrictions that don't affect airline flights (default false)
Every current FAA disruption in U.S. airspace, ranked by severity: ground stops, ground delay programs, arrival and departure delays, airspace flow programs and real closures, with plain-language reasons. Private-aircraft-only restrictions are separated out so agents don't report them as closures. Not for flight planning.$0.0028
/v1/travel/advisory
country
Country code or name, e.g. MX or Mexico (omit to list countries)
minLevel
When listing: minimum level 1 to 4 (default 3)
U.S. State Department travel advisories: a country's level (1 Exercise normal precautions to 4 Do not travel), summary and main risk factors, or every country at or above a level. Country by 2-letter code (MX, GB, JP) or name.$0.0014
/v1/travel/exchange-rates
base
Base currency, e.g. USD (default), EUR, GBP
symbols
Optional comma-separated currencies, e.g. EUR,JPY,MXN
Official exchange rates: the European Central Bank's daily reference rates for about 30 currencies, converted to any base currency (USD by default). Source: ECB statistics. Reference rates, not trading rates.$0.0014
/v1/wallstreet/company-brief
ticker
Stock ticker, e.g. AAPL, NVDA or BRK.B
Company brief from SEC filings in one call: latest-quarter and trailing-year financials with margins and growth, insider buying and selling over 90 days (open-market vs. pre-planned 10b5-1 trades, cluster-buy detection), material events from 8-K filings decoded into plain words, new 5%+ and activist stakes, and a plain-language summary. Any U.S.-listed ticker. Data, not investment advice.$0.056
/v1/wallstreet/morning-briefnoneMorning Brief for 2026's top-performing stocks (28 companies, from SanDisk and Micron to CrowdStrike and Lam Research): today's ranked signals from SEC filings (insider cluster buys, insider selling outside pre-arranged 10b5-1 plans with the main seller named, serious 8-K events, activist stakes), a one-line summary per company, and the macro backdrop (Treasury yield curve, oil positioning, skilled prediction-market money on the economy). Refreshed three times a day. Data, not investment advice.$0.056
/v1/wallstreet/insider-trades
ticker
Stock ticker, e.g. NVDA
days
Look-back window, 7 to 365 (default 90)
limit
Max filings to read, 1 to 60 (default 25)
openMarketOnly
true to list only open-market buys and sales (default false)
Insider trades decoded from SEC Form 4 filings: who traded (name, role, title), buy or sell, shares, price, dollar value, holdings afterwards, and whether the trade was pre-planned under a 10b5-1 plan, plus totals and cluster-buy detection. Data, not investment advice.$0.0084
/v1/wallstreet/financials
ticker
Stock ticker, e.g. MSFT
Standardized company financials from SEC XBRL filings: revenue, net and operating income, diluted EPS, operating cash flow for the last 8 quarters and 5 years, plus cash, assets, liabilities, equity, debt and shares outstanding, with margins, year-over-year growth and trailing-12-month totals. Handles companies that changed reporting labels. Data, not investment advice.$0.0056
/v1/wallstreet/events
ticker
Stock ticker, e.g. TSLA
days
Look-back window, 7 to 365 (default 90)
Material corporate events from SEC 8-K filings, decoded and ranked: bankruptcies, auditor changes, restatements, executive departures, acquisitions, major agreements, earnings releases, plus new 5%+ and activist stakes, each with a link to the filing. Data, not investment advice.$0.0028
/v1/wallstreet/yield-curvenoneU.S. Treasury yield curve: the latest daily yields from 1 month to 30 years, the 10Y-2Y and 10Y-3M spreads, inversion flags (a closely watched recession signal) and changes vs. the previous day, a month and a year ago. Data, not investment advice.$0.0014
/v1/pro/passnonex402Pulse Pro: a 30-day pass for $19.97 USDC that returns an API key for unlimited calls (fair use: 120 a minute, 20,000 a day) to every x402Pulse endpoint, plus an MCP server for Claude Code, Cursor and Claude Desktop. To renew, send your current key as Authorization: Bearer <key>; renewals add 30 days to the time left. The key is shown once.$19.97

market accepts a full polymarket.com link, a market slug, or a condition ID. If a link covers an event with several markets, you get a free 400 with choices[] to pick from.

Response fields

What every number means, so your agent can explain its answers.

/v1/whales

FieldTypeMeaning
trades[]listLargest recent trades, biggest first.
wallet, nametextTrader's Polymarket wallet and display name (null if none).
side, outcome, pricetext, text, 0–1BUY or SELL, which outcome, and the price paid (0.62 = 62¢).
usd, sharesUSD, numberTrade size in dollars and shares.
market, slug, time, txtextMarket question, its slug, trade time (ISO) and on-chain transaction.

/v1/wallet

FieldTypeMeaning
address, nametextThe wallet and its display name (null if none).
scoreobjectThe scorecard. See score fields below.
openPositions[]listLargest live positions: market, outcome, shares, avgPrice, currentPrice, valueUsd, unrealizedPnlUsd.

/v1/top-traders

FieldTypeMeaning
traders[]listTraders ranked by skill. Each has the main score fields plus the ones below.
profitRankintegerWhere they sat on Polymarket's profit leaderboard for the period.
periodPnlUsd, periodVolumeUsdUSDProfit and volume for the chosen period, from Polymarket.
candidatesintegerHow many leaderboard traders were scored to build the ranking.
categorytext or nullWhen set, scores use only each trader's bets in that category.

/v1/smart-money

FieldTypeMeaning
question, slug, outcomes[]text, listThe market, and each outcome with its current price (0.41 = 41% implied chance).
leanobject or nulloutcome, share of skill-weighted money, marketPrice, vsMarket (share − price) and stance: in line with, more confident than, or less confident than the market.
summarytextOne-sentence answer, ready to show a user.
sides[]listPer outcome: price, sharpHolders, skillWeightedUsd and holders[] (wallet, name, valueUsd, skill, label, edge, winRate, roi).

/v1/skilled-whales

FieldTypeMeaning
trades[]listLarge recent trades by Solid or Sharp traders only, biggest first. Same trade fields as /v1/whales.
skill, label, edge, roi, specialtyscoreThe trader's skill score and its main parts. See score fields below.
tradersScoredintegerHow many distinct traders were scored (up to 25 of the biggest).

/v1/disagreements

FieldTypeMeaning
markets[]listOpen yes/no markets, sorted by how far tempered skilled money is from the price, weighted by confidence.
priceYes0–1The market's price for the first outcome (usually Yes).
skilledYesShare0–1What skilled money implies for the first outcome, tempered toward the price so thin readings can't look extreme.
rawSkilledYesShare0–1The untempered share of skill-weighted money on the first outcome.
gap−1 to 1skilledYesShare − priceYes. Positive: skilled money more bullish on Yes than the market; negative: more bullish on No.
confidencetexthigh (5+ skilled holders, $150K+ skill-weighted), medium (3+, $50K+) or low.
skilledHolders, skilledUsdinteger, USDHow many Solid+ holders and how much skill-weighted money the reading rests on.
scannedAt, marketsScannedtime, integerWhen the busiest open markets were last scanned (every 15 minutes) and how many.

/v1/health/drug-safety

FieldTypeMeaning
totalReportsintegerAll FAERS adverse event reports mentioning the drug (brand or generic name).
seriousShare, deathReportShare0–1Share of those reports marked serious, and share reporting a death. Reports are unverified.
topReactions[]listMost-reported side effects: reaction, reports and share of the drug's reports.
quarterlyReports[], yearOverYearChangelist, numberReports per quarter for the last 8 full quarters, and the latest quarter vs. a year earlier.
noticetextReporting caveats. Show it with the data.

/v1/health/safety-signals

FieldTypeMeaning
signals[]listReactions meeting the Evans criteria (PRR ≥ 2, ≥ 3 reports, chi-square ≥ 4), strongest first.
prrnumberProportional reporting ratio: how many times more often the reaction is reported with this drug than with all others. 1 = no difference.
chiSquarenumberHow unlikely the difference is by chance (4 or more passes the screen).
checked[], reactionsCheckedlist, integerEvery reaction tested (the drug's 100 most reported), signal or not.
method, noticetextHow signals were computed, why a signal is not evidence of harm, and confounding by indication.

/v1/health/recalls

FieldTypeMeaning
recalls[]listNewest first: recall number, class, severity meaning, status, firm, product, reason, report and start dates, distribution.
byClass, totalMatchingobject, integerCounts by class among the newest 50, and all matching recalls in the window.
classificationtextClass I: serious harm or death is reasonably likely. Class II: temporary or reversible problems. Class III: unlikely to cause harm.

/v1/health/drug-label

FieldTypeMeaning
brandNames, genericNames, manufacturers, routeslistsIdentity of the labeled product.
hasBoxedWarning, boxedWarningboolean, textWhether the label carries FDA's strongest warning, and its text.
indications, contraindications, warnings, drugInteractionstextExcerpts of those label sections (up to 1,500 characters each).
labelDatedateWhen this label version took effect.

/v1/health/drug-approvals

FieldTypeMeaning
approvals[]listNewest first: date, application number and type (NDA, ANDA, BLA), sponsor, original or supplement, brand names, active ingredients, dosage forms, routes, approval class, review priority.
novelDrug, novelDrugsboolean, integerWhether an original approval is a new molecular entity (Type 1), and how many in the window.
byType, totalFoundobject, integerApprovals by application type, and how many were found in the window.

/v1/health/drug-shortages

FieldTypeMeaning
drugs[]listOne entry per drug: statuses, packages listed, availability counts, companies, brand names, dosage forms, routes, categories, reasons, recovery notes, first posted and last updated.
availabilityobjectPackages by availability, e.g. { Unavailable: 2, Limited: 1 }.
severity0–1Share of the drug's packages that are unavailable or limited. Results are sorted by it, worst first.
estimatedRecoverylistRecovery or availability dates pulled from FDA's notes, e.g. "March 2027" or "TBD".
recoveryNoteslistFDA's full notes, which can also name distributors or allocation.
drugsFound, packagesFoundintegerDrugs matching, and package listings behind them.

/v1/health/hospital

FieldTypeMeaning
starRating, starRatingNote1–5 or null, textOverall star rating from the Centers for Medicare & Medicaid Services (CMS), or why it isn't rated.
vsNational.mortality / safety / readmissionsobjectCMS measures in each group: total, reported, and how many are better, no different or worse than the national average.
netScore, measuresBetter, measuresWorse, measuresComparedintegersx402Pulse analysis: measures better minus worse across the three groups, and the totals behind it.
stateComparisonobjectx402Pulse rank and percentile among rated hospitals in the same state.
patientExperience, timelyCareobjectHow many of these CMS measures the hospital reported (CMS gives no better/worse counts for them here).

/v1/health/hospitals

FieldTypeMeaning
hospitals[]listRanked: id, name, city, state, type, ownership, emergency services, star rating, net score and measure counts.
hospitalsMatching, ratedHospitalsintegersHospitals matching the filters, and how many have a CMS star rating.
methodtextHow the x402Pulse ranking orders hospitals.

/v1/oil/prices

FieldTypeMeaning
wti, brentobjectLatest EIA daily spot price (USD per barrel) with date, change1d/1w/1m/1y (from, change, changePct), 52-week range and positionInRange (0 = low, 1 = high), and the last 10 readings.
brentWtiSpreadobjectBrent minus WTI on the latest shared date.

/v1/oil/inventories

FieldTypeMeaning
stocks[]listCommercial crude (ex-SPR), Cushing, SPR, gasoline and distillate: thousand barrels, weeklyChange (negative = draw), vsYearAgoPct, fiveYearAverage, vsFiveYearAveragePct.
weekEndingdateWeek the EIA report covers (published the following Wednesday).

/v1/oil/supply

FieldTypeMeaning
items[]listProduction, refinery utilization, imports and exports: value, units, weeklyChange, fourWeekAverage, vsYearAgoPct.
netImportsobjectCrude imports minus exports, thousand barrels per day.

/v1/oil/positioning

FieldTypeMeaning
managedMoneyobjectHedge funds and CTAs in WTI futures: long, short, net, weeklyNetChange, longShortRatio, netShareOfOpenInterest, threeYearPercentile, 3-year low/high and a plain-language reading.
otherGroupsNetobjectNet positions of producers and merchants, swap dealers and other reportable traders.
recentWeeks[]listLast 8 weeks of managed-money net and open interest.

/v1/oil/markets

FieldTypeMeaning
markets[]listOil-related Polymarket markets: question, outcomes with prices, skilledHolders, skilledUsd, skilledFirstOutcomeShare (tempered), gapVsPrice and a reading.

/v1/attention/trending

FieldTypeMeaning
items[]listTop articles: rank, title, views, previousRank, rankChange (positive = climbed), isNew, daysInTopThisWeek, steady, mobileShare, url.
flaggedAutomated[]listPages with almost no mobile traffic, a common sign of automated views, kept out of the ranking.
date, sitePagesRemoveddate, integerThe UTC day measured, and how many site pages (main page, search) were removed.

/v1/attention/spikes

FieldTypeMeaning
items[]listSurging articles: title, views, baseline (median of the previous week), ratio, ratioIsAtLeast, newToTopList, url.
comparedDays, filtersinteger, objectEarlier days compared, and the minRatio and minViews applied.

/v1/attention/topic

FieldTypeMeaning
latest, baselineDailyViewsobject, integerThe latest day's views and multiple of baseline, and the median daily views over the period.
spikeDays[], trend7dlist, numberDays at 3x baseline or more, and the last 7 days vs. the 7 before (0.2 = +20%).
daily[]listViews per day (human traffic).

/v1/attention/markets

FieldTypeMeaning
markets[]listTopic, its views and why it was picked (trending or spike), the matched Polymarket market, prices, skilled holders, skilledFirstOutcomeShare and a reading.

/v1/travel/trip-check

FieldTypeMeaning
delayRisk, coveragetext, textlow, moderate or high for the route and date; coverage says whether it used live data (today), forecasts, or none (dates beyond about 30 hours).
summarytextPlain-language verdict with the most serious reasons first, plus the destination advisory level.
origin, destinationobjectPer airport: delayRisk, riskReasons, live FAA events, current weather, and forecast periods covering the travel date.
travelAdvisory, currencyobjectThe destination's State Department advisory, and the exchange rate from the origin's to the destination's currency (international trips).

/v1/travel/airport-status

FieldTypeMeaning
delayRisk, riskReasonstext, listCombined from FAA programs and current weather, most serious first.
faa.events[]listEach with type (ground_stop, ground_delay_program, delay, closure, restriction), severity, affectsAirlineFlights, delay minutes and a plain reason.
weatherobjectflightCategory (VFR good to LIFR very poor), wind, gusts, visibility, ceiling, conditions and a plain summary.

/v1/travel/airport-forecast

FieldTypeMeaning
forecast.periods[]listTime window, change type (from, temporarily, becoming, possibly), wind, visibility, ceiling, flightCategory and delayRisk.
forecast.delayRisk, riskReasonstext, listThe worst expected period and why, with times in UTC.

/v1/travel/weather

FieldTypeMeaning
summarytextOne or two plain sentences: conditions and temperature now, today's high, low and chance of precipitation, and the number of active alerts.
nowobjectconditions, temperatureC/F, feelsLikeC/F, humidityPct, cloudCoverPct, wind (km/h, mph, direction, gusts), precipitationNextHourMm, uvIndex.
days[]listLocal calendar days: conditions, highC/F, lowC/F, precipitationMm/In, chanceOfPrecipitationPct, windMaxKmh/Mph.
next12Hours[]listHour by hour: local time, temperature, conditions, precipitation and its chance.
alerts[], nwslist, objectU.S. only: active National Weather Service alerts (event, severity, headline, times, instructions) and the NWS forecast periods in words. null elsewhere.

/v1/travel/disruptions

FieldTypeMeaning
counts, airportsAffectedobject, listActive ground stops, ground delay programs, delays, airspace programs and real closures; airports involved.
events[]listRanked most severe first, only items that affect airline flights. restrictions[] (optional) lists private-aircraft-only notices.

/v1/travel/advisory

FieldTypeMeaning
advisoryobjectcountry, level (1 to 4), levelText, summary, riskFactors, someAreasHigherRisk, url and dates.
advisories[]listWhen no country is given: every country at or above minLevel, highest first.

/v1/travel/exchange-rates

FieldTypeMeaning
ratesobjectUnits of each currency per 1 unit of base.
perEuro, dateobject, dateThe ECB euro reference rates as published, and their date.

/v1/wallstreet/company-brief

FieldTypeMeaning
summarytextPlain-language brief: latest quarter, insider activity (with cluster buys and planned-sale share) and notable events.
financialsobjectlatestQuarter (revenue, net and operating income, EPS, margins, growth vs. a year ago), trailing12Months and balanceSheet.
insidersobject90 days: openMarketBuys/Sells, buyers, sellers, dollar values, net, plannedSellShare, clusterBuy, recentTrades.
materialEvents[], largeStakes[]list8-K events ranked high, notable or routine with decoded items and links; 13D (activist) and 13G (passive 5%+) filings.

/v1/wallstreet/morning-brief

FieldTypeMeaning
signals[]listUp to 12 ranked signals: ticker and plain-English text (cluster buys, unplanned insider selling with the main seller, serious 8-Ks, activist stakes).
companies[]listPer company: name, latest-quarter revenue, growth vs. a year ago, net margin, insider buys and sales over 90 days, share of sales pre-planned, notable 8-K count.
macroobjectcurve (yield-curve summary), oil (hedge-fund positioning), markets[] (skilled money vs. the odds on economy markets), spikes[].
date, generatedAt, title, tickerstext, time, text, listThe brief's day, when it was built, the watchlist's name and its 28 tickers.

/v1/wallstreet/insider-trades

FieldTypeMeaning
trades[]listinsider, roles, title, date, code and type, direction (buy, sell, other), openMarket, planned (10b5-1), shares, price, valueUsd, sharesOwnedAfter, url.
summaryobjectTotals for the period and clusterBuy (3+ insiders buying within 30 days).

/v1/wallstreet/financials

FieldTypeMeaning
summaryobjectLatest quarter with margins and growth, trailing 12 months, balance sheet.
quarters, yearsobjectPer metric (revenue, netIncome, operatingIncome, epsDiluted, operatingCashFlow, cash, totalAssets, ...): period, end date, value, form.

/v1/wallstreet/events

FieldTypeMeaning
events[]listfiled, form, items (code and plain meaning), importance (high, notable, routine), url.
counts, largeStakes[]object, listEvents by importance; 13D/13G stake filings in the period.

/v1/wallstreet/yield-curve

FieldTypeMeaning
yieldsPct, dateobject, dateYields in percent for 1 month to 30 years on the latest business day.
spreadsBp, invertedobject10Y-2Y, 10Y-3M and 30Y-5Y spreads in basis points; inversion flags.
changeBpobjectChange per maturity vs. the previous day, about a month ago and a year ago.

/v1/pro/pass

FieldTypeMeaning
keytextYour Pro API key (xp_live_…). Shown once; save it. Send it as Authorization: Bearer <key>.
expiresAt, daystime, integerWhen the pass ends. Renewals add 30 days to any remaining time.
useobjectReady-to-copy header, curl example, MCP URL and the Claude Code command.
limitsobjectFair use: calls per minute and per day.

Score fields

Used in wallet scorecards, top traders and smart-money holders.

FieldTypeMeaning
skill0–100Overall skill score from edge, return, history size and consistency.
labeltextSharp (70+), Solid (45+), Mixed (25+), Weak, or Too few bets (under 10 finished bets).
edgenumberWin rate minus the win rate the prices paid implied. 0.08 = won 8 points more often than the odds said.
winRate0–1Share of finished bets that made money.
expectedWinRate0–1Average price paid, i.e. the win rate the odds implied.
roinumberRealized profit divided by money invested. 0.25 = +25%.
betsintegerFinished bets scored (latest 200, losses included).
realizedPnlUsdUSDProfit or loss across the scored bets.
biggestWinShare0–1Share of all winnings from the single best bet. High means one lucky hit.
shortTermShare0–1Share of bets on 5- and 15-minute crypto markets, which lowers the score.
specialtytextCategory with the most profit: sports, politics, crypto, economy, other, or null.

How scores are calculated

Total profit mostly rewards whoever bets the most. The skill score asks a different question: did this trader beat the odds they paid?

  1. Which bets count. A wallet's latest 200 finished bets, wins and losses. Losing bets that were never redeemed are included, so records aren't flattered.
  2. Edge. Win rate minus the average price paid. Buying at 50¢ implies a 50% chance; winning 65% of those bets is a +15 point edge. Buying at 96¢ and winning 96% is zero edge.
  3. Return. Realized profit divided by money invested.
  4. Base score. 60% from edge (−2 points scores 0, +10 points or more scores full marks) and 40% from return (0% scores 0, +30% or more scores full marks).
  5. Adjustments. Multiplied by history size (about 100 bets earns full credit), by consistency (halved if one bet made all the winnings), and by focus (halved for wallets that only play 5- and 15-minute coin-flip markets).
  6. Safety cap. No edge or no profit caps the score at 35, however high the win rate.

Labels: Sharp 70+, Solid 45+, Mixed 25+, Weak below 25, and Too few bets under 10 finished bets.

Smart money

For each outcome, x402Pulse takes the biggest holders (10 per side when paid, 3 in free samples) and scores each one. Only Solid or better holders count as skilled. Each skilled position is weighted by its dollar value times its skill score, and the outcome with the most skill-weighted money is the lean. The lean's share is then compared with that outcome's price: within 10 points is "in line with" the market, above is "more confident than," below is "less confident than."

In your own app

The same pattern in TypeScript. One wrapped fetch handles the whole exchange, and a spending cap means your agent can never overpay.

npm install @x402/fetch @x402/evm viem
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, {
  signer: privateKeyToAccount(process.env.AGENT_KEY as `0x${string}`),
});

// Spending guardrail: refuse any single payment above $0.50.
client.onBeforePaymentCreation(async ({ selectedRequirements }) => {
  if (Number(selectedRequirements.amount) / 1e6 > 0.5) {
    return { abort: true, reason: "Over my per-call limit" };
  }
});

const pay = wrapFetchWithPayment(fetch, client);

// Which way does skilled money lean on this market?
const market = "https://polymarket.com/event/…";
const res = await pay(
  "https://www.x402pulse.dev/v1/smart-money?market=" + encodeURIComponent(market),
);
const { data } = await res.json();
console.log(data.summary);
// e.g. "Skilled holders lean Yes (72% of skill-weighted money, from 4 skilled
//       holders), more confident than the market's 41%."

Any language

x402 is plain HTTP, so any language works. Libraries exist for several, and the protocol is short enough to implement yourself:

  1. Send the request. A 402 response carries a PAYMENT-REQUIRED header: base64-encoded JSON listing the accepted payment (scheme, network, amount in USDC base units, asset, payTo).
  2. Sign the payment as the exact scheme describes (an EIP-3009 USDC transfer authorization on Base).
  3. Repeat the request with the signed payment, base64-encoded, in a PAYMENT-SIGNATURE header.
  4. On success you get 200 plus a PAYMENT-RESPONSE header with the settlement receipt and transaction hash.

The full specification is at docs.x402.org.

Testing for free

This service runs on Base mainnet with real USDC. Keep a small budget and a per-call cap in your client while you build.

Or try it by hand first: the Try page gives free samples in your browser.

Discovery

Agents can find and understand x402Pulse without reading this page:

  • /catalog and /.well-known/x402-listing: every endpoint, price and parameter as JSON.
  • /llms.txt: this documentation as plain text, written for AI models to read.
  • Every 402 response includes a bazaar section with an example input, input schema and example output, which x402 directories such as the Coinbase Bazaar use for search.

Errors and limits

Every error is free: payment only settles when the response succeeds.

StatusCostMeaning
400freeMissing or invalid parameter; the message says which. An ambiguous market link or hospital name includes choices[] to pick from.
402freePayment required: read the PAYMENT-REQUIRED header, pay, and retry.
404freeNot found: e.g. an unknown wallet, market, drug, hospital, article, airport, country or ticker.
429freeToo many requests from you: 60 paid calls a minute, or 600 free price checks a minute. Retry-After says when to try again.
502 / 503freeA data source (Polymarket, openFDA, CMS, EIA, CFTC, Wikimedia, FAA, NOAA, State Department, ECB, SEC or Treasury) didn't respond or is busy, or payments are briefly unavailable. Retry after a short wait.

How fresh is the data?

Troubleshooting

The problems people actually run into, and the fix for each.

What you seeCauseFix
Status 402 after payingWalletThe wallet has no USDC on the right network. Check its USDC balance on the network named in the 402 response (the network field) and top it up.
fetch failed / ECONNREFUSEDAddressThe URL is wrong or the service is unreachable. Copy the address from this page exactly, including https://.
invalid private keyKeyA private key starts with 0x followed by 64 characters, 66 in total, with no spaces or quotes inside.
Over my per-call limitYour capYour own spending guardrail refused the price. Raise the cap in your code if you meant to pay it.
400 with choices[]FreeYour market link covers several markets. Call again with one of the slugs in choices[].
404 market not foundFreeCheck the link or slug for typos. Open it on polymarket.com to confirm it exists.
429 rate limitFreeMore than 60 calls a minute. Slow down, or reuse answers: most data refreshes every few minutes anyway.
Slow first answerNormalTop traders and smart money score many wallets the first time (up to ~30 seconds). Later calls come from the cache in milliseconds.

What to build

A few ideas for products and agents on top of x402Pulse.

Research assistants

Before answering "will X happen?", check whether skilled money agrees with the market's odds and say so.

Market dashboards

Show each market's odds next to its skilled lean, and highlight where they disagree.

Chat and Discord bots

Answer "is this wallet any good?" or "who's sharp this week?" in a group chat, paying a fraction of a cent per question.

Whale watchers

Poll /v1/whales and enrich each big trade with the trader's skill score from /v1/wallet.

News and newsletters

Turn weekly top traders and notable smart-money leans into a digest for readers.

Research and backtests

Track how skilled-money leans compare with how markets actually resolve.

Using the data

x402Pulse provides data and analytics built from public Polymarket activity. It is not financial or betting advice, and past performance doesn't predict future results. If you show x402Pulse data to people, say where it comes from and present it as information, not recommendations.

Wallets are identified by address and their public Polymarket display names only. Don't use the data to identify or contact the real people behind wallets.

x402Pulse is an independent service, not affiliated with Polymarket or the x402 Foundation. The API is versioned under /v1; breaking changes would ship as /v2. Network: eip155:8453.