Skip to content

Quick Start

The Polystrike API is paid-only. There is no free tier, no free key and no anonymous access to data endpoints. You have two ways in:

  • Data key: $29 for 30 days or $290 for a year, 10,000 requests/hour, sent as the X-API-Key header.
  • Pay per call (x402): $0.01 per call in USDC on Base, no key and no account.

Parquet files older than 30 days are open without either, in the public archive.

  1. Send USDC on Polygon or Base to 0x2B1204Ed8152F888092cB4e25FeF6348C646C578: $29 for 30 days, or $290 for a year.
  2. Submit the transaction hash and your email at polystrike.xyz/#waitlist, or email them to [email protected].
  3. Keys are issued by hand, usually within a few hours. A key looks like ps_pro_....
Terminal window
curl -A "my-app/1.0" -H "X-API-Key: ps_pro_..." \
https://polystrike.xyz/api/v1/meta/trump

Send a User-Agent header: Cloudflare rejects some default client user agents (Python’s urllib, for one). The response is an object; the open market windows are in data (the numbers below are an example):

{
"timestamp": 1790795280353,
"freshness": "live",
"freshness_delay_sec": 0,
"data": [
{
"event_id": 1083675,
"event_title": "Donald Trump # Truth Social posts September 29 - October 6, 2026?",
"slug": "donald-trump-of-truth-social-posts-september-29-october-6-2026",
"start_ts": 1790697600000,
"end_ts": 1791302400000,
"snapshot_ts": 1790793220392,
"polymarket_xtracker_counter": 8,
"real_counter": 8,
"polymarket_ui_counter": 8,
"settlement_delta": 0,
"display_delta": 0,
"internal_delta": 0
}
]
}
  • real_counter is our count, polymarket_xtracker_counter is the XTracker count the market settles on, polymarket_ui_counter is what the Polymarket page shows.
  • The three *_delta fields are the gaps between them. They describe timing, not a trading signal. See Core Concepts.
  • Replace trump with elon or cruz for the other accounts. Several windows can be open at once (for example a weekly and a shorter one).
Terminal window
curl -A "my-app/1.0" -H "X-API-Key: ps_pro_..." \
"https://polystrike.xyz/api/v1/meta/elon/tweets?limit=100"

Up to 100 posts per page (limit, offset), each with is_counted: whether the post counts under the market’s rules. For Ted Cruz use /api/v1/meta/cruz/tweets; for Donald Trump use /api/v1/meta/trump/posts.

Terminal window
curl -A "my-app/1.0" -H "X-API-Key: ps_pro_..." \
https://polystrike.xyz/api/v1/prediction/elon

Despite the path name, this returns no forecasts: the counters, the posting pace over the last hour (velocity_counted_1h, velocity_all_1h) and, per bucket, its title and Polymarket market_price.

Call a data endpoint without a key. You get HTTP 402 with the payment requirements in the PAYMENT-REQUIRED header. Pay $0.01 in USDC on Base and retry with the payment in X-PAYMENT (x402 v1) or PAYMENT-SIGNATURE (x402 v2). Per-call payers get the same live data as a Data key, one call at a time; bulk parquet files and the WebSocket need a Data key.

Standard library only:

import json
import urllib.request
KEY = "ps_pro_..." # your Data key
def get(path):
req = urllib.request.Request(
"https://polystrike.xyz" + path,
headers={"User-Agent": "my-app/1.0", "X-API-Key": KEY},
)
with urllib.request.urlopen(req, timeout=15) as resp:
return json.load(resp)
body = get("/api/v1/meta/elon")
for window in body["data"]:
print(window["event_title"],
"ours", window["real_counter"],
"xtracker", window["polymarket_xtracker_counter"],
"page", window["polymarket_ui_counter"])

The MCP server exposes the same record as read-only tools. It needs your Data key too.

The agent-facing reference is polystrike.xyz/SKILL.md: every endpoint, field and error in one file. The OpenAPI spec is at polystrike.xyz/openapi.json.