API untuk mailbox sementara, pesan, attachment dan webhook.
BLTZMAIL API memungkinkan aplikasi, bot, backend, automation, atau sistem internal membuat temporary mailbox, membaca email secara real-time, mengambil attachment, serta menerima event melalui webhook.
Endpoint utama
Request API menggunakan domain BLTZMAIL yang sama.
https://bltzmail.biz.id/api/v1
Dua jenis autentikasi.
x-api-bltzmail.
API Key Header
x-api-bltzmail: YOUR_API_KEY
Mailbox Bearer Token
Authorization: Bearer YOUR_ACCESS_TOKEN
Health Check
/api/v1/health
Memeriksa status API dan koneksi database.
{
"success": true,
"service": "BLTZMAIL API",
"status": "online",
"database": "online",
"version": "1.1.0",
"timestamp": "2026-08-28T00:00:00.000Z"
}
Mailbox
Mailbox adalah alamat temporary email BLTZMAIL. Setiap mailbox memiliki ID dan access token tersendiri.
/api/v1/mailboxes
Membuat mailbox baru. Username dapat dikirim manual atau dikosongkan untuk menghasilkan nama acak.
AUTH: LOGIN USER ATAU x-api-bltzmailcurl -X POST \
https://bltzmail.biz.id/api/v1/mailboxes \
-H "Content-Type: application/json" \
-H "x-api-bltzmail: YOUR_API_KEY" \
-d '{
"username": "mybot"
}'
{
"success": true,
"data": {
"mailboxId": "uuid",
"email": "mybot@bltzmail.biz.id",
"username": "mybot",
"domain": "bltzmail.biz.id",
"status": "active",
"accessToken": "64-character-token",
"createdAt": "...",
"expiresAt": "..."
}
}
/api/v1/mailboxes
Mengambil daftar mailbox milik akun yang sedang login.
AUTH: USER SESSIONuser_id. Karena itu daftar mailbox user
ditujukan terutama untuk akun website.
/api/v1/mailboxes/:id
Mengambil detail mailbox, jumlah pesan, jumlah unread, waktu dibuat, dan waktu kedaluwarsa.
AUTH: MAILBOX BEARER TOKENcurl \ https://bltzmail.biz.id/api/v1/mailboxes/MAILBOX_ID \ -H "Authorization: Bearer ACCESS_TOKEN"
/api/v1/mailboxes/:id
Menghapus mailbox beserta resource yang terhubung melalui relasi database.
AUTH: MAILBOX BEARER TOKENMessages
/api/v1/mailboxes/:id/messages
Mengambil maksimal 100 pesan terbaru dari mailbox.
AUTH: MAILBOX BEARER TOKEN{
"success": true,
"data": {
"mailboxId": "...",
"email": "mybot@bltzmail.biz.id",
"messages": [
{
"id": "...",
"from": "sender@example.com",
"fromName": "Sender",
"subject": "Verification",
"text": "Your code is 123456",
"html": "<p>...</p>",
"receivedAt": "...",
"sizeBytes": 2048,
"isRead": false
}
]
}
}
/api/v1/mailboxes/:id/messages/:messageId
Membaca detail satu pesan termasuk raw headers dan attachment. Saat endpoint ini dibuka, pesan otomatis ditandai sebagai dibaca.
AUTH: MAILBOX BEARER TOKENis_read = true.
/api/v1/mailboxes/:id/messages/:messageId
Menghapus satu pesan dari mailbox.
AUTH: MAILBOX BEARER TOKENAttachments
/api/v1/mailboxes/:id/messages/:messageId/attachments
Mengambil metadata attachment dari sebuah pesan.
AUTH: MAILBOX BEARER TOKEN| Field | Keterangan |
|---|---|
id |
ID attachment. |
filename |
Nama file yang sudah disanitasi. |
content_type |
MIME type attachment. |
size_bytes |
Ukuran file dalam byte. |
/api/v1/mailboxes/:id/messages/:messageId/attachments/:attachmentId
Mengunduh file attachment. Response dikirim sebagai file menggunakan
Content-Disposition: attachment.
Mailbox Webhooks
Satu mailbox dapat memiliki maksimal lima webhook. Webhook akan menerima event ketika email baru berhasil masuk.
/api/v1/mailboxes/:id/webhooks
Mendaftarkan webhook pada mailbox.
AUTH: MAILBOX BEARER TOKENcurl -X POST \
https://bltzmail.biz.id/api/v1/mailboxes/MAILBOX_ID/webhooks \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook"
}'
{
"success": true,
"data": {
"webhook": {
"id": "...",
"mailbox_id": "...",
"url": "https://example.com/webhook",
"secret": "whsec_...",
"is_active": true,
"created_at": "..."
}
}
}
secret webhook ketika webhook dibuat.
Endpoint list tidak mengembalikan secret.
/api/v1/mailboxes/:id/webhooks
Mengambil seluruh webhook yang terikat langsung pada mailbox.
AUTH: MAILBOX BEARER TOKEN/api/v1/mailboxes/:id/webhooks/:webhookId
Menghapus webhook mailbox.
AUTH: MAILBOX BEARER TOKENEvent mail.received
Event ini dikirim setelah email berhasil tersimpan ke database.
{
"event": "mail.received",
"data": {
"mailboxId": "uuid",
"messageId": "uuid",
"email": "mybot@bltzmail.biz.id",
"from": "sender@example.com",
"fromName": "Sender Name",
"subject": "Verification Code",
"text": "Your code is 123456",
"html": "<p>Your code is 123456</p>",
"receivedAt": "2026-08-28T00:00:00.000Z"
}
}
Webhook Signature
Setiap request webhook memiliki signature HMAC SHA-256 menggunakan secret webhook.
| Header | Isi |
|---|---|
X-Eversa-Event |
Nama event, contoh mail.received. |
X-Eversa-Signature |
sha256=<HMAC> |
User-Agent |
BLTZMAIL/1.0 |
const crypto = require('crypto')
function verifySignature(rawBody, secret, signatureHeader) {
const expected =
'sha256=' +
crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex')
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
)
}
Delivery History & Retry
Setiap pengiriman webhook dicatat pada delivery log. BLTZMAIL juga memiliki retry worker untuk endpoint yang gagal.
/api/v1/mailboxes/:id/webhooks/:webhookId/deliveries
Mengambil riwayat delivery sebuah webhook. Parameter query
limit dapat digunakan dengan nilai 1 sampai 100.
Retry behavior
HTTP status 408, 429, dan
5xx dianggap retryable. Network error atau timeout
juga dicatat sebagai failed.
HTTP Status & Error
{
"success": false,
"message": "Pesan tidak ditemukan."
}
Contoh Node.js
Contoh membuat mailbox, menyimpan access token, lalu mengambil pesan.
const API = 'https://bltzmail.biz.id/api/v1'
const API_KEY = 'YOUR_API_KEY'
async function main() {
const createRes = await fetch(`${API}/mailboxes`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-bltzmail': API_KEY
},
body: JSON.stringify({
username: 'mybot'
})
})
const createData = await createRes.json()
if (!createData.success) {
throw new Error(createData.message)
}
const mailboxId =
createData.data.mailboxId
const accessToken =
createData.data.accessToken
console.log(
'Email:',
createData.data.email
)
const messagesRes = await fetch(
`${API}/mailboxes/${mailboxId}/messages`,
{
headers: {
Authorization:
`Bearer ${accessToken}`
}
}
)
const messages =
await messagesRes.json()
console.log(messages)
}
main().catch(console.error)