Get Launcher URL
Securely retrieve a dynamic game launch URL that automatically adapts to:
- Geo-blocking rules
- Rotating game hosts (for availability & performance)
- Regional compliance
- Session token validation
Endpoint
POST /serviceApi.php
Content-Type: application/json
danger
Never hardcode game URLs — always use this endpoint for reliable, compliant launches.
- Real version
- Demo version
https://stg.otkgaming.com/serviceApi.php
Request body
{
"action" : "getLauncherURL",
"platform" : 8,
"partnerId" : 1,
"time" : "29-08-2026 11:47:24",
"hash" : "dd9f710d5d324f66b7429052fa97debf8347e579471ab059a27d503010a31e2a",
"data": {
"gameMode": "real",
"gameId" : "1",
"lang" : "en",
"externalToken": "80bfefc4344e78f7dc13745c0efe5",
"playerId": "operators player id",
"country" : "GB",
"ip" : "users ip address",
"exitURL" : ""
}
}
https://stg.otkgaming.com/serviceApi.php
Request body
{
"action" : "getLauncherURL",
"platform" : 8,
"partnerId" : 1,
"time" : "29-08-2026 11:47:24",
"hash" : "dd9f710d5d324f66b7429052fa97debf8347e579471ab059a27d503010a31e2a",
"data": {
"gameMode": "fun",
"gameId" : "1",
"lang" : "en",
"playerId": "operators player id",
"country" : "GB",
"ip" : "users ip address",
}
}
info
For Demo version, "gameMode" must be set to "fun". and externalToken can be empty.
info
Hash string is calculated based on privateKey, time, and "data" in JSON string.
Hash calculation example
- Node.js (JavaScript)
- Go
- Python
- PHP
https://stg.otkgaming.com/serviceApi.php
const crypto = require('crypto');
const privateKey = "utj3Gfrr0W ";
const time = "29-08-2026 11:47:24";
const data = {
gameMode: "real",
gameId: "1",
lang: "en",
token: "80bfefc4344e78f7dc13745c0efe5",
exitURL: ""
};
const dataEncoded = JSON.stringify(data); // JSON.stringify does not escape slashes
const input = privateKey + time + dataEncoded;
const hash = crypto.createHash('sha256').update(input).digest('hex');
console.log(hash);
https://stg.otkgaming.com/serviceApi.php
package main
import (
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"strings"
)
func main() {
privateKey := "utj3Gfrr0W "
time := "29-08-2026 11:47:24"
data := map[string]string{
"gameMode": "real",
"gameId": "1",
"lang": "en",
"token": "80bfefc4344e78f7dc13745c0efe5",
"exitURL": "",
}
// Marshal without escaping slashes (default in Go)
dataEncoded, _ := json.Marshal(data)
input := privateKey + time + string(dataEncoded)
hash := sha256.Sum256([]byte(input))
fmt.Println(hex.EncodeToString(hash[:]))
}
https://stg.otkgaming.com/serviceApi.php
import hashlib
import json
private_key = "utj3Gfrr0W "
time = "29-08-2026 11:47:24"
data = {
"gameMode": "real",
"gameId": "1",
"lang": "en",
"token": "80bfefc4344e78f7dc13745c0efe5",
"exitURL": ""
}
# ensure_ascii=False prevents escaping of slashes
data_encoded = json.dumps(data, separators=(',', ':'), ensure_ascii=False)
input_str = private_key + time + data_encoded
hash_obj = hashlib.sha256(input_str.encode('utf-8'))
print(hash_obj.hexdigest())
https://stg.otkgaming.com/serviceApi.php
<?php
$privateKey = "utj3Gfrr0W ";
$time = "29-08-2026 11:47:24";
$data = [
"gameMode" => "real",
"gameId" => "1",
"lang" => "en",
"token" => "80bfefc4344e78f7dc13745c0efe5",
"exitURL" => ""
];
$dataEncoded = json_encode($data, JSON_UNESCAPED_SLASHES);
$hash = hash("sha256", $privateKey . $time . $dataEncoded);
echo $hash;
?>
Result
d8ac5ca5c416c1aeadca11013e6dbaa613248739d7c1ad19e6f7601d57d4699f
Response Example
- Success
- Rejected
https://stg.otkgaming.com/serviceApi.php
{
"code" : 0,
"message" : "ok",
"data" : {
"launcherURL" : "https://stg.otkgaming.com/?partnerId=1&gameId=1&gameMode=real&lang=en&platform=8&externalToken=80bfefc4344e78f7dc13745c0efe5&exitURL="
}
}
https://stg.otkgaming.com/serviceApi.php
{
"code" : 8,
"message" : "hash not valid",
"data" : null
}
{
"code" : 9,
"message" : "platform not valid (partnerid or platform values are wrong",
"data" : null
}