API v1.0
Portal API
Aktif · REST API v1.0

Betx Casino
API Dokümantasyonu

Betx casino gaming platformuna entegre olmak için tam başvuru kılavuzu. Tek bir birleşik API ile yüzlerce oyun sağlayıcısına bağlanın, operator ve oyuncu yönetimini gerçekleştirin, seamless wallet callback'lerini uygulayın.

23
Endpoint
100+
Oyun Sağlayıcı
2
Entegrasyon Modu
Base URL
HTTPShttps://cloneapi.betxsolutions.net
Ne İnşa Edebilirsiniz?
🏢

Operator Yönetimi

Alt operatör oluşturun, hiyerarşi yönetin, bakiye transfer edin.

👤

Oyuncu Yönetimi

Oyuncu kaydedin, hesap bilgilerini sorgulayın, para yatır/çek.

🎰

Oyun Başlatma

Güvenli oyun URL'leri oluşturun, sağlayıcıları listeleyin.

🔄

Seamless Wallet

Gerçek zamanlı bakiye, bahis, kazanç ve iptal callback'leri.

🎁

Bonus Çağrıları

Free spin ve bonus call oturumlarını kaydedin ve yönetin.

📊

İşlem Geçmişi

Raporlama ve denetim için işlem geçmişini sorgulayın.

ℹ️
Betx iki entegrasyon modunu destekler: Seamless Wallet (sunucunuz callback alır) ve Balance Transfer (barındırılan cüzdan). Altyapınıza göre seçin.
Kimlik Doğrulama
Tüm Main API istekleri Authorization header'ında Bearer token gerektirir. API tokenınız operator hesabınız onaylandığında verilir. Erişim için api@betxsolutions.net adresine yazın.
Zorunlu Header'lar
HeaderDeğerZorunlu
AuthorizationBearer <API_TOKEN>EVET
Content-Typeapplication/jsonEVET
Acceptapplication/jsonEVET
Örnek İstek
HTTP
GET https://cloneapi.betxsolutions.net/v1/operator/info
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
Accept: application/json
Seamless Wallet İmzası
Callback istekleri X-Request-Signature header'ı içerir. Bu imzayı doğrulayarak isteğin Betx'ten geldiğini teyit edin. Algoritma için destek ekibiyle iletişime geçin.
Entegrasyon Rehberi
Casino platformunuzu Betx API ile canlıya almak için bu adımları izleyin.
Hızlı Başlangıç
1

API Kimlik Bilgilerini Alın

Operator hesabı ve Bearer token almak için api@betxsolutions.net adresine yazın.

2

Operatorünüzü Yapılandırın

/v1/operator/update ile callback URL'nizi, RTP'nizi (%50–%95) ve izin verilen IP adreslerini ayarlayın.

3

Oyuncuları Kaydedin

Oyun başlatmadan önce /v1/player/create ile oyuncuyu kaydedin. Yanıtta playerCode döner.

4

Wallet Entegrasyonunu Yapın

Seamless için: sunucunuzda Balance, Bet, Win, Cancel endpoint'leri uygulayın. Transfer için: deposit/withdraw kullanın.

5

Oyunları Başlatın

/v1/game/launch ile oyuncu ID, provider ID, oyun kodu ve para birimini göndererek güvenli URL alın.

⚠️
Zaman Aşımları: Bet callback → 3 saniye. Win ve Cancel callback → 4 saniye. Aşımda tur otomatik iptal edilir.
Hata Kodları
Seamless Wallet callback yanıtlarında statusCode alanı kullanılır.
Seamless Wallet Hata Kodları
KodAçıklamaTetiklendiği Yer
ERR_NOT_AUTHENTICATEDOyuncu oturumu aktif değilBalance, Bet, Win, Cancel
ERR_INVALID_PLAYER_IDGeçersiz oyuncu ID'siBalance, Bet
ERR_INTEGRITY_CHECK_FAILEDİmza doğrulama başarısızBalance
ERR_NOT_ENOUGH_MONEYYetersiz bakiyeBet
ERR_TRANSFER_DOES_NOT_EXISTOrijinal bahis işlemi bulunamadıCancel
ERR_UNKNOWNDahili sunucu hatasıTüm callback'ler
⚠️
Bet hatalarında mevcut oyun turu iptal edilir. Reversal isteği otomatik gönderilebilir. Bet için yeniden deneme yapılmaz.
ℹ️
Win ve Cancel zaman aşımı veya hata durumunda 2 kez daha otomatik denenir. Aynı transactionId gelirse yalnızca bir kez işleyin (idempotency).
POST/v1/operator/create
Alt Operator Oluştur
Kimliği doğrulanmış bir operatorün kendi hiyerarşisi altında yeni bir alt operator oluşturmasını sağlar. Yeni operator üst operatordan belirli özellikleri devralır. İlk girişten önce admin onayı gereklidir.
İstek Gövdesi
JSON
{
  "operatorId": "alt_operator_1",
  "password": "##GüçlüŞifre@@",
  "name": "Alt Operator 1",
  "currency": ["USD", "EUR"],
  "ggrRate": 5,
  "level": "operator",
  "parentId": "ust_operator_1",
  "callbackURL": "https://siteniz.com/api/callback",
  "allowedIPs": ["1.2.3.4"]
}
Parametreler
AlanTürZorunluAçıklama
operatorIdstringEVETAlt operator için benzersiz tanımlayıcı
passwordstringEVETGiriş şifresi (güçlü olmalı)
namestringEVETOperatorün görüntülenen adı
currencystring[]EVETDesteklenen para birimi kodları (ISO 4217)
ggrRatenumberEVETBrüt Oyun Geliri yüzdesi (0–100)
levelstringEVEToperator veya agent
parentIdstringEVETÜst operator ID'si
callbackURLstringEVETSeamless wallet callback endpoint URL'si
allowedIPsstring[]HAYIRİzin verilen IP adresleri
Yanıt
JSON
{ "success": true, "message": "OK" }
GET/v1/operator/info
Operator Bilgilerini Getir
Kimliği doğrulanmış operatorün ad, RTP, bakiye ve callback URL dahil ayrıntılı bilgilerini döner. Parametre gerekmez.
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": {
    "id": "operator_id_1",
    "name": "Benim Casinoum",
    "parentId": "ust_operator_1",
    "balance": [{ "currency": "USD", "amount": 5000 }],
    "rtp": 95,
    "callbackURL": "https://siteniz.com/api/callback",
    "allowedIPs": ["1.2.3.4"],
    "providers": [1, 2],
    "ggrRate": 4,
    "level": "agent",
    "paymentMethod": "deposit"
  }
}
PATCH/v1/operator/update
Operator Güncelle
Kimliği doğrulanmış operatorün kendi yapılandırmasını güncellemesini sağlar. Yalnızca gönderilen alanlar güncellenir.
İstek Gövdesi
JSON
{
  "name": "Benim Casino Markam",
  "rtp": 95,
  "callbackURL": "https://siteniz.com/api/callback",
  "allowedIPs": ["1.2.3.4", "5.6.7.8"]
}
AlanTürZorunluAçıklama
namestringHAYIROperator/marka görüntü adı
rtpnumberHAYIROyuncuya Dönüş yüzdesi (50–95)
callbackURLstringHAYIRSeamless wallet callback endpoint'i
allowedIPsstring[]HAYIRİzin verilen sunucu IP adresleri
POST/v1/operator/transfer-balance
Bakiye Transfer Et
Kimliği doğrulanmış bir operatörün alt operatörlerine bakiye transfer etmesini sağlar. Yeterli bakiye zorunludur.
İstek Gövdesi
JSON
{
  "targetOperatorId": "alt_operator_11",
  "currency": "USD",
  "amount": 100,
  "remark": "Aylık bütçe transferi"
}
AlanTürZorunluAçıklama
targetOperatorIdstringEVETTransfer alacak alt operatorün ID'si
currencystringEVETPara birimi kodu (örn. USD)
amountnumberEVETTransfer edilecek tutar
remarkstringHAYIRİsteğe bağlı not
POST/v1/player/create
Oyuncu Oluştur
Harici oyuncuyu Betx API'sine bağlar. Mevcut değilse yeni profil oluşturulur. Dönen playerCode oyuncunun API'deki benzersiz numarasıdır. Oyun başlatmadan önce çağrılmalıdır.
İstek Gövdesi
JSON
{ "playerExternalId": "sisteminizdeki_oyuncu_id" }
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": { "playerCode": 100000121 }
}
GET/v1/player/info
Oyuncu Bilgilerini Getir
Harici ID'ye göre oyuncu hakkında ayrıntılı bilgi ve güncel bakiye döner.
Sorgu Parametresi
JSON
{ "playerExternalId": "sisteminizdeki_oyuncu_id" }
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": {
    "playerCode": 100000121,
    "balance": [{ "currency": "USD", "amount": 5000 }]
  }
}
POST/v1/player/wallet/deposit
Oyuncu Cüzdanına Para Yatır
Belirtilen tutarı oyuncunun cüzdanına yatırır. Yalnızca pozitif tutarlar kabul edilir. Seamless Wallet entegrasyonunda gerekli değildir.
İstek Gövdesi
JSON
{
  "playerExternalId": "sisteminizdeki_oyuncu_id",
  "currency": "USD",
  "amount": 1000.50
}
POST/v1/player/wallet/withdraw
Oyuncu Cüzdanından Para Çek
Belirtilen tutarı oyuncunun cüzdanından çeker. İşlem öncesinde yeterli bakiye doğrulanır. Seamless Wallet entegrasyonunda gerekli değildir.
İstek Gövdesi
JSON
{
  "playerExternalId": "sisteminizdeki_oyuncu_id",
  "currency": "USD",
  "amount": 500.00
}
GET/v1/provider/list
Oyun Sağlayıcılarını Listele
Tüm mevcut oyun sağlayıcılarının listesini döner. Parametre gerekmez.
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": [{
    "providerId": 1,
    "providerName": "Pragmatic Play",
    "logo": "https://cdn.example.com/logos/pragmaticplay.png",
    "status": 1
  }]
}
GET/v1/provider/settings
Sağlayıcı Ayarlarını Getir
Belirli bir sağlayıcıya uygulanan mevcut ayarları getirir.
Sorgu Parametreleri
AlanTürZorunluAçıklama
providerIdnumberEVETSağlayıcı ID'si
currencystringEVETPara birimi kodu (örn. USD)
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": { "lobbyshow": true, "promoshow": true, "slotMinBet": 0, "slotmaxBet": 0 }
}
PUT/v1/provider/settings/:providerId/:currency
Sağlayıcı Ayarlarını Güncelle
Belirli bir sağlayıcı için para birimi bazında ayarları günceller. Gövde yapısı sağlayıcıya göre değişir. Aşağıdaki örnek Pragmatic Play içindir.
URL Parametreleri
AlanTürAçıklama
providerIdnumberSağlayıcı ID'si
currencystringPara birimi kodu (örn. USD)
İstek Gövdesi (Pragmatic Play)
JSON
{ "lobbyshow": true, "promoshow": true, "verify": false }
GET/v1/game/list/:providerId
Oyunları Listele
Sağlayıcı ID'sine göre filtrelenmiş operatöre ait oyunları döner.
URL Parametresi
AlanTürAçıklama
providerIdnumberOyunlarını listelemek istediğiniz sağlayıcının ID'si
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": [{
    "gameID": "vswaysdogs",
    "gameName": "The Dog House Megaways",
    "gameImage": "https://cdn.example.com/images/120x120/1.png",
    "gameType": 0, // 0: Slot, 1: Canlı, 2: Diğer
    "inMaintenance": false
  }]
}
POST/v1/game/launch
Oyun Başlat
Belirtilen oyuncu ve oyun için güvenli bir oyun başlatma URL'si oluşturur. Bu URL iframe veya yeni sekmede kullanılabilir.
İstek Gövdesi
JSON
{
  "playerExternalId": "sisteminizdeki_oyuncu_id",
  "providerId": 1,
  "gameCode": "vswaysdogs",
  "language": "tr",
  "currency": "USD",
  "returnUrl": "https://siteniz.com",
  "rtp": 0
}
AlanTürZorunluAçıklama
playerExternalIdstringEVETSisteminizdeki oyuncu tanımlayıcısı
providerIdnumberEVETOyun sağlayıcısının ID'si
gameCodestringEVETBaşlatılacak oyunun kodu
languagestringEVETDil kodu (örn. tr, en)
currencystringEVETOyun oturumu para birimi
returnUrlstringHAYIROyun çıkışında yönlendirilecek URL
rtpnumberHAYIROturum RTP değeri (0 = operator varsayılanı)
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": { "gameUrl": "https://games.example.com/launch?token=..." }
}
POST/v1/game/kick
Oyuncuyu Oyundan At
Oyuncunun aktif oyun oturumunu zorla kapatır. Hareketsizlik yönetimi, güvenlik ya da manuel müdahale için kullanılır.
İstek Gövdesi
JSON
{ "playerExternalId": "sisteminizdeki_oyuncu_id" }
Yanıt
JSON
{ "success": true, "message": "OK" }
GET/v1/transaction/list
İşlemleri Listele
Bahisler, kazançlar, iadeler ve diğer hareketleri içeren sayfalanmış işlem listesi döner.
Sorgu Parametreleri
AlanTürZorunluAçıklama
startTimedatetimeEVETBaşlangıç (YYYY-MM-DD HH:mm:ss)
endTimedatetimeEVETBitiş (YYYY-MM-DD HH:mm:ss)
offsetnumberHAYIRSayfalama için atlanacak kayıt sayısı
limitnumberHAYIRMaksimum kayıt sayısı
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": {
    "total": 100, "offset": 0, "count": 100,
    "list": [{
      "transId": "1011520245", "transType": 1,
      "playerCode": 400000001, "playerExternalId": "demoplayer",
      "roundId": "12345713400010008",
      "providerId": 1, "providerName": "Pragmatic Play",
      "gameCode": "vswaysdogs", "gameName": "The Dog House Megaways",
      "amount": 5000, "balance": 40000,
      "success": true, "createdAt": "2024-12-28 12:00:00"
    }]
  }
}
GET/v1/transaction/round
Tur İşlemlerini Getir
Belirli bir oyun turuna ait tüm işlem detaylarını döner. Denetim ve destek için kullanılır.
Sorgu Parametreleri
AlanTürZorunluAçıklama
playerExternalIdstringEVETSisteminizdeki oyuncu ID'si
roundIdstringEVETBenzersiz oyun turu ID'si
providerIdnumberEVETOyun sağlayıcısı ID'si
gameCodestringEVETOyunun dahili kodu
POST/v1/bonus-call/register
Bonus Çağrısı Kaydet
Oyuncu için bonus çağrısı oturumu başlatır. Takip için issueId döner. gameCode'u belirli oyun dizisi veya sağlayıcı altındaki tüm oyunlar için "all" olarak ayarlayın. Bir oyunda tamamlanan bonus diğer oyunları tetiklemez.
İstek Gövdesi
JSON
{
  "issueId": "bonus_001",
  "providerId": 1,
  "gameCode": ["vssuef", "fblsoe"], // veya "all"
  "playerExternalId": "sisteminizdeki_oyuncu_id",
  "currency": "USD",
  "bonusType": 2, // 1=normal bonus, 2=free spin
  "callAmount": 100,
  "expireAt": "2027-01-01 23:59:59",
  "metaData": { "spinAmount": 10, "baseBetAmount": 2 }
}
AlanTürZorunluAçıklama
issueIdstringEVETBu bonus için benzersiz ID
providerIdnumberEVETOyun sağlayıcısı ID'si
gameCodestring[] | "all"EVETBonusu tetikleyecek oyun kodları veya "all"
playerExternalIdstringEVETSisteminizdeki oyuncu ID'si
currencystringEVETPara birimi kodu
bonusTypenumberEVET1 = normal bonus, 2 = free spin (PP ve EGT Digital)
callAmountnumberEVETbonusType=1: garantili kazanç; bonusType=2: maks kazanç tavanı
expireAtstringEVETSon kullanma (YYYY-MM-DD HH:mm:ss)
metaData.spinAmountnumber*Free spin sayısı (Min:10, Maks:100). bonusType=2 için zorunlu
metaData.baseBetAmountnumber*Spin başına bahis tutarı. bonusType=2 için zorunlu
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": { "issueId": "bonus_001" }
}
POST/v1/bonus-call/cancel
Bonus Çağrısını İptal Et
Aktif veya rezerve edilmiş bir bonus çağrısını iptal eder. Hata kurtarma veya dolandırıcılık önleme senaryolarında kullanılır.
İstek Gövdesi
JSON
{ "issueId": "bonus_001" }
Yanıt
JSON
{ "success": true, "message": "OK" }
GET/v1/bonus-call/detail/:issueId
Bonus Çağrısı Detayı
Benzersiz issueId ile bonus çağrısının tüm detaylarını döner.
URL Parametresi
AlanTürAçıklama
issueIdstringAPI tarafından verilen bonus çağrısı ID'si
Yanıt
JSON
{
  "success": true, "message": "OK",
  "data": {
    "issueId": "i3746", "operatorId": "operator_id",
    "providerId": 1, "gameCode": "vswaysdog",
    "playerExternalId": "sisteminizdeki_oyuncu_id",
    "currency": "USD", "bonusType": 1, "callAmount": 100,
    "metaData": {
      "spinAmount": 100, "playedAmount": 50, "betLevel": 1,
      "expireAt": "2027-01-01T23:59:59.000Z", "maxWinAmount": 5000
    },
    "status": 1, // 1=aktif, 2=tamamlandı
    "totalWinAmount": 250, "createdAt": "2025-09-01 12:00:00"
  }
}
CALLBACKcommand: "balance"
Bakiye Callback'i
Betx, bir oyuncu oyun başlattığında veya aktif oyun sırasında her dakika bakiyeyi yenilemek için bu isteği callbackURL adresinize gönderir. İsteği işlemeden önce oyuncunun oturumunu doğrulayın. Yanıtta X-Request-Signature header'ını kontrol edin.
Gelen İstek (Betx → Sunucunuz)
JSON
{
  "command": "balance",
  "playerId": "1101",
  "currency": "EUR",
  "timestamp": 1586335186372
}
AlanTürZorunluAçıklama
commandstringEVETHer zaman "balance"
playerIdstringEVETSisteminizdeki oyuncunun benzersiz tanımlayıcısı
currencystringEVETISO-4217 para birimi kodu (EUR, USD vb.)
timestampnumberEVETMilisaniye cinsinden Unix timestamp
Zorunlu Yanıt (Sunucunuz → Betx)
Başarılı
{ "balance": 1501.52, "statusCode": "OK" }
Hata
{ "statusCode": "ERR_INVALID_ACCOUNT" }
CALLBACKcommand: "bet"
Bahis Callback'i
Oyuncu bahis yaptığında gönderilir. Bahis tutarını bakiyeden düşüp güncel bakiyeyi döndürün. Aynı transactionId birden fazla gelirse yalnızca bir kez işleyin (idempotency).
⚠️
3 saniye içinde yanıt verin. Zaman aşımında mevcut turu geri almak için otomatik cancel gönderilir. Bet için yeniden deneme yapılmaz.
Gelen İstek (Betx → Sunucunuz)
JSON
{
  "command": "bet",
  "transactionId": "SP215202",
  "playerId": "1101",
  "roundId": "65215842315484512",
  "providerId": 2,
  "providerName": "EGT Digital",
  "gameCode": "FSHBLSlot",
  "gameName": "40 Burning Hot Bell Link",
  "currency": "EUR",
  "amount": 10,
  "isRoundFinished": true,
  "isCall": false,
  "timestamp": 1586335186372
}
AlanTürZorunluAçıklama
transactionIdstringEVETBenzersiz işlem ID'si — idempotency için kullanın
playerIdstringEVETSisteminizdeki oyuncu tanımlayıcısı
roundIdstringEVETBenzersiz oyun turu ID'si
amountnumberEVETDüşülecek bahis tutarı
isRoundFinishedbooleanEVETBu bahis turu bitiriyor mu?
isCallbooleanEVETBonus çağrısı bahsi mi?
Zorunlu Yanıt
Başarılı
{ "balance": 1491.52, "statusCode": "OK" }
Yetersiz Bakiye
{ "statusCode": "ERR_NOT_ENOUGH_MONEY", "balance": 5.00 }
CALLBACKcommand: "win"
Kazanç Callback'i
Oyuncu kazandığında gönderilir. Kazanç tutarını bakiyeye ekleyip güncel bakiyeyi döndürün. İdempotent işlem — her transactionId'yi bir kez işleyin. 4 saniye içinde yanıtlayın; zaman aşımında 2 kez daha denenir.
Gelen İstek
JSON
{
  "command": "win",
  "transactionId": "SP215202",
  "playerId": "1101",
  "roundId": "65215842315484512",
  "providerId": 2, "providerName": "EGT Digital",
  "gameCode": "FSHBLSlot", "gameName": "40 Burning Hot Bell Link",
  "currency": "EUR", "amount": 100,
  "isRoundFinished": true, "isCall": false,
  "timestamp": 1586335186372
}
Zorunlu Yanıt
Başarılı
{ "balance": 1591.52, "statusCode": "OK" }
CALLBACKcommand: "cancel"
İptal Callback'i
Oyuncunun bahis işlemi tamamlanamadığında (ağ hatası, zaman aşımı vb.) tetiklenir. Tam bahis tutarını bakiyeye iade edin. İdempotent işlem. 4 saniye içinde yanıtlayın; hata durumunda 2 kez daha denenir.
Gelen İstek
JSON
{
  "command": "cancel",
  "transactionId": "SP215203",
  "referenceId": "SP215202",
  "playerId": "1101",
  "roundId": "65215842315484512",
  "providerId": 2, "providerName": "EGT Digital",
  "gameCode": "FSHBLSlot", "gameName": "40 Burning Hot Bell Link",
  "currency": "EUR", "amount": 10,
  "timestamp": 1586335186372
}
AlanTürAçıklama
transactionIdstringBu iptal işleminin benzersiz ID'si
referenceIdstringİptal edilmekte olan orijinal bahis işlemi ID'si
amountnumberOyuncuya iade edilecek tutar
Zorunlu Yanıt
Başarılı
{ "balance": 1501.52, "statusCode": "OK" }
Hata
{ "statusCode": "ERR_TRANSFER_DOES_NOT_EXIST", "balance": 1501.52 }