Tashqi tizimlar ushbu API orqali Telegram Stars, Premium, Steam hamyoni va o'yin akkauntlarini to'ldiradi.
Mahsulot
Endpoint
Yetkazish
⭐️ Telegram Stars
POST /v1/stars
sinxron (javobda natija)
💎 Telegram Premium
POST /v1/premium
sinxron
🎮 Steam hamyoni
POST /v1/steam
asinxron bo'lishi mumkin (202 → polling)
🔫 PUBG Mobile UC
POST /v1/games/pubgm/order
asinxron (~2 daqiqa, 202 → polling)
⚔️ Mobile Legends olmos
POST /v1/games/mlbb_global/order
asinxron (~1 daqiqa, 202 → polling)
Hammasi bitta USDT balansdan yechiladi va javob shakli bir xil skeletda (success, order_id, status, usdt_charged, balance_remaining_usdt) — bitta parser hammasiga yetadi.
Autentifikatsiya
Har bir so'rovda API kalit beriladi (ikki xil usul, biri yetarli):
X-API-Key: sj_...
yoki
Authorization: Bearer sj_...
Kalit — mijozning USDT hamyoni: balans yetarli bo'lsa yechiladi va yetkaziladi, aks holda 402. Fragment xatosida balans avtomatik qaytariladi (502).
Kalit turlari
Ikki xil kalit bor. Ular bir xil manzillar, bir xil so'rov va bir xil javob formatidan foydalanadi — quyidagi hamma narsa ikkalasiga ham tegishli, integratsiyada faqat kalitni almashtirasiz.
Tur
Mablag' manbai
402 qachon
standard (oddiy mijoz)
o'zining ichki USDT balansi
balans yetmasa
owner (tizim kaliti)
to'g'ridan-to'g'ri StarsPaymee hamyoni — balans limiti yo'q
hamyonda mablag' yetmasa (yoki admin qo'ygan kunlik/buyurtma chegarasidan oshsa)
owner kalitida GET /v1/balance ichki balansni emas, hamyonda xaridga sarflash mumkin bo'lgan summani qaytaradi (balance_usdt — o'sha maydon, o'sha number turi) va qo'shimcha unlimited: true beriladi.
Idempotency
Har buyurtmaga unikalidempotency_key bering — takroriy so'rov bir marta pul yechadi. Tarmoq uzilsa xavfsiz qayta yuborasiz.
30 soniyada integratsiya
Bu — oddiy REST + JSON API. PHP, Node.js, Python yoki istalgan til HTTP request orqali ulanadi. Quyidagi 4 misol POST /v1/starsni ko'rsatadi:
import requests
res = requests.post(
"https://api.starstg.uz/api/purchase/v1/stars",
headers={"X-API-Key": "sj_..."},
json={"username": "durov", "stars": 500, "idempotency_key": "order-12345"},
timeout=240, # yetkazish xato bergach blockchain tarixi tekshiriladi — kamdan-kam holatda uzoqroq davom etadi
)
print(res.status_code, res.json())
🎮 Steam to'ldirish — to'liq oqim
Steam login bo'yicha, USD nominalda ishlaydi. O'zbekiston uchun ham to'liq qo'llab-quvvatlanadi: Steam UZ akkauntlari USD hamyonda, shuning uchun valyuta konvertatsiyasi yo'q.
Boshqa mahsulotlardan yagona jiddiy farqi — yetkazish asinxron bo'lishi mumkin. Shuning uchun 202 javobini ham qayta ishlang:
Narx qanday hisoblanadi. Ustama nominalga emas, tannarxga (nominal + provayder komissiyasi) qo'llanadi:
202 xato emas.status: "processing" — buyurtma qabul qilingan. Terminal holat faqat completed yoki failed.
login — aynan login. Email yoki /profiles/765611... (SteamID) ishlamaydi. https://steamcommunity.com/id/<login> havolasi qabul qilinadi.
idempotency_key majburiy darajada tavsiya etiladi va u SIZNING barqaror invoice id'ingiz bo'lishi kerak. Tasodifiy qiymat bilan qayta yuborsangiz ikkinchi buyurtma yaratiladi va pul ikki marta ketadi.
Timeout — "yiqildi" degani emas. Javob kelmasa, refund qilmang: aynan o'sha idempotency_key bilan qayta yuboring yoki holatni so'rang.
Narxni /v1/steam/pricing dan oling. Ustama foizi sizning kalitingizga xos bo'lishi mumkin (oborotga qarab shaxsiy tarif).
O'yin to'ldirish (PUBG Mobile / Mobile Legends)
To'liq oqim — ID tekshiruvidan yakunigacha:
JS
const H = { "X-API-Key": "sj_...", "Content-Type": "application/json" };
const GAME = "pubgm"; // yoki "mlbb_global"
// 1) Narxni JONLI oling — kurs bilan o'zgaradi
const cat = await (await fetch(`https://api.starstg.uz/api/purchase/v1/games/${GAME}/catalogue`, { headers: H })).json();
const item = cat.denominations.find((d) => d.name === "60"); // AYNAN nom bo'yicha!
// item.price_usdt — balansdan shuncha yechiladi
// 2) O'yinchini tekshiring va nikni XARIDORGA KO'RSATING (bepul)
const who = await (await fetch(`https://api.starstg.uz/api/purchase/v1/games/${GAME}/check-player`, {
method: "POST", headers: H,
body: JSON.stringify({ player_id: "51221257198" }),
})).json();
if (!who.valid) throw new Error("ID noto'g'ri");
// who.player_name → "MirshodforwarD" — tasdiqlatmasdan davom etmang
// 3) Buyurtma
let order = await (await fetch(`https://api.starstg.uz/api/purchase/v1/games/${GAME}/order`, {
method: "POST", headers: H,
body: JSON.stringify({
denomination: item.name,
player_id: "51221257198",
idempotency_key: "invoice-1042", // SIZNING barqaror invoice id
}),
})).json();
// 4) 202 → tugagunicha kuzatamiz (PUBG ~2 daq, MLBB ~1 daq)
while (order.status === "processing") {
await new Promise((r) => setTimeout(r, 5000));
order = await (await fetch(`https://api.starstg.uz/api/purchase/v1/games/orders/${order.order_id}`, { headers: H })).json();
}
console.log(order.status, order.usdt_charged); // "completed" 0.9345
O'yin to'ldirish uchun 5 ta qoida
ID ni tekshirmasdan sotmang. Noto'g'ri ID ga tushgan UC/olmosni hech kim qaytara olmaydi — na biz, na provayder, na o'yin ishlab chiqaruvchisi. check-player bepul va bir soniya oladi.
denomination — aynan katalogdagi name. Prefiks bo'yicha qidirmang: PUBG'da "60" (haqiqiy UC) va "60 WOW Coins" (boshqa mahsulot) yonma-yon turadi.
Narxni har safar qayta o'qing. Katalog narxi valyuta kursi bilan o'zgaradi; eskirgan narxni xaridorga aytib qo'ysangiz farqni o'zingiz to'laysiz.
server_id — o'yinga bog'liq. Mobile Legends'da majburiy, PUBG'da umuman kerak emas. GET /v1/games javobidagi required_fields ga qarang.
202 xato emas va timeout — "yiqildi" degani emas. Javob kelmasa refund qilmang: aynan o'sha idempotency_key bilan qayta yuboring yoki holatni so'rang.
💡 Avval Sandbox bilan sinang — /test/v1/stars, /test/v1/premium, /test/v1/steam: balans yechilmaydi, hech narsa yetkazilmaydi.
/v1/pricing bilan bir xil USDT tariflar, lekin jonli TON→USD kursi (TONAPI'dan, ~60s keshlanadi) hamda har mahsulot uchun hisoblangan TON va UZS ekvivalentlari bilan. Asosiy narx har doim USDT — faqat ton/uzs maydonlari kursga qarab o'zgaradi. TON provider mavjud bo'lmasa ton maydonlari null qaytadi (USDT/UZS baribir keladi).
So'rov
cURL
curl -X GET "https://api.starstg.uz/api/purchase/v1/rates" \
-H "X-API-Key: sj_..."
Telegram Stars yetkazadi. Balans atomik yechiladi, Fragment orqali yetkaziladi. Fragment xatosida balans avtomatik qaytariladi (502). Idempotency uchun idempotency_key bering.
So'rov tanasi
Maydon
Tur
Tavsif
username
string
majburiy
Telegram @username ( @ ixtiyoriy, 3–32 belgi )
stars
integer
majburiy
Stars soni (50–10000)
idempotency_key
string
ixtiyoriy
Takroriy so'rovda bir xil natija qaytadi — bir buyurtmaga bir unikal kalit. Tarmoq xatosida xavfsiz qayta yuborish uchun majburiy tavsiya etiladi.
O'zbekiston uchun ham to'liq ishlaydi: Steam UZ akkauntlari USD_CIS narx zonasida va hamyon USD'da, shuning uchun valyuta konvertatsiyasi umuman yo'q (FX ustamasi nol).
Boshqa mahsulotlardan farqi — yetkazish asinxron bo'lishi mumkin: javob 202 va status: "processing" bo'lsa, yakunni GET /v1/steam/{order_id} bilan kuzating.
Steam login bo'yicha hamyonni USD nominalda to'ldiradi.
Balansdan yechiladigan summa = amount_usd + ustama. Aniq qiymatni oldindan GET /v1/steam/pricing?amount_usd=... beradi.
Javob kodlari — muhim farq
Kod
Ma'nosi
Nima qilish
200
completed — Steam to'ldirildi
tugadi
202
processing — provayder navbatida
GET /v1/steam/{order_id} bilan kuzating
402
balans yetarli emas
pul yechilmagan
502
provayder rad etdi
pul qaytarildi (refunded: true)
503
vaqtincha mavjud emas
keyinroq qayta urining
202 ni xato deb hisoblamang — buyurtma qabul qilingan va bajarilmoqda.
Idempotentlik
idempotency_key bering. Tarmoq uzilib, javobni olmasangiz — aynan o'sha kalit bilan qayta yuboring: ikkinchi marta pul yechilmaydi, avvalgi buyurtma qaytadi.
So'rov tanasi
Maydon
Tur
Tavsif
login
string
majburiy
Steam akkaunt login'i (email yoki ko'rinadigan nik EMAS).
Kechirimli qabul qilinadi: mylogin, https://steamcommunity.com/id/mylogin. Email va /profiles/7656119... (SteamID) rad etiladi — ular bilan to'ldirib bo'lmaydi.
amount_usd
number
majburiy
Steam hamyoniga tushadigan nominal summa (USD, ko'pi bilan 2 kasr xona). Amaldagi chegaralarni GET /v1/steam/pricing beradi (hozir $1–$400).
Bu balansdan yechiladigan summa emas — yechiladigani nominal + ustama (usdt_charged).
idempotency_key
string
ixtiyoriy
Takroriy so'rovda bir xil natija qaytadi. Steam'da ayniqsa muhim: yetkazish asinxron, shuning uchun tarmoq uzilsa xavfsiz qayta yuborishning yagona yo'li shu.
O'yin akkauntini to'g'ridan-to'g'ri to'ldirish — PUBG Mobile UC, Mobile Legends olmos.
Voucher kod emas: kredit o'yinchi ID si bo'yicha akkauntga to'g'ridan-to'g'ri yoziladi. Xaridor hech narsa aktivlashtirmaydi.
To'g'ri oqim
GET /v1/games — o'yinlar va har biri qanday maydon talab qilishi
GET /v1/games/{code}/catalogue — nominallar va siz to'laydigan narx
POST /v1/games/{code}/check-player — ID ni tekshiring, nikni xaridorga ko'rsating
POST /v1/games/{code}/order — buyurtma
GET /v1/games/orders/{order_id} — yakunni kuzating
3-qadamni o'tkazib yubormang. Noto'g'ri ID ga yuborilgan UC yoki olmosni qaytarib bo'lmaydi — na biz, na provayder, na o'yin ishlab chiqaruvchisi uni bekor qila oladi.
Yetkazish asinxron: javob 202 va status: "processing" bo'lishi normal holat. O'lchangan vaqt — PUBG ~2 daqiqa, Mobile Legends ~1 daqiqa.
Qo'llab-quvvatlanadigan o'yinlar va har biri qanday maydon talab qilishi.
required_fields ni o'qing va formani shunga qarab chizing: server_id ba'zi o'yinlarda majburiy (Mobile Legends), ba'zilarida umuman ishlatilmaydi (PUBG Mobile).
So'rov
cURL
curl -X GET "https://api.starstg.uz/api/purchase/v1/games" \
-H "X-API-Key: sj_..."
Nominallar va siz to'laydigan yakuniy narx (price_usdt). Hisobni o'zingizda takrorlamang — ustama va yaxlitlash shu yerda qo'llanadi.
Narx valyuta kursi bilan o'zgaradi. Buyurtmadan oldin qayta o'qing: eskirgan narx bo'yicha xaridorga aytilgan summa haqiqiy yechilgan summadan farq qilishi mumkin.
name ni aynan uzating. Katalogda o'xshash nomlar yonma-yon turadi — PUBG'da "60" (haqiqiy UC) va "60 WOW Coins" (boshqa mahsulot). Prefiks bo'yicha moslashtirish xato mahsulot sotishga olib keladi.
Yo'l parametrlari
Nom
Tur
Tavsif
code
string
majburiy
O'yin kodi — GET /v1/games dan oling (pubgm, mlbb_global)
So'rov parametrlari
Nom
Tur
Tavsif
eta
string
ixtiyoriy
1 bo'lsa har nominal uchun yetkazish vaqti bashorati ham qo'shiladi (sekinroq)
So'rov
cURL
curl -X GET "https://api.starstg.uz/api/purchase/v1/games/pubgm/catalogue" \
-H "X-API-Key: sj_..."
O'yinchi ID sini tekshiradi va in-game nikni qaytaradi. Pul yechilmaydi.
Buni har doim buyurtmadan oldin chaqiring
Noto'g'ri ID ga yuborilgan UC yoki olmosni qaytarib bo'lmaydi — na biz, na provayder, na o'yin ishlab chiqaruvchisi uni bekor qila oladi. Nikni xaridorga ko'rsatib tasdiqlating: bir qadamlik tekshiruv eng qimmat xatoning oldini oladi.
Yo'l parametrlari
Nom
Tur
Tavsif
code
string
majburiy
O'yin kodi — GET /v1/games dan oling (pubgm, mlbb_global)
So'rov tanasi
Maydon
Tur
Tavsif
player_id
string
majburiy
O'yinchining in-game ID si
server_id
string | null
ixtiyoriy
Faqat talab qiladigan o'yinlarda (needs_server: true) — masalan Mobile Legends
Kreditni o'yinchi akkauntiga to'g'ridan-to'g'ri yozadi.
Balansdan yechiladigan summa = katalogdagi price_usdt.
Javob kodlari — muhim farq
Kod
Ma'nosi
Nima qilish
200
completed — akkauntga tushdi
tugadi
202
processing — bajarilmoqda
GET /v1/games/orders/{order_id} bilan kuzating
400
ID/nominal noto'g'ri
pul yechilmagan
402
balans yetarli emas
pul yechilmagan
502
provayder rad etdi
pul qaytarildi (refunded: true)
503
vaqtincha mavjud emas
keyinroq qayta urining
202 ni xato deb hisoblamang — buyurtma qabul qilingan. O'lchangan yetkazish vaqti: PUBG Mobile ~2 daqiqa, Mobile Legends ~1 daqiqa.
Idempotentlik
idempotency_key bering. Tarmoq uzilib javobni olmasangiz — aynan o'sha kalit bilan qayta yuboring: ikkinchi marta pul yechilmaydi va ikkinchi buyurtma yaratilmaydi.
Yo'l parametrlari
Nom
Tur
Tavsif
code
string
majburiy
O'yin kodi — GET /v1/games dan oling (pubgm, mlbb_global)
So'rov tanasi
Maydon
Tur
Tavsif
denomination
string
majburiy
Katalogdagi name satri, o'zgartirilmagan holda. GET /v1/games/{code}/catalogue javobidan aynan nusxa oling.
player_id
string
majburiy
—
server_id
string | null
ixtiyoriy
Talab qiladigan o'yinlarda majburiy
idempotency_key
string | null
ixtiyoriy
Takroriy so'rovda bir xil natija qaytadi — pul ikki marta yechilmaydi. Tarmoq uzilsa aynan shu kalit bilan qayta yuboring.
Test rejimi — xuddi real kabi javob qaytaradi, lekin balans yechilmaydi va yetkazilmaydi.
So'rov formati real endpoint bilan bir xil. Javobda "test": true qo'shiladi va transaction_idtest_... bilan boshlanadi. Integratsiyani xavfsiz sinash uchun ishlating.
Real /v1/steam bilan bir xil so'rov va javob formati. Balans yechilmaydi, provayder chaqirilmaydi, hech qanday Steam akkaunt to'ldirilmaydi.
Javobda "test": true va transaction_idtest_... bilan boshlanadi.
Sandbox har doim darhol completed qaytaradi. Realda buyurtma avval processing (202) bo'lishi mumkin — integratsiyangiz ikkala yo'lni ham qo'llab-quvvatlasin.
So'rov tanasi
Maydon
Tur
Tavsif
login
string
majburiy
Steam akkaunt login'i (email yoki ko'rinadigan nik EMAS).
Kechirimli qabul qilinadi: mylogin, https://steamcommunity.com/id/mylogin. Email va /profiles/7656119... (SteamID) rad etiladi — ular bilan to'ldirib bo'lmaydi.
amount_usd
number
majburiy
Steam hamyoniga tushadigan nominal summa (USD, ko'pi bilan 2 kasr xona). Amaldagi chegaralarni GET /v1/steam/pricing beradi (hozir $1–$400).
Bu balansdan yechiladigan summa emas — yechiladigani nominal + ustama (usdt_charged).
idempotency_key
string
ixtiyoriy
Takroriy so'rovda bir xil natija qaytadi. Steam'da ayniqsa muhim: yetkazish asinxron, shuning uchun tarmoq uzilsa xavfsiz qayta yuborishning yagona yo'li shu.