PredictAsiaX — Asia's Prediction Market. Real-Time Foresight.

Web3-native prediction market API

REST + WebSocket · Engine-agnostic · Deterministic IDs · HMAC + Bearer + API key auth · self-serve sandbox tier

Get Started → REST Reference WebSocket Reference

📖 REST API

69 paths / 76 operations across 16 tag groups (Discovery, Builders, Apps, Attribution, Revenue, Connect, Subaccounts, Composer, Liquidity, Data, Webhooks, Marketplace, Oracle, Sandbox, Audit, Portfolio). Envelope response + Money as decimal string.

Open Redoc →

⚡ WebSocket API

Single connection with subscription filtering. 54 event messages + 4 client commands across market data, fast round, account, security, ops. High-throughput multiplexed stream.

Open AsyncAPI →

Sandbox — 30 seconds

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 →

Getting Started

Mint sandbox key → list markets → place a $1 order → see fee_ledger split → cancel. 5-minute curl walkthrough.

Start now →

🔐 Authentication

Bearer sk_live_* + OAuth 2.1 PKCE for hosted apps; enterprise HMAC path documented.

Read auth guide →

📦 Downloads

OpenAPI + AsyncAPI in YAML/JSON. Postman collection + sandbox/prod environments. Codegen ready.

Get files →

🔎 Verify

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 →

💰 Fees

PAF adaptive taker curve (8-20 bps effective; peak at 50/50 = PAF_BASE 20 bps, floor 8 bps at extremes), LQF quality-scaled maker rebate (3-8 bps), 7-actor split, per-market MM stipend pool, MMA whitelist tier. Real-time LQF disclosure API at /v1/lqf/config.

See the model →

Get started in 30 seconds

1

Mint an API key

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).

2

List markets (public)

curl https://api.predictasiax.com/v1/markets \
  -H "Authorization: Bearer sk_live_..."
3

Subscribe to fast ticks

wscat -c wss://predictasiax.com/ws
> {"op":"SUBSCRIBE","params":["fast_tick"]}

Design principles

Engine-agnostic

Top-level response never leaks AMM vs CLOB. One price field, one size field. meta.fill_venue optional if you need to debug routing.

Deterministic IDs

Market IDs are m_<sha256[0:16]> — idempotent create. Repeat POST /v1/markets returns the same market.

Web3 privacy first

Email, phone, IP stripped from external responses by default. Self-view paths (/v1/account) preserve. X-PII-Redacted header always present.

Money as string

USDT 6dp, BTC 8dp, ETH 18dp — never JavaScript numbers (loses precision). "1000.234567" not 1000.234567.

Envelope + snake_case

{ok, data, meta} on every canonical response. Deep snake_case keys. Timestamps have *_at_ms sibling for easy Date construction.

Chain-agnostic architecture

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.

Authentication

API Key sk_live_*

Send Authorization: Bearer sk_live_…. The tier flag on the key controls capability — self_serve for sandbox, read_live / trade_capped / trade_full / genesis / partner for production. Same prefix, same host, promote by upgrading tier.

OAuth 2.1 + PKCE

Hosted apps acting on behalf of a PAX user get an access token from connect.predictasiax.com and send it as a Bearer. Rotating refresh; reuse of a refresh token revokes the whole family.

HMAC (enterprise)

Reserved for enterprise partners with ops-provisioned signing secrets. Path exists in the middleware but is not open on the live surface — any HMAC-shaped credential currently returns 401 AUTH_INVALID. Contact ops via your enterprise agreement.

Rate limits

Per API key, sliding-window, per-endpoint-category. Response headers X-RateLimit-Remaining and Retry-After (on 429) surface state on every call.

Read-live baseline sk_live_*

Baseline: 60 req/min per key on read, 30/min on trade, 10/min on account writes. Independent bucket per endpoint category — read exhaustion never blocks trading. See Rate Limits for the full matrix.

Genesis 10×

Inaugural cohort — 10× the read_live baseline across all endpoint categories, custom bursts negotiable. Partner + institutional tiers scale to 20× and beyond per contract.