Xác thực API key Lấy API key tại Hồ sơ . Gửi key trong header X-API-Key hoặc Authorization: Bearer ở mọi request API V1.
CURL
curl http://127.0.0.1:2012/api/v1/me \
-H "X-API-Key: mrk_your_api_key" JAVASCRIPT (FETCH)
const response = await fetch(
"http://127.0.0.1:2012/api/v1/me" ,
{ headers: { "X-API-Key" : apiKey } }
);
const data = await response.json();⚠ Bảo mật API key. Không đưa key vào frontend công khai, ảnh chụp màn hình hoặc repository. Bấm nút tạo key mới trong Hồ sơ nếu key bị lộ.
Danh sách dịch vụ Lấy service_id trước khi thuê GET /api/servicesLấy danh sách dịch vụ Trả về các dịch vụ đang được frontend sử dụng. Giá trị services[].id chính là service_id cần gửi khi gọi API thuê mail.
API KEY / SESSION REQUEST Sao chép
curl http://127.0.0.1:2012/api/services \
-H "X-API-Key: mrk_your_api_key" \
-H "Accept: application/json"RESPONSE · 200
{
"services" : [{
"id" : "icloud-facebook" ,
"name" : "Facebook" ,
"code" : "FACEBOOK" ,
"price" : 500,
"stock" : 12,
"mailbox_type" : "iCloud Mail OTP" ,
"available" : true
}]
}Chọn dịch vụ có available: true và stock > 0, lấy services[].id, rồi truyền nguyên giá trị đó vào POST /api/orders/rent. Endpoint /api/products chỉ là compatibility path của frontend cũ, không được xem là alias backend đã xác nhận.
Thao tác thuê mail Tạo đơn mới, thuê lại hoặc tạo alias Các endpoint bên dưới dùng API key của tài khoản. Gửi X-API-Key: mrk_your_api_key hoặc Authorization: Bearer mrk_your_api_key, kèm Content-Type: application/json.
⚠ Chỉ gọi từ server của bạn. Không nhúng API key vào JavaScript phía trình duyệt, ứng dụng công khai, ảnh chụp màn hình hoặc repository.
POST /api/orders/rentThuê mail mới Tạo một đơn thuê mới từ service_id. Lấy service ID từ danh sách dịch vụ mà hệ thống cung cấp.
API KEY REQUEST Sao chép
curl -X POST http://127.0.0.1:2012/api/orders/rent \
-H "X-API-Key: mrk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"service_id":"icloud-facebook"}'RESPONSE · 200
{
"balance" : 4500,
"order" : {
"id" : 15,
"email" : "mail@example.com" ,
"price" : 500,
"status" : "Pending OTP"
}
}Sau khi thuê thành công, dùng order ID để theo dõi OTP/lịch sử. Số dư trong response là số dư mới sau giao dịch.
POST /api/orders/rerentThuê lại mail đã có Tạo đơn thuê lại từ một đơn cũ bằng rental_id. Backend quyết định đơn nào đủ điều kiện thuê lại.
API KEY REQUEST Sao chép
curl -X POST http://127.0.0.1:2012/api/orders/rerent \
-H "Authorization: Bearer mrk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"rental_id":15}'RESPONSE · 200
{
"balance" : 4150,
"order" : {
"id" : 16,
"email" : "mail@example.com" ,
"price" : 350,
"status" : "Pending OTP"
}
}Dùng rental_id từ lịch sử đơn thuê. Giá và điều kiện thuê lại do backend cấu hình; không giả định một tỷ lệ hoặc thời hạn cố định ở client.
POST /api/orders/aliasThuê alias Tạo alias từ một đơn thuê hiện có bằng rental_id. Backend sinh mailbox alias và xác thực điều kiện của đơn gốc.
API KEY REQUEST Sao chép
curl -X POST http://127.0.0.1:2012/api/orders/alias \
-H "X-API-Key: mrk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"rental_id":15}'RESPONSE · 200
{
"balance" : 4100,
"order" : {
"id" : 17,
"email" : "alias@example.com" ,
"price" : 50,
"status" : "Pending OTP"
}
}Trong lịch sử đơn, alias có thể kèm source_mailbox để liên kết với mailbox gốc. Chỉ backend mới xác định được loại đơn nào có thể tạo alias.
API người dùng Đọc dữ liệu của chính tài khoản GET /api/v1/meThông tin tài khoản Trả về tên đăng nhập, email, họ tên và số dư xu hiện có.
API KEY REQUEST Sao chép
curl http://127.0.0.1:2012/api/v1/me \
-H "X-API-Key: mrk_your_api_key"RESPONSE · 200
{
"user" : {
"username" : "phatchau036" ,
"email" : "user@example.com" ,
"full_name" : "Phat Chau" ,
"balance" : 5000
}
}
GET /api/v1/mail?mailbox=mail@example.comĐọc mail và OTP Không truyền mailbox để lấy tóm tắt OTP từ các đơn thuê. Truyền mailbox để đọc nội dung mail từ IMAP.
API KEY REQUEST Sao chép
curl "http://127.0.0.1:2012/api/v1/mail?mailbox=mail@example.com" \
-H "Authorization: Bearer mrk_your_api_key"RESPONSE · 200
{
"mailbox" : "mail@example.com" ,
"messages" : [{
"uid" : "42" ,
"subject" : "Your verification code" ,
"otp" : "123456" ,
"date" : "Fri, 22 Aug 2026 ..."
}]
}
GET /api/v1/mailboxesDanh sách mailbox đã được cấp Lấy các mailbox thuộc tài khoản hiện tại và thông tin dịch vụ đã dùng.
API KEY REQUEST Sao chép
curl http://127.0.0.1:2012/api/v1/mailboxes \
-H "X-API-Key: mrk_your_api_key"RESPONSE · 200
{
"mailboxes" : [{
"mailbox" : "mail@example.com" ,
"note" : "iCloud OTP" ,
"created_at" : "22/08/2026 08:23"
}]
}
GET /api/v1/mail-history?mailbox=mail@example.comLịch sử mailbox và dịch vụ Lọc theo một mailbox bằng query mailbox hoặc bỏ query để lấy toàn bộ lịch sử của tài khoản.
API KEY REQUEST Sao chép
curl "http://127.0.0.1:2012/api/v1/mail-history" \
-H "X-API-Key: mrk_your_api_key"RESPONSE · 200
{
"history" : [{
"mailbox" : "mail@example.com" ,
"service_name" : "Facebook" ,
"status" : "completed"
}]
}
GET /api/v1/rentalsLịch sử đơn thuê Trả về các đơn thuê, trạng thái và OTP nếu đã nhận được.
API KEY REQUEST Sao chép
curl http://127.0.0.1:2012/api/v1/rentals \
-H "X-API-Key: mrk_your_api_key"RESPONSE · 200
{
"rentals" : [{
"id" : 15,
"service" : "Facebook" ,
"email" : "mail@example.com" ,
"otp" : "123456" ,
"status" : "completed"
}]
}
Xử lý lỗi HTTP status API KEY KHÔNG HỢP LỆ · 401
{ "error" : "Valid API key required..." }MAILBOX / ĐƠN KHÔNG TỒN TẠI · 404
{ "error" : "Mailbox or rental not found." }Tùy cấu hình backend, request thiếu hoặc sai service_id/rental_id có thể trả 400; không đủ số dư có thể trả 402; đơn không đủ điều kiện có thể trả 409 hoặc 422; backend tạm thời không khả dụng có thể trả 502. Luôn đọc trường error trong JSON để hiển thị thông báo.