Home Products Terms Feedback
public api

Yukii API

REST API công khai để lấy thông tin sản phẩm, bảng giá và feedback. Không cần xác thực, miễn phí sử dụng.

Overview
Base URL & thông tin chung
Base URL
https://yukisito.io.vn
Auth: không cần
Format: JSON
CORS: *
Rate limit: không có
Quick start Example

Gọi thử ngay mà không cần setup gì:

import requests res = requests.get("https://yukisito.io.vn/api/services") data = res.json() for svc in data: print(svc["name"], "→", svc["price_range"])
const res = await fetch("https://yukisito.io.vn/api/services"); const data = await res.json(); data.forEach(svc => { console.log(svc.name, "→", svc.price_range); });
curl https://yukisito.io.vn/api/services
GET /api/services
GET/api/services

Trả về danh sách tất cả sản phẩm với thông tin tổng quan: tên, mô tả, khoảng giá và số gói.

Không có query params. Response là array, mỗi phần tử là 1 sản phẩm.
Response schema
FieldTypeMô tả
idstringKey định danh, dùng cho /api/services/:id
namestringTên hiển thị
descriptionstring | nullMô tả ngắn
price_rangestring | nullVD: "15k – 80k"
product_countnumberSố lượng gói giá
Code example
import requests services = requests.get("https://yukisito.io.vn/api/services").json() for svc in services: print(f"{svc['name']}: {svc['price_range']} ({svc['product_count']} gói)")
const services = await fetch("https://yukisito.io.vn/api/services") .then(r => r.json()); services.forEach(({ name, price_range, product_count }) => { console.log(`${name}: ${price_range} (${product_count} gói)`); });
Response example
[ { "id": "boost", "name": "Server Boost", "description": "Boost server Discord", "price_range": "15k – 60k", "product_count": 4 }, { "id": "nitro", "name": "Nitro", "description": null, "price_range": "80k – 200k", "product_count": 3 } ]
GET /api/services/:id
GET/api/services/:id

Trả về chi tiết đầy đủ của một sản phẩm: danh sách giá, yêu cầu khi mua, khoảng giá.

ParamTypeMô tả
id requiredstringVD: boost, nitro, netflix, spotify
Response schema
FieldTypeMô tả
idstringKey sản phẩm
namestringTên hiển thị
descriptionstring | nullMô tả ngắn
pricesstring[]Danh sách giá đầy đủ (plain text)
price_rangestring | nullGiá thấp nhất – cao nhất
product_countnumberTổng số gói
requirementsstring[]Yêu cầu khi mua (plain text)
Code example
import requests service_id = "boost" res = requests.get(f"https://yukisito.io.vn/api/services/{service_id}") if res.status_code == 404: print("Không tìm thấy sản phẩm") else: data = res.json() print(data["name"], "–", data["price_range"]) print("Giá:", data["prices"]) print("Yêu cầu:", data["requirements"])
const id = "boost"; const res = await fetch(`https://yukisito.io.vn/api/services/${id}`); if (!res.ok) { console.error("Không tìm thấy sản phẩm"); } else { const data = await res.json(); console.log(data.name, "–", data.price_range); console.log("Giá:", data.prices); console.log("Yêu cầu:", data.requirements); }
Response example — 200 OK
{ "id": "boost", "name": "Server Boost", "description": "Boost server Discord", "prices": ["1 Boost – 15k", "2 Boost – 28k", "7 Boost – 80k"], "price_range": "15k – 80k", "product_count": 3, "requirements": ["Cung cấp link invite server"] }
Response example — 404 404
{ "error": "Service not found" }
GET /api/prices
GET/api/prices

Trả về bảng giá gọn của tất cả sản phẩm, dạng object keyed theo service ID. Tiện cho việc hiển thị bảng giá tổng hợp.

Code example
import requests prices = requests.get("https://yukisito.io.vn/api/prices").json() for service_id, info in prices.items(): print(f"\n{info['name']}") for p in info["prices"]: print(f" · {p}")
const prices = await fetch("https://yukisito.io.vn/api/prices") .then(r => r.json()); for (const [id, { name, prices: list }] of Object.entries(prices)) { console.log(`\n${name}`); list.forEach(p => console.log(` · ${p}`)); }
Response example
{ "boost": { "name": "Server Boost", "prices": ["1 Boost – 15k", "2 Boost – 28k"] }, "nitro": { "name": "Nitro", "prices": ["Classic – 80k", "Full – 180k"] } // ... các sản phẩm khác }
GET /api/stats
GET/api/stats

Trả về thống kê tổng hợp: số loại sản phẩm, tổng số gói giá, và số liệu feedback.

Các field feedback có thể là null nếu không kết nối được tới hệ thống feedback.
Code example
import requests stats = requests.get("https://yukisito.io.vn/api/stats").json() print(f"{stats['service_count']} loại sản phẩm, {stats['product_count']} gói") print(f"{stats['feedback_total']} feedback, TB {stats['feedback_avg']} sao")
const stats = await fetch("https://yukisito.io.vn/api/stats") .then(r => r.json()); console.log(`${stats.service_count} loại, ${stats.product_count} gói`); console.log(`${stats.feedback_total} feedback, TB ${stats.feedback_avg}★`);
Response example
{ "service_count": 6, "product_count": 24, "feedback_total": 84, "feedback_avg": 4.9, "feedback_five_star": 71 }
GET /api/feedback
GET/api/feedback

Proxy tới hệ thống feedback, trả về toàn bộ danh sách đánh giá từ Discord. Response được proxy qua server để tránh lỗi CORS.

Endpoint công khai, gọi từ browser hoặc server đều được. Không có rate limit.
Response schema
FieldTypeMô tả
idnumberID duy nhất
userstringDiscord user ID
usernamestringUsername Discord
displayNamestringTên hiển thị
avatarstring | nullURL avatar Discord CDN
starnumberSố sao (1–5)
messagestring | nullNội dung feedback
commentstring | nullComment của shop
proofstring | nullURL ảnh bằng chứng
timestampnumberUnix timestamp (giây)
linkstringLink Discord message gốc
webUrlstringURL xem trên web
Code example
import requests feedbacks = requests.get("https://yukisito.io.vn/api/feedback").json() # Tính % 5 sao five_star = sum(1 for fb in feedbacks if fb["star"] == 5) pct = five_star / len(feedbacks) * 100 print(f"{len(feedbacks)} feedback · {pct:.0f}% 5 sao") # 5 feedback mới nhất recent = sorted(feedbacks, key=lambda x: x["timestamp"], reverse=True)[:5] for fb in recent: print(f"{'★' * fb['star']} {fb['displayName']}: {fb['message']}")
const feedbacks = await fetch("https://yukisito.io.vn/api/feedback") .then(r => r.json()); // Tính % 5 sao const fiveStar = feedbacks.filter(fb => fb.star === 5).length; const pct = (fiveStar / feedbacks.length * 100).toFixed(0); console.log(`${feedbacks.length} feedback · ${pct}% 5 sao`); // 5 feedback mới nhất [...feedbacks] .sort((a, b) => b.timestamp - a.timestamp) .slice(0, 5) .forEach(fb => console.log(`${"★".repeat(fb.star)} ${fb.displayName}: ${fb.message}`));
Response example
[ { "id": 84, "user": "957578081172881408", "username": "piee_sama", "displayName": "Pie", "avatar": "https://cdn.discordapp.com/avatars/...", "star": 5, "message": "nb2m", "comment": null, "proof": null, "timestamp": 1774875871, "link": "https://discord.com/channels/...", "webUrl": "https://tics.yukisito.io.vn/feedback-view?userid=...&id=84" } ]