x-api-key. Public market reads work without one; user
routes that are not public reject a missing key with 401 Invalid API Key provided.
United Market is now live on BNB Smart Chain mainnet. We just launched — start trading on-chain prediction markets today.
How authentication works
x-api-key— required on routes that are not public (API key management, referral summary, most profile writes). The web app always sends a shared key; for your own integrations, create a personal key (below). Public market reads and SIWE nonce/verify do not require it.- Missing or unknown keys return
401{ "message": "Invalid API Key provided", "error": "Unauthorized", "statusCode": 401 }— even if you also sent a SIWE bearer. That message is from the API-key guard, not JWT validation. Authorization: Bearer <token>— additionally required for user-specific endpoints (your orders, your keys, etc.). Obtain it via Sign In & Trade.
Create a key
Sign in with SIWE first, then:key is shown once — store it immediately:
/api-keys.
Use a key
Rotate or revoke
Secrets are stored hashed and can never be shown again after creation. If you lose a key, rotate it.
Rate limits
Requests are rate-limited per key (or as anon for the shared web key / no key). Responses includeX-RateLimit-Limit-short (per second), X-RateLimit-Limit-medium (per minute), plus Remaining and Reset variants; exceeding a limit returns 429 Too Many Requests. Respect both windows — they are independent, not perMin / 60.
Fallback ceilings when a route has no @RouteLimit class:
The shared web key is anon, not DEFAULT. On
market-read that is 100/s and 3000/min. A new DEFAULT personal key is tighter than anon on several read classes — if a bot 429s after switching keys, ask for PRO or MM rather than creating another DEFAULT key.
Order-write and cancel have their own class budgets (MM write is 60/s and 3000/min; cancel is roughly 2× write). Batch posts are weighted by order count.
Contact the team to raise your tier.