Đưa NGH vào bot của bạn.
API NGH dùng WebSocket, xác thực một lần và gửi nhiều yêu cầu trên cùng kết nối. Miễn phí, không quota lượt gọi; mỗi socket xử lý tối đa 4 yêu cầu đồng thời.
1. Kết nối và xác thực
Địa chỉ WSS hiện tại (link tạm qua Cloudflare; cần thay khi chuyển sang tên miền cố định):
wss://commodities-teenage-varying-saving.trycloudflare.com/ws
Sau khi mở kết nối, gửi:
{"type":"auth","apikey":"hunglovethuhoa"}Chờ type: authenticated rồi gửi request. Sai key: phản hồi 401 và đóng kết nối. HTTP trực tiếp tới API JSON trả 426; chỉ link tải media được cấp qua WebSocket mới dùng HTTP.
2. Gửi yêu cầu
Mỗi yêu cầu có id riêng để ghép với phản hồi. Path là đường dẫn tác vụ trong thông điệp WebSocket, không phải URL gọi HTTP.
{
"type": "request",
"id": "ai-1",
"method": "POST",
"path": "/v1/chat/completions",
"body": {
"model": "gemini",
"messages": [{"role":"user","content":"Xin chào!"}]
}
}Với GET, truyền tham số đã encode vào path:
{
"type": "request",
"id": "music-1",
"path": "/v1/youtube/search?q=nh%E1%BA%A1c%20chill"
}3. Tích hợp Node.js
Dùng Node.js 24 trở lên. Tải file client ở đầu trang, đặt cùng thư mục với bot:
import { NGHSocket } from './ngh-client.mjs';
const ngh = new NGHSocket(
'wss://commodities-teenage-varying-saving.trycloudflare.com/ws',
'hunglovethuhoa'
);
try {
const result = await ngh.request(
'/v1/youtube/search?q=' + encodeURIComponent('nhạc chill')
);
console.log(result.data.items);
const answer = await ngh.request('/v1/chat/completions', {
method: 'POST',
body: {model:'gpt', messages:[{role:'user',content:'Xin chào'}]}
});
console.log(answer.choices[0].message.content);
} catch (error) {
console.error('NGH:', error.message);
} finally {
ngh.close();
}Trong bot chạy liên tục, giữ một client để tái sử dụng. Client gửi heartbeat và tự mở lại kết nối ở yêu cầu tiếp theo sau khi bị ngắt; không tự gửi lại tác vụ đang lỗi.
Các tác vụ
| Path | Dữ liệu | Chức năng |
|---|---|---|
| /v1/chat/completions | POST body: model, messages | GPT / Gemini, trả choices |
| /v1/zingmp3/search | q=từ khóa | Tìm bài hát |
| /v1/zingmp3/stream | id=mã bài hát | Liên kết phát |
| /v1/zingmp3/lyric | id=mã bài hát | Lời nhạc |
| /v1/soundcloud/search | q=từ khóa | Tìm nhạc |
| /v1/soundcloud/stream | id=liên kết bài hát | Lấy âm thanh |
| /v1/youtube/search | q=từ khóa | Tìm video / nhạc |
| /v1/youtube/download | url=liên kết | Các định dạng video / audio |
| /v1/nhaccuatui/search | q=từ khóa | Tìm bài hát |
| /v1/nhaccuatui/lyric | id=mã bài hát | Lời nhạc |
| /v1/nhaccuatui/download | url=liên kết bài hát | Lấy âm thanh |
| /v1/tiktok/download | url=liên kết | Video, album ảnh và audio |
| /v1/autodownload/download | url=liên kết | Nhận diện nền tảng và tải |
| /v1/mixcloud/search | q=từ khóa | Tìm bản mix |
| /v1/catalog | Không cần tham số | Danh mục API NGH |
AutoDownload nhận liên kết YouTube, TikTok, Facebook, Instagram, Threads, X, Pinterest, Douyin, CapCut, Bilibili, Spotify, Mixcloud, Vimeo, Reddit, Dailymotion, SoundCloud, ZingMP3, Nhạc Của Tui và các nguồn AutoDownload khác của bot như Imgur, Snapchat, Likee, Tumblr, Telegram, VK, Rumble, Streamable, TED, Weibo và Bandcamp. Tùy nền tảng, có thể cần dùng endpoint tìm kiếm riêng. Một số nội dung riêng tư, giới hạn hoặc nguồn lỗi sẽ không lấy được; HTTP 502 không đảm bảo liên kết đó tải được.
Phản hồi và tải file
{
"provider":"NGH Labs", "type":"response",
"id":"music-1", "status":200,
"data": {"provider":"NGH Labs", "success":true, "data": {}}
}AI giữ cấu trúc Chat Completions trong data của phản hồi socket. Media trả provider, success và data; cấu trúc bên trong tùy tác vụ. Các trường URL media là đường dẫn NGH tương đối:
const fileUrl = new URL(media.url, 'https://commodities-teenage-varying-saving.trycloudflare.com'); // Dùng fileUrl.href để tải hoặc gửi file vào bot.
Link media có hạn 60 phút, có thể hết hiệu lực sớm hơn nếu máy chủ khởi động lại hoặc nguồn dừng phục vụ. Khi hết hạn 410, gọi lại tác vụ để cấp link mới. Không có endpoint proxy tùy ý.
Mã lỗi và trạng thái
400: kiểm tra path, tham số và body. 401: sai key. 410: link tải hết hạn. 426: cần dùng WebSocket. 429: chờ các tác vụ đang chạy hoàn tất. 502: chưa lấy được dữ liệu. 503 hoặc đóng socket 1013: website NGH tạm dừng.
Gửi {"type":"ping","id":"keepalive-1"} khoảng 25 giây một lần khi dùng client tự viết. Khi website bị tắt hoặc cổng API tạm dừng, kết nối mới bị từ chối và kết nối hiện tại sẽ đóng sau lần kiểm tra, thường trong 5–10 giây. Đóng tab trình duyệt không tắt API.