Environments
majjha is two sites running the same exchange: a free play-money site and a real-money site. One login works on both, and the API is identical — only the base URL changes.
The two sites
Play — Play money — free
Every account starts with a play-money balance. No deposits, no blockchain, no risk — the full exchange with nothing at stake.
play.majjha.com · api-play.majjha.com
Live — Real money — USDC on Base
The real-money site. Deposits, balances and settlement are backed on-chain; trading uses the same API surface as play.
majjha.com · api.majjha.com
Base URLs
Play https://api-play.majjha.com REST
wss://api-play.majjha.com/ws WebSocket
Live https://api.majjha.com REST
wss://api.majjha.com/ws WebSocketEvery endpoint in this reference exists on both hosts with the same path, params and wire format. Swap the base URL and nothing else changes.
One account, two ledgers
Signing in on either site is the same identity — the same person gets the same user id on both. Everything financial, however, is kept strictly separate per site:
- Shared: your login, user id, username and profile.
- Separate: balances, orders, positions, fills and settlement history. A play-money balance never touches the live site, and vice versa.
- API keys are per-site: a
pmx_key minted on the play site authenticates only against api-play.majjha.com; mint a separate key on the live site for api.majjha.com.
Develop on play, ship to live
The play site is the sandbox: real order books, real matching, real market lifecycle — with free play money. Build and test your integration there, then point it at the live base URL when you're ready.
# play
curl "https://api-play.majjha.com/api/markets?status=ACTIVE&limit=5"
# live — identical call, different host
curl "https://api.majjha.com/api/markets?status=ACTIVE&limit=5"Live site — rolling out