API v1

SMM Panel & Telegram Bot API

One endpoint handles services, balance, real capacity, order creation and order status. API orders use the same server-side wallet, pricing and account-allocation rules as website orders.

Authentication

Create a key from API Access. Send it as Authorization: Bearer YOUR_KEY or the standard key parameter. The full key is shown once.

Never put a production API key in public frontend JavaScript, a Git repository or screenshots.

List services

POST https://livejoin.smmvai.com/api/v1.phpaction=services
key=YOUR_API_KEY

Each fixed time option has a stable service ID. Standard SMM rate is returned per 1000 accounts; price_per_100 is also returned explicitly. Current minimum: 1, current maximum: 1.

Real capacity

action=capacity
key=YOUR_API_KEY

Returns available, in_use, error_offline and future release forecast. There is no queue.

Create order

action=add
key=YOUR_API_KEY
service=1010
link=https://t.me/yourchannel?livestream=...
quantity=50
request_id=YOUR_UNIQUE_ORDER_REFERENCE

request_id is strongly recommended. Repeating the same request ID with the same API key returns the existing order instead of charging twice. If quantity is above current capacity, the API rejects it and returns the current available/maximum.

Order status

action=status
key=YOUR_API_KEY
order=123

Returns a simple customer-facing status plus charge, refund, joined/failed counts, remaining seconds and progress.

Wallet balance

action=balance
key=YOUR_API_KEY

Returns the LiveTest customer wallet balance in BDT.

PHP Telegram bot / PHP integration

$endpoint = 'https://livejoin.smmvai.com/api/v1.php';
$key = 'YOUR_API_KEY';
$post = http_build_query([
  'key' => $key,
  'action' => 'add',
  'service' => 1010,
  'link' => 'https://t.me/example?livestream=...',
  'quantity' => 50,
  'request_id' => 'bot-order-10001'
]);
$ch = curl_init($endpoint);
curl_setopt_array($ch,[CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post,CURLOPT_RETURNTRANSFER=>true,CURLOPT_TIMEOUT=>15]);
$result = curl_exec($ch);

Use a unique request_id before retrying an order request.

Bots.Business

The current Bots.Business BJS HTTP flow uses HTTP.post() and handles the result in separate success/error commands. It does not return the response inline. Create a request command plus callback commands.

HTTP.post({
  url: "https://livejoin.smmvai.com/api/v1.php",
  headers: { "Content-Type": "application/json" },
  body: {
    key: "YOUR_REVOCABLE_API_KEY",
    action: "capacity"
  },
  success: "/livetest-response",
  error: "/livetest-error"
});
// /livetest-response
if (http_status == null) { return; }
var status = Number(http_status);
if (status < 200 || status >= 300) {
  Bot.sendMessage("LiveTest returned HTTP " + status);
  return;
}
var data;
try { data = JSON.parse(content); }
catch (e) { Bot.sendMessage("Unexpected API response"); return; }
Bot.sendMessage("Available now: " + data.available);
Current Bots.Business transport limitation: its official HTTP documentation says the current HTTPS transport does not validate server certificates. For production wallet-spending order calls, prefer a normal PHP integration/client with certificate verification, or treat any Bots.Business key as separately revocable and limited-risk. Do not reuse your main account password or any payment/Telegram credential as an API key.