Dokumentasi API

REST API sederhana untuk membuat email sementara, membaca pesan, dan menghapusnya — cocok untuk bot & otomasi. Semua respons berformat JSON. Endpoint bot bisa ditembak langsung tanpa session.

Base URL
https://mail.contoh.com

Secara default endpoint /api/bot/* terbuka. Jika server menyetel BOT_TOKEN di .env, sertakan token pada setiap permintaan lewat salah satu header berikut:

Authorization: Bearer <BOT_TOKEN>
# atau
x-bot-token: <BOT_TOKEN>

Tanpa token yang benar (saat BOT_TOKEN aktif), API membalas 401 {"ok":false,"error":"Token bot tidak valid."}.

GET /api/bot/domains

Mengambil daftar domain aktif yang bisa dipakai untuk membuat alamat, beserta domain utama (primary).

curl https://mail.contoh.com/api/bot/domains
{
  "ok": true,
  "primary": "contoh.com",
  "domains": ["contoh.com"]
}
POST /api/bot/inbox

Membuat alamat email sementara baru secara acak. Bisa memilih domain tertentu lewat body JSON atau query ?domain=; jika tidak, dipakai domain utama.

NamaLokasiKeterangan
domain body / query Domain target. Harus salah satu dari /api/bot/domains. Default: domain utama.
curl -X POST https://mail.contoh.com/api/bot/inbox \
  -H "Content-Type: application/json" \
  -d '{"domain":"contoh.com"}'
{
  "ok": true,
  "address": "ab12cd34ef@contoh.com",
  "domain": "contoh.com",
  "ttlMinutes": 60
}

ttlMinutes = berapa menit pesan disimpan sebelum dihapus otomatis.

GET /api/bot/inbox/{address}

Mengambil daftar pesan pada sebuah inbox (terbaru di atas). Hanya ringkasan + preview teks; gunakan endpoint baca untuk isi lengkap.

curl https://mail.contoh.com/api/bot/inbox/ab12cd34ef@contoh.com
{
  "ok": true,
  "address": "ab12cd34ef@contoh.com",
  "count": 1,
  "messages": [
    {
      "id": "HNqtOlUvoZUM0hCGrmoW1",
      "sender": "noreply@contoh.com",
      "fromName": "Contoh",
      "subject": "Kode verifikasi kamu",
      "preview": "Kode OTP kamu adalah 123456 ...",
      "receivedAt": 1782288624436,
      "seen": false
    }
  ]
}
GET /api/bot/inbox/{address}/wait

Long-poll: koneksi ditahan sampai ada pesan BARU masuk, lalu langsung dibalas saat itu juga (mirip Telegram, ~1 detik). Ideal untuk bot OTP tanpa polling boros.

NamaLokasiKeterangan
timeout query Detik menunggu sebelum menyerah (default 25, maks 110).
sinceId query ID pesan terakhir yang sudah diproses. Jika ada pesan lebih baru, langsung dibalas tanpa menunggu.
since query Timestamp (ms). Alternatif sinceId: balas jika ada pesan setelah waktu ini.
curl "https://mail.contoh.com/api/bot/inbox/ab12cd34ef@contoh.com/wait?timeout=30"
{
  "ok": true,
  "message": {
    "id": "HNqtOlUvoZUM0hCGrmoW1",
    "sender": "noreply@contoh.com",
    "subject": "Kode verifikasi kamu",
    "receivedAt": 1782288624436
  }
}
{ "ok": true, "message": null, "timedOut": true }

Saat dapat timedOut: true, cukup panggil ulang endpoint ini (gunakan sinceId dari pesan terakhir agar tidak ada yang terlewat).

GET /api/bot/inbox/{address}/messages/{id}

Membaca isi lengkap satu pesan (teks & HTML) beserta daftar lampiran. Secara default TIDAK menandai pesan sebagai dibaca.

NamaLokasiKeterangan
markSeen query Set 1 atau true untuk menandai pesan sudah dibaca.
curl https://mail.contoh.com/api/bot/inbox/ab12cd34ef@contoh.com/messages/HNqtOlUvoZUM0hCGrmoW1
{
  "ok": true,
  "id": "HNqtOlUvoZUM0hCGrmoW1",
  "sender": "noreply@contoh.com",
  "fromName": "Contoh",
  "subject": "Kode verifikasi kamu",
  "text": "Kode OTP kamu adalah 123456",
  "html": "<p>Kode OTP kamu adalah <b>123456</b></p>",
  "receivedAt": 1782288624436,
  "attachments": [
    { "id": "x1", "filename": "invoice.pdf", "contentType": "application/pdf", "size": 20480 }
  ]
}

Unduh lampiran lewat endpoint web yang sudah ada: /api/inbox/{address}/messages/{id}/attachments/{attId}.

DELETE /api/bot/inbox/{address}/messages/{id}

Menghapus satu pesan dari inbox.

curl -X DELETE https://mail.contoh.com/api/bot/inbox/ab12cd34ef@contoh.com/messages/HNqtOlUvoZUM0hCGrmoW1
{ "ok": true, "deleted": true }
DELETE /api/bot/inbox/{address}

Mengosongkan seluruh pesan pada sebuah inbox.

curl -X DELETE https://mail.contoh.com/api/bot/inbox/ab12cd34ef@contoh.com
{ "ok": true, "deleted": 3 }
KodeArti
200Sukses.
400Alamat tidak valid (format salah atau domain tidak aktif).
401Token bot tidak valid (saat BOT_TOKEN aktif).
404Pesan tidak ditemukan.