Lấy mã OTP bằng hai dòng lệnh.

API trả JSON thuần, không cần đăng ký. Mọi ví dụ dưới đây chép nguyên là chạy được — địa chỉ và domain trong đó là của chính site này.

Bắt đầu nhanh

Việc thường gặp nhất: tạo một địa chỉ, chờ mã xác minh gửi tới, đọc mã. Đúng hai request.

  1. 1

    Xin một địa chỉ

    Bỏ trống user thì hệ thống sinh ngẫu nhiên 10 ký tự; bỏ trống luôn domain thì bốc ngẫu nhiên một domain đang mở.

    curl "https://mailicloud.store/api/address?domain=mailicloud.store"
    {"address":"k3n8fq2wla@mailicloud.store"}
  2. 2

    Đọc hòm thư kèm nội dung

    Dùng địa chỉ đó đi đăng ký ở đâu cần, rồi gọi lệnh này. html=0 bỏ phần HTML cho nhẹ — tìm OTP thì chỉ cần bodyText.

    curl "https://mailicloud.store/api/inbox?address=k3n8fq2wla@mailicloud.store&html=0"
    {
      "address": "k3n8fq2wla@mailicloud.store",
      "count": 1,
      "messages": [
        {
          "key": "6a81aaf2e7d7885b3d1af630ef18b047f2a6b38f4496672b2322eb5422c9df25",
          "messageId": "<abc123@shop.com>",
          "to": "k3n8fq2wla@mailicloud.store",
          "from": "no-reply@shop.com",
          "fromName": "Shop",
          "subject": "Mã xác minh của bạn",
          "bodyText": "Mã của bạn là 483920",
          "receivedAt": "2026-07-31T10:08:42Z"
        }
      ]
    }

Xác thực và giới hạn

API dùng được ngay không cần key. Key chỉ để gỡ hai giới hạn dưới đây.

Không có key

  • 120 request mỗi phút cho mỗi IP
  • Chỉ thấy mail nhận trong 15 phút gần nhất

Có key

  • Không giới hạn số request
  • Thấy cả mail đã quá hạn hiển thị

Gửi key theo một trong hai cách, tuỳ cái nào tiện hơn:

curl "https://mailicloud.store/api/inbox?address=abc@mailicloud.store&key=KEY_CUA_BAN"

curl -H "Authorization: Bearer KEY_CUA_BAN" \
     "https://mailicloud.store/api/inbox?address=abc@mailicloud.store"

Key do quản trị viên tạo trong trang Cài đặt. Không có sẵn key nào cho khách tự đăng ký.

Toàn bộ endpoint

GET/api/address

Tạo một địa chỉ. Không lưu gì cả — địa chỉ chỉ thực sự tồn tại khi có mail đầu tiên gửi tới.

Tham sốBắt buộcMô tả
domainkhôngBỏ trống thì bốc ngẫu nhiên một domain đang mở (mỗi lần gọi có thể khác domain)
userkhôngPhần trước dấu @. Bỏ trống thì sinh 10 ký tự [a-z0-9]
curl "https://mailicloud.store/api/address?domain=mailicloud.store&user=dat-ten-rieng"
{"address":"dat-ten-rieng@mailicloud.store"}
GET/api/inboxnên dùng

Cả hòm thư kèm nội dung trong một lượt gọi. Đây là endpoint dành cho tool đi lấy OTP — khỏi phải gọi tiếp từng mail một.

Tham sốBắt buộcMô tả
addressĐịa chỉ đầy đủ, gồm cả domain
limitkhôngSố mail trả về. Mặc định 20, trần 100
htmlkhôngĐặt 0 để bỏ bodyHtml — thường chiếm 80–90% dung lượng
sincekhôngMốc Unix (giây); chỉ trả mail nhận từ mốc này trở đi. Để poll lấy mail mới mà khỏi lọc ở client
fromkhôngLọc theo người gửi — chuỗi con, không phân biệt hoa/thường, khớp cả địa chỉ lẫn tên hiển thị (vd huawei, facebook)
curl "https://mailicloud.store/api/inbox?address=abc@mailicloud.store&from=huawei&since=1754899200&html=0"

Mỗi mail trả kèm otp = mã xác nhận rút tự động (rỗng nếu không có). Khỏi tự tách mã ở phía bạn.

{
  "address": "abc@mailicloud.store",
  "count": 1,
  "messages": [
    {
      "key": "6a81aaf2e7d7885b3d1af630ef18b047f2a6b38f4496672b2322eb5422c9df25",
      "from": "no-reply@facebookmail.com",
      "fromName": "Facebook",
      "subject": "Mã xác minh của bạn",
      "otp": "483920",
      "bodyText": "Mã của bạn là 483920",
      "receivedAt": "2026-07-31T10:08:42Z"
    }
  ]
}
GET/api/messages

Chỉ danh sách tóm tắt, không có nội dung. Nhẹ hơn nhiều nên hợp với việc gọi lặp liên tục để dò mail mới; muốn đọc nội dung thì gọi tiếp /api/message/{key}.

Tham sốBắt buộcMô tả
addressTrả tối đa 100 mail mới nhất
curl "https://mailicloud.store/api/messages?address=abc@mailicloud.store"
{
  "address": "abc@mailicloud.store",
  "count": 1,
  "messages": [
    {
      "key": "6a81aaf2e7d7885b3d1af630ef18b047f2a6b38f4496672b2322eb5422c9df25",
      "from": "no-reply@shop.com",
      "fromName": "Shop",
      "subject": "Mã xác minh của bạn",
      "snippet": "Mã của bạn là 483920",
      "hasHtml": true,
      "receivedAt": "2026-07-31T10:08:42Z"
    }
  ]
}
GET/api/message/{key}

Một mail đầy đủ, lấy theo key nhận được từ /api/messages.

curl "https://mailicloud.store/api/message/6a81aaf2e7d7885b3d1af630ef18b047f2a6b38f4496672b2322eb5422c9df25"
GET/api/stream

Server-Sent Events. Có mail mới là đẩy ngay, không phải gọi lặp. Mỗi sự kiện mail mang đúng một phần tử giống trong /api/messages.

curl -N "https://mailicloud.store/api/stream?address=abc@mailicloud.store"
: connected

event: mail
data: {"key":"6a81aaf2…","from":"no-reply@shop.com","subject":"Mã xác minh của bạn",…}

: heartbeat

Mã lỗi

Nghĩa là
400Địa chỉ sai định dạng, domain không mở, hoặc limit ngoài khoảng 1–100
404Không có mail với key đó — hoặc nó đã quá hạn hiển thị và bạn không gửi key
429Vượt 120 request/phút. Chờ sang phút sau hoặc dùng API key
503Hệ thống chưa mở domain nào để nhận mail

Thân lỗi luôn có dạng {"error":"..."}.

Điều nên biết trước khi dùng thật

Hòm thư là công khai

Không có mật khẩu cho từng hòm thư. Ai biết địa chỉ đều đọc được mail trong đó. Đừng dùng cho tài khoản quan trọng hay dữ liệu nhạy cảm.

Mail tự ẩn sau 15 phút

Quá hạn này mail biến khỏi API công khai. Vẫn đọc được nếu gửi kèm API key.

Xoá hẳn sau 72 giờ

Quá hạn này mail bị xoá khỏi database, không khôi phục được kể cả bằng key.

Không có tệp đính kèm

Đính kèm bị bỏ ngay lúc nhận. API chỉ trả phần chữ và HTML của thân mail.