Overview
SX Bet runs a full testnet environment (called Toronto) that mirrors mainnet. Use testnet to develop and test your integration without risking real funds, then switch to mainnet by updating a few configuration values.Testnet setup
1
Create a testnet account
Sign up at toronto.sx.bet and export your private key from the assets page,
the same way you would on mainnet.
2
Deploy and fund a proxy wallet
Every order settles from a proxy wallet, and a deployed proxy is mandatory before your first order. Then you must transfer USDC to the proxy wallet.
The simplest way to do this is through the toronto.sx.bet UI, which does both for you. You can also do it programmatically with
POST /user/deploy-proxy and POST /user/transfer-to-proxy.3
Get testnet funds
Open a support chat on sx.bet to receive testnet USDC.
4
Get your API key
Go to your account page on toronto.sx.bet and generate an API key from the API section. It is shown once, so copy it immediately. Testnet keys are network-specific and won’t work on mainnet. See API keys.
Configuration reference
Everything that differs between testnet and mainnet:Switching to mainnet checklist
When you’re ready to go live:- Update your config to use mainnet values
- Use your mainnet private key and API key — testnet keys won’t work on mainnet. See API keys
- Deploy a mainnet proxy wallet and fund it with USDC. A proxy deployed on Toronto does not exist on mainnet
- Confirm your order signing domain uses
chainIdandactiveAsset.escrowAddressfrom/metadata/obv3. See EIP-712 order signing - Size orders against
limits.orderSizeMinimumBaseUnits— the mainnet minimum is five times the testnet one - Round odds with
oddsLadderStepSizefrom metadata. See Odds rounding - Point your realtime client at the mainnet WebSocket URL. See Initialization → Connect
- Place one minimum-size order and cancel it before scaling up
Common pitfalls
Wrong chain ID in signatures
If orders come back withInvalid OBv3 order EIP-712 signature, check that your signing domain’s chainId matches the network you’re targeting. Testnet is 79479957, mainnet is 4162.
Wrong Escrow address
activeAsset.escrowAddress is the EIP-712 domain’s verifyingContract and differs per environment. The value in the generated Swagger example matches neither environment — read it from GET /metadata/obv3.
Wrong token addresses
USDC has different contract addresses on each network, andbaseToken is a signed field of the order. Using a testnet token address on mainnet (or vice versa) means the order you signed is not the order the exchange will accept.
Order size below the mainnet minimum
Testnet accepts 1 USDC orders; mainnet requires 5. An integration sized against a testnet constant has every order rejected withTOTAL_BET_SIZE_TOO_LOW. The error body carries the applicable minimum.
No proxy on the new network
Proxy wallets are per-environment. A first mainnet order without a deployed proxy returnsPROXY_NOT_DEPLOYED.
Testnet API key on mainnet
API keys are network-specific. Generate a separate key for each environment.Related
References →
Full list of addresses, URLs, and chain IDs.
Exchange metadata →
The runtime config every integration reads at startup.
Funding →
Move USDC into your proxy on either network.
Quickstart →
End-to-end guide from setup to first order.