747.LIVE v2.0

747.LIVE Agent Platform API

A unified REST API for automating casino agent operations — deposits, withdrawals, rebates, bypass handling, messaging, reports, and webhooks. Built for seamless integration with any tech stack and payment gateway.

Base URL

https://747.innoserver.cloud/api

Key Features

Architecture

The API sits between your application and the 747.LIVE agent panel. It handles session management, transfer logic, and event delivery.

Your App / Gateway
747 Platform API
747.LIVE Panel

Webhook Event
Your Webhook URL
How it works

Your app sends requests to the Platform API. The API authenticates via session cookies to the 747.LIVE panel, executes operations, applies business logic (rebates, bypass), and fires webhook events back to your app.

Quick Start

Get up and running in 3 API calls.

Step 1 — Authenticate

POST /api/auth/login
curl -X POST https://747.innoserver.cloud/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "agentUsername": "your_username",
    "agentPassword": "your_password"
  }'

Save the token from data.token. Use it as Authorization: Bearer <token> for all requests.

Step 2 — Check your balance

POST /api/balance
curl -X POST https://747.innoserver.cloud/api/balance \
  -H "Authorization: Bearer tok_your_token" \
  -H "Content-Type: application/json" -d '{}'

Step 3 — Smart transfer

POST /api/transfer
curl -X POST https://747.innoserver.cloud/api/transfer \
  -H "Authorization: Bearer tok_your_token" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: unique-uuid" \
  -d '{
    "playerUsername": "PlayerName",
    "type": "deposit",
    "amount": 100,
    "paymentMethod": "gcash",
    "paymentReference": "GC-12345"
  }'
Done!

The API auto-detects player ownership, calculates rebates, logs the transaction, and fires webhooks. The response includes txId, before/after balances, bypass status, and rebate details.

Authentication

Two methods supported. Token auth is recommended for production.

Method 1: Bearer Token (Recommended)

Exchange credentials once for a 4-hour token.

POST /api/auth/login
{
  "agentUsername": "your_username",
  "agentPassword": "your_password"
}

Response:

{
  "success": true,
  "data": {
    "token": "tok_71ea44dfb42f5ddc...",
    "affiliateId": "459343",
    "expiresAt": "2026-03-28T18:53:45Z",
    "ttlSeconds": 14400
  }
}

Use on all subsequent requests:

Authorization: Bearer tok_71ea44dfb42f5ddc...

Refresh before expiry: POST /api/auth/refresh with the token in the header.

Method 2: Body Credentials

Include agentUsername and agentPassword in every request body. Simpler for testing but credentials appear in every request.

Response Format

Every response follows a standardized envelope:

{
  "success": true,
  "data": { ... },         // Payload (null on error)
  "error": null,           // Error details (null on success)
  "meta": {
    "requestId": "req_4e958a2f608ee96b",
    "timestamp": "2026-03-28T14:53:45Z"
  }
}
FieldTypeDescription
successbooleanWhether the request succeeded
dataobject | nullResponse payload on success
errorobject | null{code, message} on failure
meta.requestIdstringUnique ID for tracing — include in support tickets
meta.timestampstringISO 8601 server timestamp

Error Handling

{
  "success": false,
  "data": null,
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Need 100 but have 14"
  }
}
StatusCodeMeaning
200Success
400BAD_REQUESTMissing or invalid parameters
401AUTH_ERRORInvalid or expired token / credentials
404NOT_FOUNDEndpoint or resource not found
500SERVER_ERRORInternal error — report with requestId

Idempotency

Prevent duplicate transactions by sending a unique key with transfer requests:

X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

If the same key is sent again within 24 hours, the API returns the original response with _idempotent: true without re-executing.

Best Practice

Always use idempotency keys on: /transfer, /deposit, /withdraw, /agent/deposit, /agent/withdraw. Use UUIDs or your payment gateway's transaction reference as the key.

Supported endpoints: All transfer-type endpoints accept the header or idempotencyKey in the request body.

Rate Limits

The underlying 747.LIVE panel has its own session-based rate limits. The API uses persistent sessions to minimize re-authentication overhead. For best performance:

Pagination

List endpoints support start and limit parameters:

{
  "start": 0,    // offset (default: 0)
  "limit": 50    // max records (default: 50, max: 100)
}

Responses include count (records returned) and total (total records) when available.

Smart Transfer

The recommended way to process all player transactions. Wraps raw deposit/withdraw with business logic:

POST /transfer

POST /api/transfer

Request Body

ParameterTypeDescription
playerUsernamestringrequiredPlayer's username
typestringrequireddeposit or withdraw
amountnumberrequiredAmount in PHP
commentstringoptionalTransaction note
paymentMethodstringoptionalgcash, bank, crypto, manual
paymentReferencestringoptionalExternal payment reference ID

Response (bypass deposit example)

{
  "txId": "ST-20260328-000003",
  "type": "deposit",
  "playerUsername": "Lykmyk",
  "amount": 100,
  "isBypass": true,
  "owningAgent": { "id": "460346", "username": "doctrinedark" },
  "rebate": { "percent": 2, "amount": 2.00, "owedTo": "doctrinedark" },
  "bypassInfo": { "count": 1, "tier": "free", "surchargePercent": 0 },
  "paymentMethod": "gcash",
  "panelTransactionId": "773441297",
  "agentBalanceBefore": 115,
  "agentBalanceAfter": 15,
  "playerBalanceBefore": 0,
  "playerBalanceAfter": 100
}

Rebate Configuration

Set rebate % per sub-agent. GET returns config + settlement summary (how much you owe each agent).

POST /api/transfer/config — Set
{ "action": "set", "subAgentUsername": "doctrinedark", "rebatePercent": 2.5 }
POST /api/transfer/config — Get (+ settlement)
// Empty body or omit "action"
// Response includes:
"settlement": [{ "username": "doctrinedark", "totalRebateOwed": 45.50, "transactionCount": 23 }]

Bypass Policy

TierConditionBehavior
FreeFirst N requests in windowProcess normally, notify owning agent
SurchargeN+1 to block limitProcess with surcharge % logged for settlement
BlockedBeyond block limitReject — player told to contact their agent
POST /api/transfer/bypass-policy — Configure
{
  "action": "set",
  "maxFreeBypassesPerWindow": 5,
  "windowHours": 24,
  "surchargePercent": 1.5,
  "blockAfter": 15,
  "notifyOwningAgent": true
}

Transfer History

POST /api/transfer/history
{
  "playerUsername": "Lykmyk",     // optional
  "type": "deposit",              // optional
  "dateFrom": "2026-03-01",        // optional
  "dateTo": "2026-03-28",          // optional
  "bypassOnly": true,             // optional
  "owningAgent": "doctrinedark"   // optional
}

Raw Transfers

Direct transfer endpoints without rebate or bypass logic. Use /transfer for most cases.

POST/api/depositDeposit to player
ParameterType
playerUsernamestringreq
amountnumberreq
commentstringopt
POST/api/withdrawWithdraw from player

Same parameters as deposit.

POST/api/agent/depositDeposit to sub-agent

Supports REAL (cash now) or CREDIT (cash later) modes.

ParameterType
agentTargetstringreq
amountnumberreq
moneyTypestringopt REAL | CREDIT
commentstringopt
POST/api/agent/withdrawWithdraw from sub-agent

Same parameters as agent deposit.

Players & Agents

POST/api/balance

Returns your agent wallet: balance, credit, creditLine, totalAvailable, bonus, frozenBalance, currency.

POST/api/player/balance

Get a player's balance by their Player ID.

{ "playerId": "400959205" }
POST/api/players

Paginated list of all players. Pass start and limit. Returns playerId, username, firstname, lastname, affiliateId, currency, registerDate, phoneNumber.

POST/api/player/create

Register a new player. Required: username, email, password. Optional: firstName, lastName, middleName, mobile, country, birthDate.

POST/api/agent/create

Register a new sub-agent. Required: email, username, password. Optional: firstName, lastName, currency (default PHP).

Reports

All report endpoints accept optional dateFrom and dateTo in YYYY/MM/DD format. Defaults to current month.

POST/api/report/playersPlayer activity

Per-player: bets, wins, deposits, withdrawals, ggr, commission. Filter by playerId, playerName, onlyActive.

POST/api/report/agentsAgent performance

Sub-agent performance: deposits, ftdCount, bets, wins, ggr, commission. Filter by username, affiliateId.

POST/api/report/dailyDaily summary

Day-by-day: deposits, withdrawals, bets, wins, ggr, commission. Ideal for charts.

POST/api/report/productsProduct breakdown

By product type: Slots, Sportsbook, Live Games, Table Games, etc.

Messaging

Internal messaging via the panel's chat system. Use for OTPs, alerts, inter-agent communication.

POST/api/message/send
ParameterTypeDescription
toAffiliateIdstringRecipient ID (get from /message/recipients)
messagestringContent (max 3000 chars)

Other endpoints: /message/chats, /message/chat, /message/recipients, /message/unread

POST/api/notifications

System notifications: transfer alerts, commission changes, balance events. Includes titleKey (event type) and variables (context). Pass start / limit for pagination.

Webhooks

Register URLs to receive real-time event notifications.

EventFired When
transfer.completedSmart transfer succeeds
transfer.failedSmart transfer fails
bypass.blockedBypass transfer blocked by policy

Register a Webhook

POST /api/webhook/register
{
  "url": "https://yourapp.com/webhook/747",
  "events": ["transfer.completed", "transfer.failed"]
}
// Response includes auto-generated HMAC secret

Signature Verification

Each delivery includes these headers:

HeaderDescription
X-Webhook-SignatureHMAC-SHA256 hex digest of body using your secret
X-Webhook-EventEvent type
X-Webhook-IdYour webhook registration ID
Node.js verification
const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const expected = crypto.createHmac('sha256', secret)
    .update(body).digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature), Buffer.from(expected)
  );
}

SDK Examples

Integration examples for popular languages. All examples use token auth.

const BASE = 'https://747.innoserver.cloud/api';

async function api(endpoint, body, token) {
  const res = await fetch(BASE + endpoint, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      ...(token ? { 'Authorization': `Bearer ${token}` } : {})
    },
    body: JSON.stringify(body)
  });
  return res.json();
}

// Login
const { data } = await api('/auth/login', {
  agentUsername: 'demo', agentPassword: '***'
});
const token = data.token;

// Smart transfer
const result = await api('/transfer', {
  playerUsername: 'Lykmyk',
  type: 'deposit',
  amount: 100,
  paymentMethod: 'gcash'
}, token);

console.log(result.data.txId);  // ST-20260328-000001
import requests

BASE = "https://747.innoserver.cloud/api"

# Login
login = requests.post(f"{BASE}/auth/login", json={
    "agentUsername": "demo",
    "agentPassword": "***"
}).json()
token = login["data"]["token"]
headers = {"Authorization": f"Bearer {token}"}

# Smart transfer
result = requests.post(f"{BASE}/transfer",
    headers=headers,
    json={
        "playerUsername": "Lykmyk",
        "type": "deposit",
        "amount": 100,
        "paymentMethod": "gcash"
    }
).json()

print(result["data"]["txId"])  # ST-20260328-000001
<?php
$base = "https://747.innoserver.cloud/api";

function api($endpoint, $body, $token = null) {
    global $base;
    $headers = ["Content-Type: application/json"];
    if ($token) $headers[] = "Authorization: Bearer $token";

    $ch = curl_init($base . $endpoint);
    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($body),
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => true,
    ]);
    return json_decode(curl_exec($ch), true);
}

// Login
$login = api("/auth/login", [
    "agentUsername" => "demo",
    "agentPassword" => "***"
]);
$token = $login["data"]["token"];

// Smart transfer
$result = api("/transfer", [
    "playerUsername" => "Lykmyk",
    "type" => "deposit",
    "amount" => 100,
    "paymentMethod" => "gcash",
], $token);

echo $result["data"]["txId"]; // ST-20260328-000001
# Login
TOKEN=$(curl -s -X POST https://747.innoserver.cloud/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"agentUsername":"demo","agentPassword":"***"}' \
  | jq -r '.data.token')

# Smart transfer with idempotency
curl -X POST https://747.innoserver.cloud/api/transfer \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{
    "playerUsername": "Lykmyk",
    "type": "deposit",
    "amount": 100,
    "paymentMethod": "gcash",
    "paymentReference": "GC-12345"
  }'

Changelog

v2.0.0 — March 28, 2026

v1.0.0 — March 28, 2026