Skip to content
ہوسٹنگ · سرور سیٹ اپ

بوٹس کے لیے سرور API

Millida Hosting کلائنٹ API: کلید جاری کرنا، اجازتیں، سرور کا انتظام اور اپنے بوٹ یا اسکرپٹ سے کنسول اسٹریمنگ۔

اپ ڈیٹ 13 اکتوبر، 2026

پینل جو کچھ بھی کرتا ہے، وہ سب آپ اپنے کوڈ سے کر سکتے ہیں: شیڈول پر سرور اسٹارٹ کریں، Discord میں اسٹیٹس دکھائیں، بوٹ سے کمانڈز بھیجیں۔

کی

API کسی بھی پیڈ پلان پر دستیاب ہے — اسی جگہ جہاں فائلیں، SFTP اور ٹیم ایکسیس ہے۔ فری پلان پر کی جاری نہیں ہوتی: کی بھی وہی شیئرڈ ایکسیس ہے، صرف بوٹ کے لیے۔

سیکشن "Players and access" → "API keys" → "Issue"۔ چیک کریں کہ کی کو کیا کرنے کی اجازت ہے — پرمیشنز وہی ہیں جو شیئرڈ ایکسیس کے لیے ہیں۔

کی صرف ایک بار دکھائی جاتی ہے: ہم صرف اس کا فنگر پرنٹ محفوظ کرتے ہیں۔ اگر آپ اسے کھو دیں تو نئی جاری کریں اور پرانی منسوخ کر دیں۔

کی Authorization: Bearer mhk_live_... ہیڈر میں بھیجی جاتی ہے۔

میتھڈز

بیس URL — https://millida.net/v2/hosting/api۔

میتھڈکیا کرتا ہےدرکار پرمیشن
GET /serverسرور کارڈconsole
GET /statusاسٹیٹس اور آن لائنconsole
POST /startاسٹارٹstart
POST /stopاسٹاپstart
POST /restartری اسٹارٹstart
POST /commandکنسول کو کمانڈconsole
GET /consoleلائیو لاگ (SSE)console
GET /files?path=فائلوں کی فہرستfiles
GET /files/configsفارم کون سی کنفگ پڑھتا ہےfiles
GET /files/config?path=ٹائپس کے ساتھ فائل سیٹنگزfiles
POST /files/configفائل سیٹنگز تبدیل کریںfiles
GET /backupsبیک اپس کی فہرستbackups
POST /backupsبیک اپ بنائیںbackups
GET /antibotاینٹی بوٹ سیٹنگز، بیک اینڈز اور فائر وال رولزprotection
PUT /antibotپروٹیکشن سیٹنگز تبدیل کریںprotection
GET /antibot/overview?range=hour، day یا week کے لیے کنکشنز اور انکارprotection
POST /antibot/backendsبیک اینڈ شامل کریں {"address":"host:port","label":"..."}protection
DELETE /antibot/backends/{id}بیک اینڈ ہٹائیںprotection
POST /antibot/rulesفائر وال رول {"kind":"allow"|"deny","cidr":"1.2.3.0/24"}protection
DELETE /antibot/rules/{id}رول ہٹائیںprotection
POST /antibot/verify-domain/checkاپنے ویریفیکیشن پیج ڈومین کے لیے DNS چیک کریںprotection

مثال: سرور اسٹارٹ کریں اور آن لائن ہونے کا انتظار کریں

KEY="mhk_live_xxx"
API="https://millida.net/v2/hosting/api"

curl -sX POST "$API/start" -H "Authorization: Bearer $KEY"

until curl -s "$API/status" -H "Authorization: Bearer $KEY" | grep -q RUNNING; do
  sleep 5
done
echo "server online"

بیک اپس بیک گراؤنڈ میں بنتے ہیں

POST /backups فوراً {"id":"..."} واپس کرتا ہے، جبکہ آرکائیو خود نوڈ پر تیار ہوتا ہے: کئی گیگابائٹ کی دنیا میں منٹ لگتے ہیں۔ GET /backups میں status فیلڈ سے تیاری چیک کریں: pending — ابھی تیار ہو رہا ہے، ready — اسٹوریج میں محفوظ ہے (اسی وقت اصل sizeMb ظاہر ہوتا ہے)، failed — تیار نہیں ہو سکا۔

ID=$(curl -sX POST "$API/backups" -H "Authorization: Bearer $KEY" | jq -r .id)

until curl -s "$API/backups" -H "Authorization: Bearer $KEY" \
  | jq -e --arg id "$ID" '.[] | select(.id==$id) | select(.status=="ready")' >/dev/null; do
  sleep 15
done
echo "backup ready"

جب تک بیک اپ جاری ہے، آپ اسی سرور پر دوسرا نہیں بنا سکتے — نوڈ ایک وقت میں ایک ہی بناتا ہے۔

لائیو کنسول

GET /console ایک Server-Sent Events اسٹریم واپس کرتا ہے: ہر لائن data: پری فکس کے ساتھ آتی ہے۔ WebSocket کی ضرورت نہیں — SSE کسی بھی پراکسی سے گزر جاتا ہے۔

جو آپ کو جاننا چاہیے

  • کی کا ہر عمل لاگ ہوتا ہے سرور لاگ میں مصنف "API key N" کے ساتھ۔ یہی چیز آپ کو اس وقت چاہیے جب سرورز انسان اور بوٹ دونوں چلا رہے ہوں۔
  • ریٹ لمیٹنگ فی کی حساب ہوتی ہے، فی ایڈریس نہیں: IP بدلنے سے لمیٹ بائی پاس نہیں ہوتی، اور آفس نیٹ ورک پر پڑوسی اسے استعمال نہیں کرتا۔ عام آٹومیشن کے لیے یہ کافی کشادہ ہے، لیکن ہر سیکنڈ اسٹیٹس پولنگ کرنا لمیٹ سے ٹکرا جائے گا — ہر 10–15 سیکنڈ میں ایک بار کافی ہے۔ کنسول اسٹریم منٹ میں زیادہ سے زیادہ دس بار کھولی جا سکتی ہے: ہر پیغام کے لیے نئی کنکشن کھولنے کے بجائے ایک ہی رکھیں۔
  • کی فوراً کام کرنا بند کر دیتی ہے اگر سرور معطل ہو جائے یا پلان مزید پیڈ نہ ہو۔ اس کے لیے آپ کو دستی طور پر منسوخ کرنے کی ضرورت نہیں۔
  • فی سرور زیادہ سے زیادہ پانچ کیز۔ جو ضرورت نہ ہوں، منسوخ کر دیں۔

اینٹی بوٹ پروٹیکشن

GET /antibot سیٹنگز دو فیلڈز میں واپس کرتا ہے۔ config — سرور کی اپنی سیٹنگز؛ جب تک وہ موجود نہ ہوں، یہ null ہوتی ہے اور سرور ڈیفالٹ طور پر محفوظ رہتا ہے (default فیلڈ)۔ effective ہمیشہ موجود ہوتی ہے: یہ وہ سیٹنگز ہیں جو اس وقت نافذ ہیں یا پہلی ترمیم کے بعد سرور ان کے ساتھ کام کرے گا — اقدار اسی سے پڑھیں۔

PUT /antibot صرف وہ فیلڈز قبول کرتا ہے جو آپ تبدیل کرنا چاہتے ہیں:

curl -sX PUT "$API/antibot" -H "Authorization: Bearer $KEY"   -H 'Content-Type: application/json'   -d '{"preset":"balanced"}'

لیولز (preset): off، under_attack، balanced، aggressive، custom۔ لیول خود بخود چیک ویلیوز میں پھیل جاتا ہے، اس لیے دستی کنفیگریشن کے لیے custom منتخب کریں اور چیکس بھیجیں: checkCaptcha، checkPhysics، checkKeepAlive، checkTeleport، checkBrand، checkPing، checkTransfer، checkClientSettings — ہر ایک off، under_attack یا always۔ ایڈریس لسٹس (vpnMode، datacenterMode، torMode) — off، log یا block۔ جیو فلٹر — geoMode (off، allow، deny) اور geoCountries (کنٹری کوڈز، مثلاً ["RU","BY"])۔

فارورڈنگ سیکرٹ API کے ذریعے جاری یا تبدیل نہیں ہوتا: یہ صرف پینل میں مالک کو دکھایا جاتا ہے۔

کنفگ سیٹنگز

GET /files/config?path=server.properties پارس شدہ فائل واپس کرتا ہے — ہر اینٹری اپنی ٹائپ، موجودہ ویلیو اور "ری اسٹارٹ درکار" فلیگ کے ساتھ:

{
  "path": "server.properties",
  "format": "properties",
  "options": [
    { "key": "pvp", "type": "boolean", "value": "true", "owner": "sync", "requiresRestart": false },
    { "key": "difficulty", "type": "select", "value": "normal", "values": ["peaceful", "easy", "normal", "hard"], "owner": "sync", "requiresRestart": false },
    { "key": "server-port", "type": "integer", "value": "25565", "owner": "platform", "requiresRestart": true }
  ]
}

owner بتاتا ہے کہ اینٹری کے ساتھ کیا کیا جا سکتا ہے: platform — ویلیو ہوسٹنگ سیٹ کرتی ہے، ترامیم مسترد ہوتی ہیں؛ sync — اینٹری پینل اور فائل دونوں میں موجود ہے؛ file — صرف فائل کو اس کا علم ہے۔

رائٹ صرف وہی کیز تبدیل کرتی ہے جو آپ بھیجتے ہیں؛ فائل میں باقی سب کچھ جوں کا توں رہتا ہے:

curl -sX POST "$API/files/config" -H "Authorization: Bearer $KEY"   -H 'Content-Type: application/json'   -d '{"path":"server.properties","values":{"pvp":"false","difficulty":"hard"}}'

فارم .properties، .yml/.yaml اور .toml پڑھتا ہے — ان پلگ ان کنفگس سمیت جن کے بارے میں پینل کو کچھ علم نہیں: فیلڈ ٹائپ ویلیو سے اندازہ لگایا جاتا ہے۔ نیسٹڈ کیز ڈاٹ سے ایڈریس ہوتی ہیں: settings.bungeecord، advanced.compression-threshold۔

پوری فائل اب بھی GET/PUT /files/content?path= کے ذریعے دستیاب ہے — دونوں راستے اسی جگہ لکھتے ہیں۔

Node.js اور Python میں تیار کلائنٹ

نیچے ایک کم سے کم کلائنٹ دیا گیا ہے: یہ اسٹیٹس چیک کرتا ہے، سرور اسٹارٹ کرتا ہے اور چیٹ میں لکھتا ہے۔ کلید MILLIDA_KEY ماحولیاتی ویری ایبل سے آتی ہے — اسے ایسے کوڈ میں نہ پیسٹ کریں جو git میں چلا جائے۔ ایرر رسپانس JSON ہوتا ہے جس میں message فیلڈ ہوتی ہے؛ آپ کے بوٹ کو یہی لاگ کرنا چاہیے۔

Node.js 18+ (بلٹ اِن fetch):

const API = 'https://millida.net/v2/hosting/api';
const KEY = process.env.MILLIDA_KEY;

async function call(method, path, body) {
  const res = await fetch(`${API}${path}`, {
    method,
    headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
    body: body ? JSON.stringify(body) : undefined,
  });
  if (!res.ok) throw new Error(`${method} ${path}: ${res.status} ${await res.text()}`);
  return res.status === 204 ? null : res.json();
}

const status = await call('GET', '/status');
if (status.status !== 'RUNNING') await call('POST', '/start');
await call('POST', '/command', { command: 'say Hello from the bot' });

Python 3، requests لائبریری کے ساتھ، نیز لائیو کنسول پڑھنے کے لیے:

import os
import requests

API = "https://millida.net/v2/hosting/api"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['MILLIDA_KEY']}"

def call(method, path, body=None):
    res = session.request(method, API + path, json=body, timeout=15)
    res.raise_for_status()
    return res.json() if res.content else None

status = call("GET", "/status")
if status["status"] != "RUNNING":
    call("POST", "/start")
call("POST", "/command", {"command": "say Hello from the bot"})

with session.get(API + "/console", stream=True, timeout=None) as stream:
    for line in stream.iter_lines(decode_unicode=True):
        if line and line.startswith("data:"):
            print(line[5:].strip())
Minecraft ہوسٹنگآپ کے آف لائن ہونے پر بھی آپ کا سرور چلتا ہےسرور بنائیں