IOSCOBuilt to the IOSCO Principles for Financial Benchmarks. Read our Statement of Compliance.
API documentation

The Pulse Rolex Index API

Read-only JSON for the daily index and the market value of each tracked Rolex reference. Every number is built from confirmed resale sales, not asking prices, and refreshes once a day after the morning sweep.

v1 beta Free key at sign-up CORS open Daily refresh 14 references OpenAPI 3.0

Quick start

1. Get a key. Sign up with an email and your free key appears on the next screen. 2. Send it on every request as Authorization: Bearer <key> (or ?key=<key> if you cannot set headers). Everything lives under https://www.thepulse.fun/v1/; responses are JSON with Access-Control-Allow-Origin: *, so a browser, a server or a spreadsheet can call them.

curl
export PULSE_KEY=pk_live_your_key_here
curl -H "Authorization: Bearer $PULSE_KEY" https://www.thepulse.fun/v1/index
curl -H "Authorization: Bearer $PULSE_KEY" https://www.thepulse.fun/v1/prices/126610LN
curl -H "Authorization: Bearer $PULSE_KEY" https://www.thepulse.fun/v1/prices/126610LN/history   # Developer tier
JavaScript
const r = await fetch("https://www.thepulse.fun/v1/index", {
  headers: { Authorization: "Bearer " + PULSE_KEY }
});
const { index, change_pct, as_of, plan } = await r.json();
console.log(index.level, change_pct.level_7d, as_of, plan.remaining);
Your dashboard. /account/ shows today's usage, 30-day history, all your keys (create, label, revoke) and billing. Sign in with Google or GitHub, with email and password, or with an emailed code; a key also opens a read-only view.
Every response carries a plan block (tier, daily_limit, remaining, reset_in_seconds) and X-RateLimit-* headers, so you always know where you stand. Only successful reads count against the limit.
Reference format. Upper case, no spaces: 126610LN, 126710BLRO. Call /v1/references for the tracked set. Anything else returns 404.

Endpoints

EndpointReturns
GET /v1Discovery: status, tiers, endpoint list, link to the OpenAPI spec. No key needed.
GET /v1/indexThe latest index print: level, components, 1d/7d/30d changes, typical sale value, confirmed sales, dollar flow, plus plain-English field notes. Free
GET /v1/referencesAll tracked references with model name, latest market value and changes. Free
GET /v1/prices/{reference}Latest market value for one reference with 1d/7d/30d changes and its own relative level. Free
GET /v1/index/historyEvery daily print since the base date as parallel arrays keyed by dates. Developer
GET /v1/prices/{reference}/historyDaily market value history for one reference. Developer
GET /v1/moversTop three gainers and losers over the trailing 7 days. Developer

Example: /v1/index

200 OK ยท application/json
{
  "api_version": "v1",
  "as_of": "2026-09-08",
  "index": {
    "name": "The Pulse Rolex Index",
    "base_date": "2026-05-20",
    "base_value": 100,
    "level": 100.89,
    "average_watch": 100.73,
    "average_watch_smoothed": 100.58,
    "activity": 72.6,
    "total_return": 109.58,
    "typical_sale_usd": 15246,
    "confirmed_sales": 134,
    "dollar_flow_usd": 2490000
  },
  "change_pct": { "level_1d": 0.27, "level_7d": 1.69, "level_30d": 1.83 },
  "history_days": 70,
  "references_tracked": 14
}

Fields, in plain English

FieldTypeMeaning
levelnumberThe headline index. Base 100 on base_date. Evidence-weighted so a thin day or a single outlier sale cannot move it much.
average_watchnumberEqual-weight average of the tracked references relative to base. Unsmoothed, so it is noisier than level.
average_watch_smoothednumberThe same series with a 3-day half-life exponential smooth.
activitynumberSales pace versus the long-run baseline (100 = baseline). Combines the number of confirmed sales and the dollars that changed hands.
total_returnnumberaverage_watch scaled by smoothed activity. Read it as price times liquidity.
typical_sale_usdnumberMedian sale value across the basket, adjusted for the observed gap between asking and sold prices.
confirmed_salesintegerListings verified missing across two consecutive daily sweeps. Never a same-day count.
market_value_usdnumberA reference's current market value from its own confirmed sales, adjusted for the ask-to-sold gap. Carried forward on days with too few sales to print.
change_7d_pctnumber | nullPercent change versus the print 7 calendar days earlier. null when history is too short.
as_ofdateDate of the latest confirmed print. Because a sale is only confirmed on the following sweep, as_of is normally yesterday.

Full method, including screens and protections, is on the methodology page.

Authentication and limits

Every endpoint except /v1 needs a key. Limits are per key, per UTC day, and reset at 00:00 UTC. Data changes once a day, so please cache: one call per endpoint per day is all a well-behaved integration needs.

Free

  • Key issued instantly at sign-up, no card.
  • 100 requests a day.
  • Latest values: /v1/index, /v1/references, /v1/prices/{reference}.
  • History and movers return 403 upgrade_required.

Developer ($99 per month)

  • 10,000 requests a day.
  • Everything, including all /history endpoints and /v1/movers.
  • Every new reference we add, the day we add it.
  • Founding rate locked for early accounts. Upgrade in one click from your dashboard (Lemon Squeezy checkout); cancel any time from the same place.

Get a key

Errors

StatuserrorMeaning
401missing_api_key / invalid_api_keyNo key, an unknown key, or a revoked key. The body includes a sign-up link.
403upgrade_requiredThe endpoint is outside your tier (history and movers on Free). The body includes an upgrade link. Not counted against your limit.
404unknown_reference / not_foundA reference we do not track, or an unknown path. Not counted against your limit.
429rate_limitedDaily limit reached. Retry-After and reset_in_seconds tell you when it resets.
503data_unavailableThe daily data file is missing during a refresh. Retry in a minute.

License and attribution

On every tier you may display and redistribute the data, as long as you credit The Pulse (thepulse.fun) wherever it appears. A short "Data: The Pulse Rolex Index" with a link is enough. Do not present the index as your own, and do not strip as_of when you display a value; a price without its date misleads people.

Informational only. Nothing here is investment, valuation or insurance advice.

What's next

In order: keys delivered by email as well as on screen; more Rolex references as their confirmed-sales history matures; a valuation endpoint that adjusts for condition, box and papers; alerts. If one of these matters to you, say so when you sign up. It shapes the order.

Changelog. 2026-09: v1 beta published. Instant free keys, tiered access (Free: latest values, 100/day; Developer: everything, 10,000/day), index, references, prices, history and movers.