Detailed API documentation for Read Hotmail & CheckLive TikTok services
| Type | Name | Description |
|---|---|---|
| required | data | String containing email account info. One account per line. |
| OAuth/Graph: user@gmail.com|refresh_token|client_id|client_secret Roundcube: user@wmhotmail.com|password | ||
| required | mode | Mailbox connection method. One of: oauth, graph, roundcube |
| oauth — Use refresh_token and client_id (from Azure AD app registration) to get access token automatically, no password needed. graph — Use Microsoft Graph API to read emails directly from Microsoft. roundcube — Connect directly to wmhotmail.com webmail server via 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 | Email address of the account |
| optional | data[].messages | Array of emails, each has: from, subject, date, message, code, uid |
|
from — Sender name subject — Email subject date — Email received time (format: YYYY-MM-DD HH:mm:ss) message — Email body (HTML if starts with <, plain text otherwise)code — Verification code auto-extracted from email (if any) uid — Unique identifier UID of the email | ||
| optional | data[].error | Error message if reading email failed |
{
"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 | String containing email account info. One account per line. |
| 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"
}
]
}
]
}Read emails from Gmail Edu account. After calling, the system will subscribe to this email to receive new emails via Socket.io or HTTP polling (every 12 seconds).
| 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, call this endpoint to get full content.| Type | Name | Description |
|---|---|---|
| required | Email address to get details for | |
| required | uid | UID of the email to get details |
| optional | subject | Fallback email subject — used when not found on page |
| optional | from | Fallback sender — used when not found on page |
// Lấy chi tiết 1 email 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"
}
}Use Socket.io to receive new emails immediately when they arrive. If Socket.io is unavailable, the system automatically falls back to HTTP polling every 12 seconds.
io('https://smail1s.com')/ | Transport: websocket (auto fallback: polling)| Direction | Event | Description |
|---|---|---|
| Emit | email:subscribe | Subscribe to an email. Server will start sending new emails to this email. |
| Emit | email:unsubscribe | Unsubscribe from an email. |
| Emit | email:known_uids | Gửi UIDs đã load để server không thông báo lại |
| Listen | email:new | New email received. Payload includes: email, uid, from, subject, body, code, isHtml |
| Listen | email:subscribed | Confirmation of successful subscription. |
// 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) => { }); // 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
Check the status of a TikTok account. Supports multiple input data formats from username only to full account information.
| Type | Name | Description |
|---|---|---|
| required | line | TikTok account info to check. Supports multiple formats: Username only: tiktok_user Full: user123|password|email@gmail.com|pwd|refresh_token|client_id |
| optional | useProxy | Enable/disable proxy. Default: false |
| optional | proxyKey | Proxy info (required if 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 if request is successful (not account status) |
| optional | account | Chuỗi tài khoản gốc đã gửi lên |
| optional | status | Account status: live (active), die (dead/expired), unknown (undetermined) |
|
LIVE — Account is active and working DIE — Account is dead (cookie/token expired or invalid) UNKNOWN — Cannot determine (network error, TikTok server error) | ||
| optional | message | Detailed message about status or error |
status field) — 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: ..."
}To check in bulk, call /api/check-tiktok-single for each account. The system supports parallel calls - you can send all requests at the same time.
// 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'); 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);
Get available domains for creating mailboxes
fetch('https://smail1s.com/api/v2/mail/domains') .then(r => r.json()) .then(console.log);
{
"success": true,
"domains": ["smail1s.com"]
}Create new mailbox (random or custom), lifetime: 15 minutes
| Type | Name | Description |
|---|---|---|
| optional | mailbox | Mailbox name (a-z0-9._-, 1-32 chars). Leave empty = random |
| optional | domain | Domain to use. Leave empty = use first domain |
// Create random email fetch('https://smail1s.com/api/v2/mail/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }).then(r => r.json()); // Create custom email fetch('https://smail1s.com/api/v2/mail/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mailbox: 'mytest123', domain: 'smail1s.com' }) }).then(r => r.json());
{
"success": true,
"email": "a1b2c3d4e5f6@smail1s.com",
"expiresAt": "2026-08-13T10:45:00.000Z"
}Get all emails in inbox (sorted by UID descending)
| Type | Name | Description |
|---|---|---|
| required | Email address to read inbox |
fetch('https://smail1s.com/api/v2/mail/inbox', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'a1b2c3d4e5f6@smail1s.com' }) }).then(r => r.json());
{
"messages": [
{
"uid": 42,
"subject": "Your verification code",
"from": "Google <no-reply@google.com>",
"date": "2026-08-13T10:30:00.000Z",
"preview": "Your verification code is 456745...",
"hasAttachments": false
}
]
}Get full content of an email (HTML, text, attachments)
| Type | Name | Description |
|---|---|---|
| required | Email address | |
| required | uid | Email UID (from inbox) |
fetch('https://smail1s.com/api/v2/mail/detail', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'a1b2c3d4e5f6@smail1s.com', uid: 42 }) }).then(r => r.json());
{
"uid": 42,
"subject": "Your verification code",
"from": "Google <no-reply@google.com>",
"to": "a1b2c3d4e5f6@smail1s.com",
"cc": "",
"replyTo": "",
"date": "2026-08-13T10:30:00.000Z",
"html": "<div>Your verification code is <strong>456745</strong></div>",
"text": "Your verification code is 456745",
"attachments": []
}Wait and extract OTP from latest email (timeout 60s). Response: text/plain
// Response is plain text (NOT JSON), use .text() const otp = await fetch( 'https://smail1s.com/api/v2/mail/otp?email=a1b2c3d4e5f6@smail1s.com' ).then(r => r.text());
456745
Create mailbox (if not exists) or reuse (if exists) + wait for OTP in 1 single request (long-polling 60s). Response: text/plain containing OTP.
| Type | Name | Description |
|---|---|---|
| required | Địa chỉ email đầy đủ (vd: test123@smail1s.com). Nếu chưa tồn tại sẽ tự động tạo mới. |
// Cách 1: Dùng trực tiếp trong browser hoặc curl // Browser: Copy URL này vào address bar https://smail1s.com/api/v2/mail/create-and-otp?email=test123@smail1s.com // Terminal: curl curl "https://smail1s.com/api/v2/mail/create-and-otp?email=test123@smail1s.com" // Cách 2: JavaScript fetch (long-polling 60s) const email = 'test123@smail1s.com'; // Gọi API và đợi OTP const otp = await fetch( `https://smail1s.com/api/v2/mail/create-and-otp?email=${encodeURIComponent(email)}` ).then(r => r.text()); if (otp) { // Dùng email để đăng ký service await registerService(email); // Verify với OTP await verifyWithOTP(otp); } else { } // Gọi lần 2 với cùng email → trả rỗng (OTP đã consumed) const otp2 = await fetch( `https://smail1s.com/api/v2/mail/create-and-otp?email=${encodeURIComponent(email)}` ).then(r => r.text()); // Nếu có mail OTP mới → gọi lại sẽ nhận OTP mới
456745
POST version trả về JSON với email address, sau đó cần gọi /otp riêng để lấy OTP.
const { email } = await fetch('https://smail1s.com/api/v2/mail/create-and-otp', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mailbox: 'test123' }) }).then(r => r.json()); // Dùng email để đăng ký await registerService(email); // Đọc OTP qua endpoint riêng const otp = await fetch( `https://smail1s.com/api/v2/mail/otp?email=${encodeURIComponent(email)}` ).then(r => r.text());
?email=yourname@smail1s.com// ========== FLOW 1: Tách biệt (Create riêng + OTP riêng) ========== // 1. Tạo mailbox const { email } = await fetch('https://smail1s.com/api/v2/mail/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }).then(r => r.json()); // 2. Đăng ký dịch vụ bên thứ 3 await registerThirdPartyService(email); // 3. Đợi OTP (long-polling 60s) const otp = await fetch( `https://smail1s.com/api/v2/mail/otp?email=${encodeURIComponent(email)}` ).then(r => r.text()); if (otp) { await verifyWithOTP(otp); } // ========== FLOW 2: Combined (tối ưu cho automation) ========== // Tạo mailbox qua create-and-otp const { email: email2 } = await fetch('https://smail1s.com/api/v2/mail/create-and-otp', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }).then(r => r.json()); // Đăng ký dịch vụ với tracking param await registerService({ email: email2, callbackUrl: `https://app.com/verify?localPath=${encodeURIComponent(email2)}` }); // Đợi OTP - có thể gọi ngay sau khi đăng ký const otp2 = await fetch( `https://smail1s.com/api/v2/mail/otp?email=${encodeURIComponent(email2)}` ).then(r => r.text()); if (otp2) { await verifyWithOTP(otp2); } // ========== FLOW 3: Kiểm tra inbox thủ công ========== // Lấy danh sách email const { messages } = await fetch('https://smail1s.com/api/v2/mail/inbox', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email }) }).then(r => r.json()); // Đọc chi tiết email đầu tiên if (messages.length > 0) { const detail = await fetch('https://smail1s.com/api/v2/mail/detail', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email, uid: messages[0].uid }) }).then(r => r.json()); }