POST /exchange endpoint — routed by the action.type field in the request body. Reads flow through POST /info, routed by the type field. Real-time market and account updates are delivered over WebSocket. This action-based design keeps the interface minimal and consistent across all trading operations.
API Channels
The UpsideMAX API exposes three channels:Action-Based Routing
Unlike REST APIs that use distinct URLs per resource, UpsideMAX routes all requests by a type field in the JSON body:POST /exchange— All state-changing operations (place order, cancel, register account, etc.) share this single URL. The server dispatches byaction.type.POST /info— All read queries share this URL. The server dispatches by the top-leveltypefield.
POST to the same URL and change only the JSON payload to perform different operations.
Environments
Mainnet is the production environment and trades real funds; Devnet is a separate environment for integration testing. Accounts and funds are not shared between them, and each signs over its own chain ID — see Requests.Constraints
- Contracts: discover them at runtime from
configs. Filter tostatus: "Active"first — the response also returns delisted contracts, with complete parameters and no other marker — then match onname, never oncontractId. The listed set is small and changes; do not build against a fixed list. - Coins: each contract names its own
baseCoinIdandquoteCoinId, resolved against thecoinsarray in the same response. Read the quote coin per contract rather than assuming one settlement asset. - Prices & sizes (
p,s): Raw integer strings. Scale each with that contract’s ownpriceScale/qtyScalefromconfigs, and snap to itstickSize/stepSize.
Contract and coin IDs are assigned by the server — always enumerate them from the
configs endpoint rather than hardcoding. configs is the authoritative source for tick sizes, scales, and leverage tiers per contract.Explore the API
Python SDK
The fastest way in: a typed client that signs for you.
pip install upside-python-sdk.Quickstart
Register an account, place a limit order, and cancel it — all in under 50 lines of Python.
Authentication
Learn how to sign
POST /exchange requests using ECDSA secp256k1.Exchange API Overview
Explore all write actions: orders, cancels, account registration, and more.
Info API Overview
Query orders, balances, market data, and configuration via
POST /info.WebSocket Overview
Subscribe to real-time order book updates, trades, and account events.
Error Codes
Reference for HTTP-level and business-level error codes with troubleshooting tips.
