Email Spam Tester

API

Tiga panggilan. Tanpa kunci, tanpa akun, tanpa pendaftaran.

Pesan alamat, kirim pesan yang hendak Anda kirim ke daftar Anda, baca laporannya. Semua yang ditampilkan halaman tersedia dalam JSON, termasuk skor, seluruh 41 pemeriksaan beserta buktinya, dan bagian standar yang mendasari setiap temuan.

100.000 laporan pertama gratis, tanpa kunci dan tanpa akun. Jika Anda menghubungkan agen alih-alih skrip, server MCP lebih cocok daripada polling.

Coba di sandbox → Setiap endpoint, dengan tombol yang menjalankannya pada layanan aktif. Tidak ada yang memerlukan kunci di sini, jadi permintaan yang Anda kirim dari halaman ini adalah permintaan nyata: permintaan tersebut mencadangkan alamat nyata dan dihitung.

Alur

Dua permintaan dan satu email. Panggilan ketiga hanya diperlukan karena analisis memerlukan waktu beberapa detik.

  1. Pesan alamat

    Kirim POST ke endpoint kotak masuk. Anda akan menerima alamat yang menerima tepat satu pesan dan kedaluwarsa dalam satu jam, beserta slug yang menjadi kunci untuk semua hal lainnya.

  2. Kirim pesan asli ke alamat tersebut

    Melalui SMTP, dari platform yang akan mengirim kampanye. Separuh pemeriksaan membaca header yang ditambahkan platform pengiriman Anda, sehingga pesan yang dibuat secara manual mengukur hal yang salah.

  3. Lakukan polling status, lalu baca laporan

    Endpoint status berukuran beberapa ratus byte dan memberi tahu Anda apakah laporan lengkap sudah layak diambil. Laporan itu sendiri terdiri dari beberapa ribu baris.

# 1. reserve a single-use address
curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'

{
  "address": "test-<slug>@t.email-spam-tester.com",
  "slug": "<slug>",
  "expires_at": "2026-01-01T12:00:00Z"
}
# 2. send your message to that address, then poll
curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'

{
  "slug": "<slug>",
  "analysis_status": "checks_ready",
  "ai_status": "running",
  "checks_done": 39,
  "checks_total": 39
}
# 3. read the report once analysis_status is checks_ready
curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'

{
  "report_url": "https://email-spam-tester.com/t/<slug>",
  "score_ours": 86.4,
  "score_compat": 9.2,
  "subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0, "compliance": 75.0},
  "complete": true,
  "checks": [
    {
      "id": "auth.dmarc",
      "status": "warn",
      "title": "DMARC result",
      "summary": "DMARC passes, but the policy is p=none.",
      "weight_ours": -4.0,
      "evidence": {"policy": "none", "aligned": "dkim"},
      "citations": {"standards": [{"title": "RFC 9989 ยง4.7", "quote": "..."}]}
    }
  ],
  "fixes": [
    {"id": "dmarc-enforce", "gain_ours": 4.0, "gain_compat": 0.0,
     "fix": {"title": "Move DMARC to quarantine", "severity": "medium"}}
  ]
}

Autentikasi

Tidak ada. Tidak ada kunci yang perlu diminta, tidak ada header yang perlu ditetapkan, tidak ada akun yang perlu dibuat. Slug yang Anda terima adalah kapabilitasnya: siapa pun yang memilikinya dapat membaca laporan tersebut, dan tidak ada orang lain yang dapat menebaknya.

Itu juga berarti slug perlu diperlakukan seperti kata sandi. Laporan menampilkan baris subjek, pengirim, alamat pantulan, dan sumber lengkap pesan kepada siapa pun yang memiliki tautannya.

Endpoint

Alamat dasar https://email-spam-tester.com. Semuanya merespons dengan JSON.

POST/api/v1/inbox

Mencadangkan alamat sekali pakai. Kedua parameter bersifat opsional.

langBahasa yang akan digunakan untuk menulis rencana perbaikan dan temuan per pemeriksaan, dalam bentuk kode ISO. Diputuskan sekarang karena pesan tiba melalui SMTP beberapa menit kemudian dan tidak membawa petunjuk tentang siapa yang menunggunya. Kode yang tidak dikenal akan kembali menggunakan bahasa Inggris.
utm_source, utm_medium, utm_campaignDiteruskan ke analitik kami. Berguna jika Anda mengukur integrasi Anda sendiri.

GET/api/v1/tests/{slug}/status

Ringan untuk dipolling. Mengembalikan dua bidang status dan sejauh mana pemeriksaan telah berjalan, tanpa yang lain.

Polling ini, bukan laporan. analysis_status mencapai checks_ready terlebih dahulu, dan rencana AI tersedia di bawah ai_status sekitar satu menit kemudian, sehingga pemanggil yang hanya menginginkan pemeriksaan deterministik tidak perlu menunggu rencana tersebut.

GET/api/v1/tests/{slug}

Seluruh laporan. Merespons 202 selama alamat dicadangkan dan belum ada yang tiba, lalu 200 setelah ada yang tiba.

GET/api/v1/tests/{slug}/message

Pesan persis seperti saat dikirimkan: setiap header dalam urutan wire, kedua isi pesan, daftar lampiran, dan sumber mentah. Diambil secara terpisah karena laporan dipolling dan data ini dapat mencapai satu megabita.

Pesan mentah dihapus sesuai jadwalnya sendiri, lebih cepat daripada laporan. Setelah itu endpoint ini menjawab dengan alasannya, bukan sumbernya.

PUT/api/v1/tests/{slug}/locale

Mengubah bahasa reservasi yang belum digunakan. Untuk agen yang mengetahui bahasa yang dibaca penggunanya setelah agen tersebut meminta alamat. Ditolak setelah pesan tiba, karena pada saat itu analisis sedang berjalan.

GET/api/health

Keaktifan. Tanpa autentikasi, tanpa efek samping.

Membaca laporan

Bidang yang memuat jawaban, dalam urutan yang mungkin Anda inginkan.

score_ours0 hingga 100. Model kami. Autentikasi dan infrastruktur memiliki bobot terbesar, karena keduanya menentukan pengiriman sebelum filter membaca satu kata pun dari salinan.
score_compat0 hingga 10. Mereproduksi angka bergaya SpamAssassin yang sudah biasa dibandingkan, sehingga laporan dapat dibandingkan dengan apa yang dilihat seseorang di tempat lain.
subscoresSkala 0 hingga 100 yang sama per bagian: auth, infra_spam, content, compliance.
checks[]Semua 41 pemeriksaan, masing-masing dengan status, temuan satu baris, bukti yang menjadi dasar keputusan, dan dampaknya terhadap kedua skor.
checks[].citationsAsal temuan: bagian RFC, dikutip secara verbatim, dan halaman tempat Google menyatakan persyaratannya sendiri. Disusun secara manual alih-alih dihasilkan, sehingga dapat diandalkan.
fixes[]Hal yang perlu diubah, secara berurutan, beserta poin yang diperoleh dari setiap perubahan. Peningkatan dihitung dengan menghitung ulang skor laporan, bukan diperkirakan.
completeFalse ketika suatu pemeriksaan tidak dapat dijalankan. Item yang tidak diperiksa tidak pernah dianggap lulus, jadi anggap skor terlalu optimistis hingga nilainya true.
report_urlHalaman yang dapat dibaca manusia. Berikan halaman tersebut kepada seseorang, bukan setumpuk JSON.

Status

Sebuah pemeriksaan memiliki satu dari lima status, dan perbedaan antara dua di antaranya lebih penting daripada yang terlihat.

passPemeriksaan dijalankan dan tidak menemukan masalah.
warnPerlu diperbaiki. Mengurangi poin.
failAkan merugikan pengiriman Anda. Mengurangi lebih banyak poin.
lewatiTidak berlaku. Tidak ada lampiran untuk dipindai, tidak ada bagian HTML untuk dinilai. Bukan status lulus.
kesalahanKami tidak dapat mengetahuinya. Dikecualikan dari skor dan ditandai, alih-alih dihitung sebagai status lulus.

analysis_status menjalankan received, analyzing, checks_ready, failed. ai_status menjalankan pending, running, ready, fallback, error. Laporan deterministik bersifat final pada checks_ready; ai_status hanya menambahkan rencana.

Respons yang mungkin diterima

202Alamat telah dicadangkan dan belum ada pesan yang tiba. Isi respons memuat alamat, waktu kedaluwarsa, dan bahasa, sehingga pemanggil yang tidak membuat pencadangan tetap dapat menampilkannya.
404Slug tersebut tidak ada. Tidak pernah ada, atau pencadangannya telah dilupakan.
410Alamat kedaluwarsa sebelum pesan tiba.
409Anda mencoba mengubah bahasa setelah pesan tiba.
429Batas pengujian gratis untuk alamat Anda. Saat ini tidak ada batas per orang pada layanan ini; jika batas tersebut ditetapkan, isi respons menyatakan kapan batas itu direset.

Empat hal yang perlu diketahui

Satu pesan per alamat

Pesan kedua ditolak. Laporan Anda sebelumnya tetap utuh, dan memang itulah tujuannya.

Satu jam untuk menggunakannya

Alamat tersebut kedaluwarsa; laporannya tidak. Tautan laporan bersifat permanen, jadi tautan yang ditempelkan ke tiket akan tetap berfungsi.

Kirim dari platform

Menguji kampanye dari akun pribadi mengukur akun tersebut. Hampir semua hal di bagian autentikasi berkaitan dengan infrastruktur pengiriman, bukan teksnya.

Uji ulang setelah memperbaiki

Perkiraan peningkatan dihitung untuk satu perbaikan pada satu waktu dan tidak dapat digabungkan. Laporan kedua adalah angka yang sebenarnya.

Untuk mesin

Coba satu secara manual terlebih dahulu

Prosesnya memerlukan waktu sekitar satu menit dan menunjukkan dengan tepat apa yang dijelaskan oleh JSON.

Dapatkan alamat pengujian