Pesan

Pesan mewakili email individu yang dikirim atau diterima oleh kotak masuk. Kirim email HTML kaya, lacak status pengiriman, dan baca balasan masuk.

Ikhtisar

Pesan adalah satu email yang terkait dengan kotak masuk. Saat agen Anda mengirim email, itu membuat pesan keluar. Saat seseorang membalas atau mengirim email ke alamat agen Anda, pesan masuk dibuat otomatis.

Setiap pesan termasuk dalam utas — salah satu yang sudah ada (untuk balasan) atau utas baru yang dibuat otomatis saat percakapan baru dimulai.

Pesan tidak dapat diubah setelah dibuat. Untuk mengirim tindak lanjut, buat pesan baru di utas yang sama dengan meneruskan threadId.

Mengirim Email

POST /inboxes/{inboxId}/messages

Kirim email dari kotak masuk dengan posting ke endpoint pesannya. Array to dan subject wajib; yang lain opsional.

Body Request

Field Tipe Deskripsi
to wajib string[] Array alamat email penerima.
subject wajib string Baris subjek email.
cc string[] Penerima CC.
bcc string[] Penerima BCC. Tidak terlihat oleh penerima lain.
bodyText string Body teks biasa. Digunakan sebagai fallback saat bodyHtml juga disediakan.
bodyHtml string Body HTML. Saat bodyText dan bodyHtml disediakan, email dikirim sebagai multipart/alternative.
threadId string Utas untuk dibalas. Jika dihilangkan, utas baru dibuat.
attachmentIds string[] ID lampiran yang sebelumnya diunggah untuk disertakan.
javascript
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages`,
  {
    method: "POST",
    headers: {
      "x-api-key": process.env.AGENTSEND_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      to: ["customer@example.com"],
      subject: "Following up on your request",
      bodyText: "Hi, just checking in on your request.",
      bodyHtml: "<p>Hi, just checking in on your request.</p>",
    }),
  }
);

const message = await res.json();
console.log(message.id);     // msg_abc123
console.log(message.delivery); // "email" or "dry-run"
console.log(message.status); // "queued"

Properti Pesan

Setiap objek pesan yang dikembalikan oleh API memiliki field berikut.

Properti Tipe Deskripsi
id string Pengenal pesan unik.
inboxId string Kotak masuk tempat pesan ini berada.
threadId string Utas percakapan tempat pesan ini dikelompokkan.
direction string outbound untuk email yang dikirim agen Anda; inbound untuk email yang diterima.
fromAddress string Alamat email pengirim.
toAddresses string[] Penerima utama.
ccAddresses string[] Penerima CC.
subject string Baris subjek email.
bodyText string Konten body teks biasa.
bodyHtml string Konten body HTML.
delivery string Apakah lingkungan mengirim email nyata (email) atau hanya menyimulasikannya (dry-run).
status string Status pengiriman saat ini. Lihat Status Pesan di bawah.
attachments object[] Array objek lampiran dengan id, filename, contentType, dan size.
messageIdHeader string Nilai header Message-ID RFC 5322, digunakan untuk threading di klien email.
createdAt string Timestamp ISO 8601 saat pesan dibuat.

Status Pesan

Pesan keluar bergerak melalui siklus pengiriman. Periksa delivery terlebih dahulu untuk mengonfirmasi apakah lingkungan mengirim email nyata atau hanya menyimulasikannya, lalu gunakan status atau webhooks untuk mengikuti siklus sisi penyedia.

Siklus keluar

Status gagal

Pesan masuk

Jika pesan mencapai status bounced atau complained, hindari mengirim email lebih lanjut ke alamat tersebut untuk melindungi reputasi pengirim Anda.

Daftar Pesan

GET /inboxes/{inboxId}/messages

Ambil daftar terpaginasi pesan untuk kotak masuk. Filter berdasarkan status untuk menemukan balasan masuk, kirim gagal, atau subset lainnya.

Query Param Tipe Deskripsi
limit number Jumlah pesan yang dikembalikan. Default 20, maks 100.
offset number Jumlah pesan yang dilewati untuk paginasi. Default 0.
status string Filter berdasarkan status. Salah satu dari queued, sending, sent, delivered, failed, bounced, complained, received.
javascript
// Fetch the 10 most recent inbound messages
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages?status=received&limit=10`,
  { headers: { "x-api-key": process.env.AGENTSEND_API_KEY } }
);

const { data, total } = await res.json();

for (const msg of data) {
  console.log(msg.fromAddress, msg.subject, msg.bodyText);
}
💡

Gunakan webhooks alih-alih polling untuk mendapat notifikasi saat pesan baru tiba. Polling adalah fallback yang baik untuk skrip sederhana dan tugas berumur pendek.

HTML vs Teks Biasa

AgentSend mendukung email teks biasa, HTML, dan multipart. Gunakan bodyText untuk teks biasa dan bodyHtml untuk konten HTML.

💡

Selalu sertakan versi bodyText di samping bodyHtml. Ini meningkatkan keterkiriman, aksesibilitas, dan kompatibilitas dengan klien email teks biasa.

Menghapus Pesan

DELETE /messages/{id}

Hapus pesan berdasarkan ID-nya. Ini menghapus catatan pesan dari AgentSend. Ini tidak menarik kembali email yang sudah terkirim dari kotak surat penerima.

javascript
await fetch(`https://api.agentsend.io/messages/${messageId}`, {
  method: "DELETE",
  headers: { "x-api-key": process.env.AGENTSEND_API_KEY },
});

Menghapus pesan bersifat permanen. Pesan masuk yang merupakan bagian dari utas aktif harus dihapus dengan hati-hati, karena riwayat utas akan tidak lengkap.