API Reference
Base URL
https://staging.satoriex.io/api/v1Authentication
Most endpoints are public. User-scoped endpoints require a JWT (JSON Web Token) issued by POST /auth/login, sent as a Bearer token in the Authorization header: Authorization: Bearer <your-token>.
Key Endpoints
Markets & Feed
/api/v1/markets/api/v1/markets/:id/api/v1/markets/:id/trades/api/v1/markets/:id/orderbook/api/v1/orderbook/:market_id/:outcome_id/api/v1/feedOrders
/api/v1/orders/api/v1/ordersWallet
/api/v1/wallet/balance/api/v1/wallet/transactionsPersonal Access Tokens
/api/v1/me/personal-access-tokens/api/v1/me/personal-access-tokens/api/v1/me/personal-access-tokens/:idWire format for order fields
All integer fields are JSON numbers (no string encoding). The fields below use compact integer types to minimise payload size and eliminate floating-point rounding errors.
sideint81 = buy, 2 = sellpriceint32Probability in basis points (BPS). 10 000 = 100%. Example: 4 200 = 42%.quantityint64Number of shares (whole units). Minimum 1.Example: side=1 (buy), price=4200 (42.00% probability), quantity=100 shares.
Rate Limits
Global limit: 100 requests per minute per authenticated user, scoped per endpoint path (anonymous traffic falls back to per-IP keys). Order endpoints (place / cancel) stack a 60 requests/minute per-IP cap on top of a 30 requests/minute per-user cap โ whichever you hit first applies. Authentication endpoints (login / register): 10 requests per minute per identifier. Token refresh: 20 requests per minute per IP. Buckets are scoped by request path โ different endpoints do not share a single bucket.
Trading fees
API trades incur the same fees as the web app: 1.5% trading fee deducted from seller proceeds at match. Maker rebate is 0.05% (5 BPS) on limit fills, or 0.10% (10 BPS) for API-key authenticated trades. See the Trading Guide for the full fee schedule and a worked example.
Response Format
{"code": 0, "msg": "ok", "data": {...}}{"code": 50000, "msg": "internal error", "data": null, "trace_id": "abc123def456"}On 5xx errors the envelope also includes a non-empty trace_id field (e.g. "trace_id": "abc123"). Include this value when reporting issues to support.
Error Codes
0Success โ request completed normally40000Bad request โ invalid or missing parameters40100Authentication required โ sign in or refresh your token40300Forbidden โ KYC tier insufficient or permission denied4040Resource not found42900Rate limit exceeded โ slow down and retry50000Internal server error โ contact support if persistentVersioning and breaking-change policy
The current API version is v1 (/api/v1). Breaking changes โ field removals, type changes, semantic behaviour changes โ will be announced on the changelog at least 30 days before taking effect and will carry a new version prefix. Non-breaking additions (new optional fields, new endpoints) may ship without notice. Deprecated endpoints return a Sunset response header (RFC 8594) indicating the removal date.