Bỏ qua tới phần tài liệu
API

Tạo một inbox

Cấp một địa chỉ và trả về token để đọc nó. Mọi trường đều tùy chọn, kể cả body.

POSTapi.openemail.uk/temp-mail/inboxes

Chạy lệnh gọi thật với không gian làm việc của bạn, bằng khóa của chính bạn.

POST /temp-mail/inboxes

Cấp một địa chỉ và trả về token để đọc nó. Mọi trường đều tùy chọn, kể cả body.

Không cần thông tin xác thực

shell
export OE=https://api.openemail.uk

Đừng gửi header Authorization nào cả. Đây là tài nguyên duy nhất trên API trả lời khi không có nó. Nó được đăng ký phía trên bước kiểm tra key thay vì được gán một scope, bởi thứ đang được cung cấp là một địa chỉ dành cho người chưa có địa chỉ nào, và đòi key trước sẽ biến nó thành một biểu mẫu thu thập khách hàng khoác áo công cụ.

Ví dụ

Một body rỗng là hợp lệ và là trường hợp thường gặp: một local-part được sinh ra trên một domain lấy từ pool, thuê trong một giờ.

curl
curl -X POST "$OE/temp-mail/inboxes" -H "Content-Type: application/json" \  -d '{ "localPart": "octopus-signup", "ttlMinutes": 120 }'
Phản hồi
{  "object": "temp_inbox",  "id": "tinb_9c2f41ab7d3e4c118a0f5d72",  "address": "[email protected]",  "domain": "freemailaddress.com",  "createdAt": "2026-09-01T10:00:00.000Z",  "expiresAt": "2026-09-01T12:00:00.000Z",  "extensionsLeft": 22,  "messageCount": 0,  "messageLimit": 50,  "lastMessageAt": null,  "token": "oe_inbox_kQ8v…"}

201, và là phản hồi duy nhất trong toàn bộ API có mang token. Hãy lưu nó lại trước khi làm bất cứ điều gì khác với địa chỉ.

Một local-part được sinh ra gồm mười hai ký tự từ một bảng chữ cái không có nguyên âm và không có ký tự dễ nhầm, nên nó không thể ghép thành chữ gì và vẫn đọc đúng khi nhìn trên màn hình.

Mọi thứ có thể bị từ chối đều bị từ chối đích danh thay vì được điều chỉnh: 422 unknown_domain, invalid_address, reserved_address, hoặc invalid_parameter cho một ttlMinutes nằm ngoài khoảng 1 đến 1440; 409 address_taken cho một local-part đã có người giữ; 429 too_many_inboxes khi chạm trần cấp phát; 503 temp_mail_unavailable trên một bản cài đặt không có domain nào trong pool.

Tham số

Thân yêu cầu

domainstring
Một trong các domain từ `GET /temp-mail/domains`. Bỏ trống thì pool sẽ chọn ngẫu nhiên thay vì lấp đầy domain đầu tiên. Một domain nhận mọi lượt đăng ký dùng một lần trên internet sẽ mang tiếng xấu tương xứng, và tiếng xấu đó dùng chung cho mọi địa chỉ trên nó. Một domain không nằm trong pool bị từ chối đích danh (422 `unknown_domain`) thay vì bị âm thầm thay thế, vì bạn hẳn đã sao chép đúng địa chỉ mình yêu cầu rồi.
localPartstring
Phần trước dấu @, nếu bạn muốn tự chọn: 3 đến 32 ký tự gồm chữ cái, chữ số, dấu chấm, dấu gạch ngang và dấu gạch dưới, bắt đầu và kết thúc bằng một chữ cái hoặc chữ số. Hẹp hơn mức RFC 5321 cho phép, vì chuỗi này đi vào một path URL, một header `To:` và một trang HTML. `+` bị loại, vì sub-addressing bị gộp lại ngay khi thư đi vào, nên `alice+bob` sẽ là một cái tên mà thực ra không ai liên lạc được với bạn qua nó. Tên đã có người dùng trả về 409 `address_taken`, bao gồm hai trường hợp: một khách khác đang giữ nó (hoặc đã giữ nó trong tuần vừa qua, khi địa chỉ vẫn chưa được đưa trở lại lưu thông), và chủ sở hữu domain đã tạo nó thành một địa chỉ thật, trường hợp này bị từ chối dưới cùng mã đó vì thư gửi tới nó sẽ đến tay họ chứ không bao giờ đến tay bạn. `postmaster` và các tên dành riêng khác trả về 422 `reserved_address`.
ttlMinutesnumber
Thời hạn thuê, tính bằng phút, từ 1 đến 1440. Mặc định là 60. Bất cứ giá trị nào ngoài khoảng đó trả về 422 `invalid_parameter` nêu rõ tên trường thay vì bị âm thầm điều chỉnh. Bạn hẳn đã cho ai đó xem đúng thời điểm hết hạn mà mình yêu cầu. 24 giờ được tính từ lúc tạo, nên mỗi giờ lấy trước là một lần gia hạn không thể dùng về sau: `ttlMinutes: 120` trả về còn 22 lần, còn 1440 thì không còn lần nào.

Phản hồi: temp_inbox, kèm một token

idstring
Id của inbox, `tinb_` cộng hai mươi bốn ký tự hex. Nó nằm trong path của mọi lệnh gọi khác, và nó không phải là bí mật. Token mới là bí mật.
addressstring
Địa chỉ để đưa cho người khác. Thư gửi tới `that+anything@` cũng đến được nó, vì sub-addressing bị gộp lại trước khi tra cứu.
domainstring
Domain trong pool mà địa chỉ nằm trên đó, được tách riêng để client không phải tự phân tích địa chỉ mới hiển thị được.
createdAtstring
ISO-8601. Trần 24 giờ được tính từ mốc này, không phải từ lần gia hạn gần nhất.
expiresAtstring
ISO-8601. Qua mốc này token ngừng xác thực ngay lập tức, và đợt quét sẽ xóa thư ở lần chạy kế tiếp.
extensionsLeftnumber
Số lần `extend` thực sự còn mua thêm được thời gian, đã tính cả hai trần: 23 lần gia hạn mà một lượt thuê cho phép, và mốc 24 giờ kể từ `createdAt` mà nó không bao giờ vượt qua được, tùy cái nào chạm trước. Một inbox tạo với `ttlMinutes: 1440` báo 0 dù chưa dùng lần nào. Số 0 nghĩa là lệnh gọi sẽ trả về 409, và đó là thứ client nên dựa vào để làm mờ nút bấm, thay vì bấm rồi mới phát hiện ra.
messageCountnumber
Số thư inbox này đã CHẤP NHẬN, không phải số thư đang hiển thị. Nó không giảm khi bạn xóa một thư: trần đếm số thư đã đến, nên xóa giải phóng dung lượng chứ không giải phóng chỗ.
messageLimitnumber
Trần, được gửi kèm trên mọi inbox để client có thể báo "đầy" mà không phải viết cứng hằng số của chúng tôi.
lastMessageAtstring | null
Lần cuối có thư đến, ISO-8601, hoặc null nếu chưa có thư nào. Với người đã chờ hai phút, null trên một inbox mới tinh đọc rất khác với một inbox im ắng.
tokenstring
Thông tin xác thực, chỉ có trên phản hồi này chứ không có ở đâu khác. `oe_inbox_` cộng 43 ký tự base64url; bản ghi chỉ lưu một hash có khóa, nên nó không thể được đọc lại hay khôi phục.

Mọi phản hồi inbox khác (truy xuất, gia hạn) là chính object này nhưng không có token.