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
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.
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..."
}
}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.
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
}Ready to start integrating?
Talk to our team to get sandbox credentials and access to the full Octhera API reference.