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 Upside API exposes three channels:Action-Based Routing
Unlike REST APIs that use distinct URLs per resource, Upside 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
Testnet Constraints
The QA and UAT environments currently operate with a single contract:- Contract: SOL1
- Contract ID:
a=1 - Quote currency: USDT1
- Price (
p): Must be an integer; maximum value is10000 - Size (
s): Must be a positive integer
These constraints apply to the testnet only. Production contracts will support decimal prices and sizes, and will list additional assets beyond SOL1.
API Version
Current API version: 0.5.4Explore the API
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.Write API Overview
Explore all write actions: orders, cancels, account registration, and more.
Read 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.