Same API, same host, four paths in. Pick the one that matches how you already work — the underlying platform is identical.
Anonymous sandbox key in 30 seconds. No email, no signup. Same production URL, tier-capped for safety. Move to production when ready.
Read Solo dev path →PAX ships the industry-standard 5-header HMAC signing pattern (POLY_ACCESS_KEY / POLY_TIMESTAMP / POLY_PASSPHRASE / POLY_SIGNATURE). Swap URL + credentials, adapt endpoint shapes to the PAX REST schemas.
Published in the official MCP Registry as com.predictasiax/mcp. One-line config, seven agent tools available immediately (market_search, place_order, portfolio_read, ...).
Submit an application via POST /v1/apply with your track. Most tracks (app / agent / data / distribution / market / liquidity / oracle / reviewer / operator + RFB variants) return a live sk_live_* key in the response body immediately. Genesis and institutional tracks route to human review for elevated capabilities.
Public endpoint, no authentication, no email. Rate-limited to 1 mint per IP + 1 per browser fingerprint per day. Same host as production — sandbox tier is a flag on the key, not a separate URL.
Mint an anonymous sandbox key
curl -X POST https://api.predictasiax.com/v1/sandbox-keys \
-H "Content-Type: application/json" \
-d '{"org_name":"my-app"}'
Save the key (shown once) + set env
export SK=sk_live_7d40ce10_12b638913cadfbbd...
Install an official SDK — or stick with curl
# Python
pip install pax-api
# TypeScript / Node
npm i @predictasiax/api
# Or use curl / Postman collection — no SDK required
Place your first order (Python)
from pax_api import PaxClient
with PaxClient(api_key="$SK", env="sandbox") as pax:
markets = pax.list_markets(category="crypto", limit=5)
order = pax.place_order(
market_id=markets["data"]["markets"][0]["id"],
outcome_id="yes", side="buy", order_type="limit",
size="2", price="0.55",
client_order_id="my-first-order",
)
print(order["data"]["order"]["status"]) # → "filled"
print(order["data"]["fee"]["splits"]) # 5-actor split
Ready for production? Sandbox caps orders at $10 each / $100 daily. To lift caps, submit Request access to move up to trade_capped or trade_full — same URL, same key format, tier flag updates in place.
PAX implements the industry-standard 5-header HMAC signing pattern, so client-side signing code ports without changes. Endpoint shapes and market conventions differ — the REST reference documents each surface one-for-one.
Read the REST endpoint reference
PAX ships attribution, revenue ledger, HMAC auth, and a public Merkle verifier as protocol-level primitives. The REST reference gives concrete endpoint shapes for each surface.
Get sandbox credentials
Same 30-second flow as Solo path: POST /v1/sandbox-keys. For an HMAC-signed key with secret + passphrase, mint via Builder Portal after Org path onboarding (see Path 4).
Point your client at PAX
BASE_URL = "https://api.predictasiax.com/v1"
# Your existing 5-header signing function returns:
# POLY_ACCESS_KEY = <api_key>
# POLY_TIMESTAMP = <unix_seconds>
# POLY_PASSPHRASE = <passphrase>
# POLY_SIGNATURE = base64(HMAC_SHA256(secret, ts+method+path+body))
# — no changes to signature code.
Adapt response shape
All PAX responses use a top-level data envelope; monetary fields are decimal strings (never floats). Market IDs are m_<sha256[0:16]> — deterministic and idempotent. See REST reference for full schemas.
Verify fills independently
Every fill is recorded in a hash-chained event log, Merkle-batched, and anchored to R2. Reconstruct inclusion proofs client-side via /verify — six no-auth /v1/audit/* endpoints, OpenZeppelin-compatible sorted-pair SHA-256.
PredictAsiaX is published in the official Model Context Protocol Registry as com.predictasiax/mcp. Claude Desktop, Cursor, Windsurf and other MCP clients can discover and connect natively.
Get a PAX API key
Any tier works. For personal use: mint via Solo path (POST /v1/sandbox-keys). For a distributed product: Org path.
Add the MCP server config
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the platform-equivalent path:
{
"mcpServers": {
"predictasiax": {
"url": "https://mcp.predictasiax.com/mcp/call",
"headers": {
"Authorization": "Bearer sk_live_YOUR_KEY"
}
}
}
}
Cursor / Windsurf follow the same MCP client config convention — see their respective docs for the config file location.
Restart the client
The agent will discover 7 tools on connect.
Available tools
| Tool | Purpose |
|---|---|
market_search | Full-text + facet search across live markets |
probability_movers | Markets with the largest recent probability shift |
resolution_evidence | Pull the underlying source data for a resolved market |
portfolio_read | Positions + P&L for the calling key |
place_order | Submit a trade (tier caps apply) |
cancel_order | Cancel an open order |
sandbox_agent_examples | Guided sample prompts + market scenarios for agent testing |
Talk to your agent
You: "Find any crypto markets where the probability shifted more than 5% in the last hour."
Agent: [calls probability_movers → market_search → returns summary]
You: "Buy 5 shares of YES on the BTC-150k market at 0.42 if it's still open."
Agent: [calls place_order with tier-appropriate caps]
Submit an application via POST /v1/apply with your track. Provisioning behaviour depends on the track: 18 tracks auto-provision a live sk_live_* key on submit; genesis and institutional route to human review for elevated capabilities.
Pick a track
The track field determines both what capabilities the resulting key has and whether provisioning is instant or reviewed.
| Track family | Members | Provisioning |
|---|---|---|
| Auto-provisioning (18 tracks) | app, agent, data, distribution, market, liquidity, oracle, reviewer, operator, self_serve, rfb-japan-app, rfb-ai-agent, rfb-telegram-bot, rfb-news-media, rfb-sports, rfb-election, rfb-terminal, rfb-mm-stack |
Returns a live sk_live_* key in the response body. Ready to trade in seconds. Starts on self_serve tier. |
| Human-reviewed (2 tracks) | genesis (10× rate multiplier, early access to unreleased endpoints)institutional (signed SLA, dedicated infra, negotiated fee splits) |
Returns an application_code. Admin operator reviews and issues a tier-flagged key out-of-band via the contact channel or email you provided. |
Submit the application
curl -X POST https://api.predictasiax.com/v1/apply \
-H "Content-Type: application/json" \
-d '{
"track": "app",
"org": "my-project",
"url": "https://my-project.com",
"description": "AI-first prediction market UI for Japan retail."
}'
Or use the web form. Rate-limited to 5 applications per hour per IP. All fields except track and description are optional — but org and url help admin operators triage reviewed tracks faster.
Response — auto-provisioning track
{
"ok": true,
"application_code": "ba_<24-hex>",
"track": "app",
"status": "auto_approved",
"auto_provisioned": true,
"api_key": "sk_live_xxxxxx_...", // shown ONCE — save now
"key_prefix": "xxxxxx",
"user_id": "app_...",
"next_step": "https://docs.predictasiax.com/getting-started"
}
The key is a live sk_live_* on the self_serve tier — same tier as an anonymous sandbox key ($10/order, $100/day caps). Send it in X-Api-Key header or as Authorization: Bearer. Save the application_code — you'll use it later to check status or request a tier upgrade.
Response — reviewed track (genesis / institutional)
{
"ok": true,
"application_code": "ba_<24-hex>",
"track": "genesis",
"status": "pending_review",
"auto_provisioned": false,
"next_step": "Confirmation sent to [email protected].
Admin operator will follow up after review.
Poll status: GET /v1/apply/ba_..."
}
On submission the system fires three notifications: (1) admin channel receives a Telegram alert, (2) the admin operator inbox receives a review email, (3) if you provided an email, you receive a confirmation. An admin operator then reviews the application (fit check, jurisdiction, intended scope). On approval, the operator issues a tier-flagged sk_live_* API key and delivers it via the email or contact channel on the application.
Poll status any time:
curl https://api.predictasiax.com/v1/apply/ba_<24-hex>
Tier auto-graduation (auto-provisioning tracks)
Auto-provisioning tracks start on self_serve (same $10/order + $100/day caps as anonymous sandbox). A background cron scans every 15 minutes and auto-graduates based on 30-day attributed CLOB volume (execution_builder_id on clob_trades):
| From tier | To tier | Threshold (30d attributed USDT) |
|---|---|---|
self_serve | read_live | $100 |
read_live | trade_capped | $1,000 |
Auto-graduation caps at trade_capped. trade_full (uncapped), genesis (10× rate multiplier), and partner (institutional SLA) require admin operator approval. Every auto-graduation writes to the builder_attribution_log audit trail and, if you provided an email during application, you receive a notification email. Dedup window: 24 h between graduations for the same builder.
Configure & ship
/v1/apply works as Bearer / X-Api-Key. To use the industry-standard 5-header HMAC scheme, mint a signable key via POST /v1/keys once you're signed into the Builder Portal (auto-issued for reviewed tracks; self-serve for auto tracks).financial_event ledger on Neon. Auto-tier split (30 bps total): acquisition_builder 6 / execution_builder 6 / operator 3 / market_creator 5 / lp 7 / platform_net 3 residual. Progressive tier bumps builder share to 14 bps at trade_full, 16 bps at genesis/partner.GET /v1/attribution/fills · GET /v1/revenue · GET /v1/revenue/ledger. Payouts requested via admin operator or Portal.POST /v1/webhooks registers HMAC-signed event streams: trade.filled, market.resolved, payout.available, payout.paid, auth.token.revoked.See Builders page for the full builder-program spec and tier upgrade path.
Every path lands on the same platform. These invariants hold regardless of how you onboarded:
https://api.predictasiax.com/v1 — sandbox and production share one host. Tier caps are enforced on the key, not by URL swap.
industry-standard 5-header HMAC pattern (POLY_*) for machine-to-machine. Bearer for sandbox. OAuth 2.1 PKCE S256 for end-user delegation.
30 bps CLOB taker fee (cut from 50 bps on 2026-09-06), auto-tier split: acquisition_builder 6 / execution_builder 6 / operator 3 / market_creator 5 / lp 7 (+ platform_net 3 residual that absorbs unfilled attribution). Progressive tier: 14 bps builder at trade_full, 16 bps at genesis/partner.
Every fill is hash-chained, Merkle-batched, and R2-anchored. Six no-auth /v1/audit/* endpoints let any third party independently verify inclusion.
REST responses wrap payload in data; errors surface in error with typed code. Money is always a decimal string.
All writes accept an Idempotency-Key header. Safe to retry within 24h. Deterministic market_id — repeated create returns the same market.
Full 6-step curl walkthrough. Mint sandbox key → list markets → place order → see fee ledger → cancel.
38 paths / 42 operations across 14 tag groups. Full request/response schemas.
48 event types. Single connection with subscription filtering.
Three schemes: API Key, HMAC (industry-standard 5-header), Session Bearer. Signing code in Python / Node / Bash.
Interactive Merkle proof verifier + 4-language snippets. Reconstruct proofs client-side.
Full spec: tiers, attribution model, grant program, payout cadence.
OpenAPI + AsyncAPI in YAML/JSON. Postman collection + SDKs (Python + TypeScript). Codegen ready.
Typed error codes across all surfaces. Actionable messages, correlation via request_id.
Per-tier limits: sandbox 60/min, trade_capped 300/min, trade_full 3000/min.