Quick Start
Get a working integration with INVO Network in about 30 minutes. Follow these four steps.
๐งช Build against Sandbox first
Always start in Sandbox at dev.console.invo.network. Sandbox uses test payment cards โ no real money moves. Once your integration is solid, switch to console.invo.network for production.
Register Your Game
Create a developer account and register a sandbox game.
Copy Your SDK Key
Format ivsdk_<random>. Used as X-Game-Secret-Key on every API call.
Make Your First Call
A read against player balance to confirm your key works.
Go Live
Re-register on production and swap your key + base URL.
Step 1: Register Your Game
Choose your environment and complete the game registration wizard:
The wizard collects:
- 1.Game Information: game icon, cover image, name, platforms.
- 2.SDK Key: auto-generated. Format
ivsdk_<random>. Server-side use only. - 3.Currency setup: branded currency name, symbol, transfer policy (allowed destinations).
- 4.Payout setup (optional): link a bank account so you can withdraw your developer revenue later.
Step 2: Make Your First API Call
Authentication is a single header: X-Game-Secret-Key. No login flow, no token refresh, no cookies. Send the header from your game backend (server-side only).
Read a player balance (Sandbox)
// Sandbox base URL: https://sandbox.invo.network/sandbox
const SDK_KEY = process.env.INVO_SDK_KEY; // ivsdk_<random>
const r = await fetch(
'https://sandbox.invo.network/sandbox/api/player-balances/player/by-email/test@example.com',
{ headers: { 'X-Game-Secret-Key': SDK_KEY } }
);
if (r.status === 404) {
// Player has never interacted with your game yet โ that's fine.
// The player auto-creates the first time they hit a writing endpoint
// (purchase-currency, purchase-item, claim-transfer, etc.).
console.log('No player record yet.');
} else {
console.log(await r.json());
}Sandbox vs Production base URLs
// Sandbox โ test cards, no real money const SANDBOX_BASE = 'https://sandbox.invo.network/sandbox'; // Production โ live transactions const PROD_BASE = 'https://invo.network'; // All endpoints share the same path suffix: // <BASE>/api/player-balances/player/by-email/<email> // <BASE>/api/item-purchases/purchase-item // <BASE>/api/transfers/initiate-transfer // etc.
Expected response (existing player)
{
"player": {
"player_id": 12345,
"player_name": "Test Player",
"player_email": "test@example.com",
"identity_id": "f3a1b8c0d4e5..."
},
"balances": [
{
"currency_id": 1,
"currency_name": "Gold Coins",
"available_balance": "1000.00",
"reserved_balance": "0.00",
"total_balance": "1000.00"
}
],
"summary": {
"total_value": "1000.00",
"currency_count": 1,
"has_funds": true
},
"last_updated": "2024-12-09T12:34:56Z"
}Step 3: Explore Core Features
Once that first call works, build out from here:
๐ฐ Currency Purchases
Players buy your branded currency with real money via hosted checkout.
View Currency Purchase API โ๐ Item Purchases
Players spend their balance on items inside your game. 90% goes to you, 10% Invo network fee.
View Item Purchase API โ๐ Cross-Game Transfers
A player moves their own balance from one game to another in the network.
View Transfer API โ๐ Player-to-Player Sends
A player sends currency to another player by phone โ same game or cross-game.
View Send API โIntegration Best Practices
- โขServer-side only. Never embed your SDK key in a Unity/Unreal/mobile build or browser code.
- โขIdempotency. All write endpoints accept a
client_request_id. Pass a fresh UUID per logical action and replay the same id on retry โ duplicates return 409 with the original record. - โขTest on Sandbox first. Sandbox is a fully isolated database with test-card-only payments.
- โขHTTPS only. Plain-HTTP requests are rejected at the edge.
- โขStore the
identity_idreturned on player records โ it's the stable cross-game join key for the same human across the network. - โขHandle 5xx with retry. Idempotency-keyed requests are safe to retry on a 5xx; the first successful result is replayed.