Web3-native prediction market API
REST + WebSocket · Engine-agnostic · Deterministic IDs · HMAC + Bearer + API key auth · self-serve sandbox tier
38 paths / 42 operations across 14 tag groups (Discovery, Builders, Apps, Attribution, Revenue, Connect, Subaccounts, Composer, Liquidity, Data, Webhooks, Marketplace, Oracle, Sandbox). Envelope response + Money as decimal string.
Open Redoc →Single connection with subscription filtering. 48 event types across market data, fast round, account, security, ops. High-throughput multiplexed stream.
Open AsyncAPI →Anonymous self-serve key via POST /v1/sandbox-keys. Same production host. Tier-capped at $10/order + $100/day. Fills simulated at mid-price. No email required.
Mint a key →Mint sandbox key → list markets → place a $1 order → see fee_ledger split → cancel. 5-minute curl walkthrough.
Start now →3 schemes: API Key, HMAC (Polymarket-compatible 5-header), Session Bearer. Signing code in Python / Node / Bash.
Read auth guide →OpenAPI + AsyncAPI in YAML/JSON. Postman collection + sandbox/prod environments. Codegen ready.
Get files →Public Merkle verifier over the operational ledger. Reconstruct proofs client-side and confirm any fill was included in a signed, R2-anchored batch. Six no-auth read endpoints under /v1/audit/*.
Open verifier →Sign in on predictasiax.com → Settings → API Keys, or mint an anonymous sandbox key via POST /v1/sandbox-keys. All keys are sk_live_* prefixed; sandbox is differentiated by tier=self_serve on the key (not by prefix).
curl https://api.predictasiax.com/v1/markets \
-H "X-Api-Key: sk_live_..."
wscat -c wss://predictasiax.com/ws
> {"method":"SUBSCRIBE","params":["fast_tick"]}
Top-level response never leaks AMM vs CLOB. One price field, one size field. meta.fill_venue optional if you need to debug routing.
Market IDs are m_<sha256[0:16]> — idempotent create. Repeat POST /v1/markets returns the same market.
Email, phone, IP stripped from external responses by default. Self-view paths (/v1/account) preserve. X-PII-Redacted header always present.
USDT 6dp, BTC 8dp, ETH 18dp — never JavaScript numbers (loses precision). "1000.234567" not 1000.234567.
{ok, data, meta} on every canonical response. Deep snake_case keys. Timestamps have *_at_ms sibling for easy Date construction.
Settlement layer is fully abstracted — every core table carries a chain_data JSONB envelope so on-chain metadata (block, tx hash, chain_id) rides alongside off-chain ledger rows without breaking client integrations.
Send X-Api-Key: sk_live_... header (or Authorization: Bearer). Tier flag on the key controls capability — self_serve for sandbox testing, read_live / trade_capped / trade_full / genesis / partner for production. Same prefix, same host, promote by upgrading tier.
5 headers: 4 POLY_* (POLY_ACCESS_KEY, POLY_TIMESTAMP, POLY_PASSPHRASE, POLY_SIGNATURE) + Content-Type. Signature = base64(HMAC-SHA256(secret, ts + method + path + body)).
Authorization: Bearer <session_token> — for browser / mobile client flows. Get token via POST /api/auth/login. Not intended for machine partners.
Per API key, sliding-window, per-endpoint-category. Response headers X-RateLimit-Remaining and Retry-After (on 429) surface state on every call.
Fair-use quota tuned per endpoint category (read / account / trade / create) with independent bucket accounting. See Rate Limits for the full matrix.
Inaugural cohort — 10× the read_live baseline across all endpoint categories, custom bursts negotiable. Partner + institutional tiers scale to 20× and beyond per contract.