Tài liệu chi tiết các API của dịch vụ Đọc Hotmail & CheckLive TikTok
| Type | Name | Description |
|---|---|---|
| required | data | Chuỗi chứa thông tin tài khoản email. Mỗi tài khoản trên 1 dòng. |
| OAuth/Graph: user@gmail.com|refresh_token|client_id|client_secret Roundcube: user@wmhotmail.com|password | ||
| required | mode | Phương thức kết nối hộp thư. Một trong: oauth, graph, roundcube |
| oauth — Dùng refresh_token và client_id (lấy từ Azure AD app registration) để lấy access token tự động, không cần password. graph — Dùng Microsoft Graph API để đọc thư trực tiếp từ Microsoft. roundcube — Kết nối trực tiếp đến server webmail wmhotmail.com qua IMAP. | ||
// OAuth2 / IMAP - Hotmail/Outlook fetch('https://smail1s.com/get_messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mode: 'oauth', data: 'user@outlook.com|refresh_token|client_id|client_secret' }) }).then(r => r.json()).then(console.log); // OAuth2 Graph API fetch('https://smail1s.com/get_messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mode: 'graph', data: 'user@gmail.com|refresh_token|client_id|client_secret' }) }).then(r => r.json());
| Type | Field | Description |
|---|---|---|
| optional | data[].email | Địa chỉ email của tài khoản |
| optional | data[].messages | Mảng các thư, mỗi thư có: from, subject, date, message, code, uid |
|
from — Tên người gửi subject — Tiêu đề thư date — Thời gian nhận thư (format: YYYY-MM-DD HH:mm:ss) message — Nội dung thư (HTML nếu bắt đầu bằng <, plain text nếu không)code — Mã xác nhận trích xuất tự động từ thư (nếu có) uid — UID định danh duy nhất của thư | ||
| optional | data[].error | Thông báo lỗi nếu đọc thư thất bại |
{
"data": [
{
"email": "user@outlook.com",
"error": null,
"mailSource": "oauth",
"messages": [
{
"uid": "abc123def456",
"from": "Google <no-reply@google.com>",
"subject": "Mã xác nhận Google",
"date": "2026-05-23 10:30:00",
"message": "97530 là mã xác nhận của bạn",
"code": "97530"
}
]
}
]
}{
"data": [
{
"email": null,
"error": "Đã xảy ra lỗi hệ thống",
"messages": []
}
]
}http://mail.wmhotmail.com. Có thể truyền roundcubeBaseUrl để dùng server khác.| Type | Name | Description |
|---|---|---|
| required | data | Chuỗi chứa thông tin tài khoản email. Mỗi tài khoản trên 1 dòng. |
| Roundcube: user@wmhotmail.com|password | ||
| required | mode | Giá trị: roundcube |
| optional | roundcubeBaseUrl | URL server Roundcube (mặc định: http://mail.wmhotmail.com) |
// Roundcube - Get Code wmhotmail.com fetch('https://smail1s.com/get_messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mode: 'roundcube', data: 'user@wmhotmail.com|password123' }) }).then(r => r.json());
{
"data": [
{
"email": "user@wmhotmail.com",
"error": null,
"mailSource": "roundcube",
"messages": [
{
"uid": "44",
"from": "Google <no-reply@google.com>",
"subject": "Mã xác minh",
"date": "2026-05-23 10:30",
"code": "892073",
"message": "892073 là mã xác nhận của bạn"
}
]
}
]
}Đọc thư từ tài khoản Gmail Edu. Sau khi gọi, hệ thống sẽ subscribe email này để nhận thư mới qua Socket.io hoặc HTTP polling (12 giây/lần).
| Type | Name | Description |
|---|---|---|
| required | data | EmailEdu chỉ cần email (không cần password): user@emailfake.com |
| required | mode | Giá trị: emailfake |
// EmailFake - Gmail Edu (không cần password) fetch('https://smail1s.com/get_messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mode: 'emailfake', data: 'user@emailfake.com' }) }).then(r => r.json());
{
"data": [
{
"email": "user@emailfake.com",
"error": null,
"mailSource": "emailfake",
"messages": [
{
"uid": "a1b2c3d4e5f678901234567890123456",
"from": "Meta",
"subject": "Your Instagram code",
"date": "2026-05-23T10:30:00.000Z",
"code": "654321"
}
]
}
]
}/get_messages, gọi endpoint này để lấy nội dung đầy đủ.| Type | Name | Description |
|---|---|---|
| required | Địa chỉ email cần lấy chi tiết (VD: test@emailfake.com) | |
| required | uid | UID của thư cần lấy chi tiết |
| optional | subject | Tiêu đề thư dự phòng — dùng khi không lấy được từ trang |
| optional | from | Người gửi dự phòng — dùng khi không lấy được từ trang |
// Lấy chi tiết 1 email từ EmailFake (Puppeteer) fetch('https://smail1s.com/api/emailfake/detail', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: "user@emailfake.com", uid: "a1b2c3d4e5f678901234567890123456", subject: "Your Instagram code", from: "Meta" }) }).then(r => r.json());
{
"success": true,
"detail": {
"subject": "Your Instagram code",
"from": "Meta",
"bodyHtml": "<div>...full HTML content...</div>",
"bodyText": "Your Instagram verification code is 654321...",
"code": "654321"
}
}Sử dụng Socket.io để nhận thư mới ngay lập tức khi có thư đến hộp thư. Nếu Socket.io không khả dụng, hệ thống tự động fallback sang HTTP polling mỗi 12 giây.
io('https://smail1s.com')/ | Transport: websocket (auto fallback: polling)| Direction | Event | Description |
|---|---|---|
| Emit | email:subscribe | Đăng ký theo dõi một email. Server sẽ bắt đầu gửi thư mới đến email này. |
| Emit | email:unsubscribe | Hủy đăng ký theo dõi một email. |
| Emit | email:known_uids | Gửi UIDs đã load để server không thông báo lại |
| Listen | email:new | Thư mới vừa nhận được. Payload gồm: email, uid, from, subject, body, code, isHtml |
| Listen | email:subscribed | Xác nhận đã subscribe thành công. |
// socket.emit('email:subscribe', 'user@emailfake.com') // socket.on('email:new', (data) => { ... }) { "email": "user@emailfake.com", "uid": "f1e2d3c4b5a697801234567890123456", "from": "Meta", "subject": "Your Instagram code", "body": "<div>...</div>", "code": "654321", "isHtml": true, "timestamp": "2026-05-23T10:35:00.000Z" }
// 1. Kết nối Socket.io const socket = io('https://smail1s.com'); // 2. Subscribe email socket.emit('email:subscribe', 'user@emailfake.com'); // 3. Gửi known_uids (tránh thông báo lại email đã load) socket.emit('email:known_uids', { email: 'user@emailfake.com', uids: ['abc123', 'def456'] }); // 4. Lắng nghe email mới socket.on('email:new', (data) => { console.log('New email!', data); if (data.code) { console.log('Verification code:', data.code); } }); // 5. Fallback: HTTP polling khi không có Socket.io async function pollEmail(email) { const res = await fetch('https://smail1s.com/get_messages', { method: 'POST', body: JSON.stringify({ mode: 'emailfake', data: email }) }); return res.json(); } setInterval(() => pollEmail('user@emailfake.com'), 12000); // 12s
Kiểm tra trạng thái của một tài khoản TikTok. Hỗ trợ nhiều format dữ liệu đầu vào từ chỉ username đến đầy đủ thông tin tài khoản.
| Type | Name | Description |
|---|---|---|
| required | line | Thông tin tài khoản TikTok cần kiểm tra. Hỗ trợ nhiều format: Chỉ username: tiktok_user Đầy đủ: user123|password|email@gmail.com|pwd|refresh_token|client_id |
| optional | useProxy | Bật/tắt sử dụng proxy. Default: false |
| optional | proxyKey | Thông tin proxy (bắt buộc nếu useProxy: true)31.59.20.176:6754:username:password |
fetch('https://smail1s.com/api/check-tiktok-single', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ line: 'tiktok_user|password123', useProxy: true, proxyKey: '31.59.20.176:6754:username:password' }) }).then(r => r.json());
| Type | Field | Description |
|---|---|---|
| optional | success | True nếu request thành công (không phải trạng thái tài khoản) |
| optional | account | Chuỗi tài khoản gốc đã gửi lên |
| optional | status | Trạng thái tài khoản: live (hoạt động), die (die/hết hạn), unknown (không xác định) |
|
LIVE — Tài khoản hoạt động bình thường DIE — Tài khoản đã die (cookie/token hết hạn hoặc sai) UNKNOWN — Không thể xác định (lỗi mạng, lỗi server TikTok) | ||
| optional | message | Thông báo chi tiết về trạng thái hoặc lỗi |
status) — 200{
"success": true,
"account": "tiktok_user|password123",
"status": "live",
"message": "LIVE"
}{
"success": false,
"message": "Thiếu dữ liệu tài khoản để check!"
}{
"success": false,
"message": "Lỗi server: ..."
}Để check hàng loạt, gọi /api/check-tiktok-single cho mỗi tài khoản. Hệ thống hỗ trợ gọi song song (parallel) - bạn có thể gửi tất cả request cùng lúc.
// Batch check TikTok - parallel requests async function checkAllAccounts(accounts, proxies = []) { const results = await Promise.all( accounts.map((line, idx) => { const proxyKey = proxies[idx % proxies.length]; return fetch('https://smail1s.com/api/check-tiktok-single', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ line: line, useProxy: !!proxyKey, proxyKey: proxyKey || undefined }) }).then(r => r.json()); }) ); const live = results.filter(r => r.status === 'live'); const die = results.filter(r => r.status === 'die'); const unknown = results.filter(r => r.status === 'unknown'); console.log(`LIVE: ${${live.length}$ | DIE: ${${die.length}$ | UNKNOWN: ${${unknown.length}$}`); return { live, die, unknown, all: results }; } // Usage const accounts = ['user1', 'user2|password', 'user3|pass|email@x.com|pwd|refresh|clientid']; const proxies = ['31.59.20.176:6754:user:pass']; checkAllAccounts(accounts, proxies);