Langsung ke konten
kirim.idPanduan
kirim.idPanduan

Cek status dan daftar pesan

Cara membaca status email lewat GET /v1/messages/{id} dan GET /v1/messages, arti setiap status, dan isi failed_reason.

Developer Diperbarui 4 Oktober 2026 3 menit bacaKB-16
Di halaman ini

Setelah email diterima API dengan status queued, kamu bisa memantau perjalanannya sampai diterima server penerima — atau tahu persis kenapa gagal. kirim.id menyediakan dua endpoint: satu untuk detail sebuah pesan, satu lagi untuk daftar pesan dengan filter. Keduanya butuh scope send_email.

Detail satu pesan#

GET/v1/messages/{message_id}

Detail, statistik buka/klik, dan riwayat event satu pesan. message_id harus UUID milik akunmu; selain itu jawabannya 404.

cURL
curl https://api.kirim.id/v1/messages/9b1c7e2a-5d0f-4b8e-9a51-3f0c2d6e7a10 \
  -H "Authorization: Bearer $KIRIM_API_KEY"
JSON
{
  "message_id": "9b1c7e2a-5d0f-4b8e-9a51-3f0c2d6e7a10",
  "status": "delivered",
  "failed_reason": null,
  "dispatched_at": "2026-09-22T03:04:07.000000Z",
  "channel": "api",
  "to": "[email protected]",
  "from": "[email protected]",
  "from_name": "Toko Rina",
  "reply_to": "[email protected]",
  "subject": "Invoice pesanan #1001",
  "metadata": {"order_id": "1001", "source": "woocommerce"},
  "attachments": [{"filename": "invoice-1001.pdf", "content_type": "application/pdf", "size": 48213}],
  "opened_at": "2026-09-22T03:10:12.000000Z",
  "clicked_at": null,
  "opens": 2,
  "clicks": 0,
  "created_at": "2026-09-22T03:04:05.000000Z",
  "events": [
    {"type": "delivered", "occurred_at": "2026-09-22T03:04:09.000000Z", "url": null},
    {"type": "open", "occurred_at": "2026-09-22T03:10:12.000000Z", "url": null}
  ]
}

Beberapa catatan:

  • subject adalah subjek sebelum merge tag diisi.

  • channel menunjukkan jalur kirim: api, smtp (SMTP relay), atau app (campaign/journey).

  • events berisi riwayat dari yang terlama: delivered, deferred, bounce, complaint, open, click (dengan url), dan unsubscribe.

Daftar pesan#

GET/v1/messages

Daftar pesan dari semua jalur, terbaru dulu, dengan filter dan paginasi.

ParameterKeterangan
idsDaftar message_id dipisah koma, maks. 100. ID yang bukan UUID atau bukan milikmu diabaikan.
statusqueued, sending, sent_to_mta, delivered, bounced, failed
channelapi, smtp, app
toEmail penerima
since · untilRentang waktu dibuat (ISO 8601, sertakan zona waktu)
per_page · pageBawaan 50 · 1. per_page maks. 100.
cURL
curl -G https://api.kirim.id/v1/messages \
  -H "Authorization: Bearer $KIRIM_API_KEY" \
  --data-urlencode "status=bounced" \
  --data-urlencode "since=2026-09-01T00:00:00+07:00" \
  --data-urlencode "per_page=100"
JSON
{
  "data": [ { "...": "objek pesan seperti di atas, tanpa events" } ],
  "meta": {"current_page": 1, "last_page": 3, "per_page": 50, "total": 128}
}

Arti setiap status#

StatusArti
queuedDiterima, menunggu giliran (termasuk saat menunggu batas kecepatan). Kalau failed_reason terisi, penolakan sementara sedang dicoba ulang otomatis.
sendingSedang diserahkan ke server pengiriman (sesaat).
sent_to_mtaSudah diserahkan ke server pengiriman (dispatched_at terisi). Kalau failed_reason diawali "Ditunda sementara", server penerima minta ditunda dan akan dicoba lagi.
deliveredDiterima server email penerima.
bouncedDitolak server penerima. failed_reason berisi kode & alasan, mis. 550 5.1.1 user unknown.
failedTidak jadi dikirim — lihat failed_reason.

Laporan buka, klik, dan laporan spam tidak mengubah status — semuanya tercatat di events, opens, dan clicks.

Isi failed_reason untuk status failed#

  • Domain pengirim tidak aktif. atau Workspace disuspend.

  • Kontak sudah dihapus., Kontak sudah tidak berlangganan., Penerima ada di suppression list. — kondisi berubah setelah API menerima email.

  • Saldo koin habis — top-up koin untuk lanjut mengirim. — saldo habis saat giliran kirim tiba.

  • Penolakan permanen dari server pengiriman, atau penolakan sementara terus-menerus setelah percobaan ulang habis (maks. 3 hari).

  • Tidak ada catatan pengiriman di server MTA — status akhir tidak diketahui. Koin dikembalikan.

  • Lampiran kedaluwarsa, kalau email tertahan antrean lebih dari 4 hari.

Polling atau webhook?#

Mengecek status berulang-ulang (polling) menghabiskan kuota request. Untuk menerima status terkirim, bounce, dibuka, diklik, dan laporan spam secara langsung, pakai webhook. Simpan metadata (mis. order_id) saat mengirim supaya event mudah dicocokkan dengan data di sistemmu.

Langkah berikutnya#

Apakah artikel ini membantu?

Artikel terkait

Masih butuh bantuan?

Tim support kirim.id siap membantu · Senin–Jumat, 09.00–17.00 WIB

Cek status dan daftar pesan · Panduan kirim.id