OCTHERA
Documentation

Everything you need to integrate with Octhera

API references, guides and webhook events for game aggregation, sportsbook, wallet and back office — one platform, a single set of docs.

Getting Started

Make sure to set your Callback URL and Whitelist IP on the API keys page before starting integration.
1

Launch Game URL

Get a whitelabeled game session URL for your players. Your players will be redirected directly to the game frame, masking the upstream provider.

Important:

We generate a provider-safe player name internally (alphanumeric + length limits). Your member_account remains your own internal player ID.

A unique transfer_id is generated automatically for each launch request. No changes are required on your side.

POSThttps://api.octhera.com/v1/games/launch

Authentication Headers

Content-Type: application/json
Authorization: Bearer {YOUR_API_KEY}

Request JSON

{
  "member_account": "player_001",       // Your internal player ID
  "game_uid": "JILI_SLOT_001",    // Game identifier
  "balance": 500.00,             // Initial player balance
  "home_url": "https://your-site.com"  // Redirect after exit
}

Success Response

{
  "code": 0,
  "msg": "Success",
  "payload": {
    "game_launch_url": "https://api.octhera.com/play?token=SESSION_CODE_XYZ..."
  }
}
2

Wallet Callback

Receive real-time transaction events (Bet, Win, Refund) seamlessly. When gameplay happens, we push events to your configured endpoint.

Callback URL requirement:

Your callback URL must be a valid public HTTPS URL and resolvable by DNS (example: https://example.com/callback). If your callback is unreachable, the provider settlement will fail.

CALLBACKPOST {YOUR_CALLBACK_URL}

Signature verification required: Validate the X-Signature header using your Secret Key to ensure authenticity. The signature is calculated dynamically using HMAC-SHA256 against the raw JSON string content of the webhook HTTP body.

Signature Verification (JavaScript)

const crypto = require('crypto');

// 1. Get Payload & Header
const payload = req.rawBody;
const signature = req.headers['x-signature'];
const secret = '{YOUR_SECRET_KEY}';

// 2. Calculate Expected Signature
const expected = crypto
  .createHmac('sha256', secret)
  .update(payload)
  .digest('hex');

// 3. Compare Securely
const valid = crypto.timingSafeEqual(
  Buffer.from(expected),
  Buffer.from(signature)
);

if (!valid) {
  return res.status(401).send('Invalid Signature');
}

Request Payload

{
  "serial_number": "uuid-txn-id-1234",
  "currency": "USD",
  "game_uid": "JILI_SLOT_001",
  "member_account": "player_123",    // Your local username
  "win_amount": "150.00",         // Add this to balance
  "bet_amount": "100.00",         // Deduct this from balance
  "timestamp": "1631459081871",
  "game_round": "round_id_555",
  "data": null
}

Your Expected Response

Respond with 200 OK and your updated database balance inside the JSON payload parameters.

{
  "code": 0,
  "msg": "Success",
  "balance": 550.00
}
Need help integrating? Contact Tech Support
API Access

Ready to start integrating?

Talk to our team to get sandbox credentials and access to the full Octhera API reference.