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. |
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
- queued — Pesan telah diterima dan menunggu untuk dikirim.
- sending — Pesan sedang aktif dikirim ke server email penerima.
- sent — Pesan diterima oleh server email penerima.
- delivered — Pengiriman dikonfirmasi (jika didukung oleh server penerima).
Status gagal
- failed — Error sementara atau permanen mencegah pengiriman. Periksa payload webhook untuk alasannya.
- bounced — Alamat penerima tidak ada atau server menolak pesan secara permanen.
- complained — Penerima menandai email sebagai spam.
Pesan masuk
- received — Email tiba di kotak masuk dari pengirim eksternal.
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. |
// 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.
- Jika Anda hanya menyediakan
bodyText, email dikirim sebagaitext/plain. - Jika Anda hanya menyediakan
bodyHtml, email dikirim sebagaitext/html. - Jika Anda menyediakan keduanya, email dikirim sebagai
multipart/alternative. Klien email yang mendukung HTML akan menampilkan versi HTML; yang lain kembali ke versi teks biasa.
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.
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.