Docs

API reference

Public JSON, no key needed, cached for a minute or more. Please stay under one request a second. Pro exports need your license key.

Changes

GET/api/changes

Newest first. Query: venue (pm, kalshi), kind (comma list: clarification, rules, source, dispute, dates, title, resolution, filled; all for everything; default is edits without routine ones), cat, topic=midterms, q, before (an id, for paging), limit (up to 100).

curl "https://ruleswatch.com/api/changes?venue=pm&kind=clarification,rules&limit=5"
{ "changes": [{ "id": 1234, "venue": "pm", "market_id": "562802", "ts": 1793500000, "prev_seen": 1793499700,
    "kind": "clarification", "title": "…", "summary": "Rules: 41 words added",
    "diff": [{ "f": "description", "label": "Rules", "ops": [[0, "unchanged…"], [1, "added…"], [-1, "removed…"]] }],
    "p_before": 0.62, "p_at": 0.55, "p_after": 0.51, "url": "/change/1234", "history_url": "/market/pm/562802" }], "more": true }

Diff ops: 0 unchanged, 1 added, -1 removed. Date, source and UMA fields have before and after instead of ops.

GET/api/change/:id

One change with its siblings in the event and the market's change history.

Markets

GET/api/markets

Query: q, venue, cat, minvol, pmin and pmax (cents), closing (1, 7, 30 days), edited=1, status (open, closed, all), sort (vol, edits, recent, ending, price, new), page, per.

curl "https://ruleswatch.com/api/markets?cat=politics&edited=1&sort=edits"
GET/api/market/:venue/:id

The current rules, every change, every reconstructed version, related markets.

GET/api/market/:venue/:id/prices

{ points: [[unix seconds, yes price 0..1], …], fetched }, from the venue, kept 15 minutes.

GET/api/market/:venue/:id/resolution

The live resolution stage from the venue.

The record and search

GET/api/record

Every number on the record.

GET/api/midterms
GET/api/search?q=

Export (Pro)

GET/api/export

Every change in the last days (default 90), as CSV (one row per changed field) or format=json. scope=watchlist limits it to your markets.

curl -H "Authorization: Bearer YOUR_LICENSE_KEY" "https://ruleswatch.com/api/export?format=json&days=30"

Errors

Errors are JSON with an error sentence and a status: 400 bad input, 401 missing key, 402 needs Pro, 404 not found or not tracked, 429 too many, 502 the venue didn't answer.

Feeds

/feed.xml for every edit; each watchlist has a private one.