Pesan
Pesan diambil per-inbox (via fullAddress) atau per-ID. Retensi pesan default 7 hari sejak diterima.
List pesan inbox
GET /v1/inboxes/:address/messages
Auth: API key (read) atau JWT. :address = fullAddress lengkap (mis. abc12@inbox.brandkamu.id).
Query params (semua opsional):
| Param | Keterangan |
|---|---|
q | Full-text search (subject/body). Minimal 2 karakter |
cursor | Cursor pagination (lihat Pagination) |
limit | Jumlah per halaman, 1–100 (default 50) |
curl -H "X-API-Key: clk_live_xxx" \
"https://api.cloudin.id/v1/inboxes/abc12@inbox.brandkamu.id/messages"
Response (item list — tanpa textBody/htmlBody):
{
"data": [
{
"id": "01HXY...",
"addressId": "01HXY...",
"fromAddr": "sender@example.com",
"fromName": "OpenAI",
"toAddr": "abc12@inbox.brandkamu.id",
"subject": "Verifikasi Email",
"preview": "Kode kamu adalah...",
"sizeBytes": 8421,
"isRead": false,
"otpCode": "918203",
"tags": [],
"receivedAt": "2026-05-28T07:00:00.000Z",
"expiresAt": "2026-06-04T07:00:00.000Z",
"createdAt": "2026-05-28T07:00:00.000Z"
}
],
"meta": { "cursor": "01HXZ...", "hasMore": true }
}
otpCode otomatis di-ekstrak dari email verifikasi (numerik atau alfanumerik). null kalau tidak terdeteksi.
Detail pesan
GET /v1/messages/:id
Auth: API key (read) atau JWT. Mengembalikan pesan lengkap termasuk textBody dan htmlBody. Memanggil endpoint ini menandai pesan sebagai read (isRead: true).
curl -H "X-API-Key: clk_live_xxx" \
https://api.cloudin.id/v1/messages/MSG_ID
Response:
{
"data": {
"id": "01HXY...",
"addressId": "01HXY...",
"fromAddr": "sender@example.com",
"fromName": "OpenAI",
"toAddr": "abc12@inbox.brandkamu.id",
"subject": "Verifikasi Email",
"preview": "Kode kamu adalah...",
"textBody": "Kode kamu adalah 918203",
"htmlBody": "<p>Kode kamu adalah <b>918203</b></p>",
"sizeBytes": 8421,
"isRead": true,
"otpCode": "918203",
"tags": [],
"receivedAt": "2026-05-28T07:00:00.000Z",
"expiresAt": "2026-06-04T07:00:00.000Z"
}
}
Hapus pesan
DELETE /v1/messages/:id
Auth: JWT saja (tidak ada di allow-list API key). Response 204 No Content. Menghapus pesan memicu event webhook message.deleted.
Pola untuk bot OTP
Untuk otomasi yang cuma butuh OTP, subscribe webhook message.received dengan filter filterOtpOnly: true supaya bot hanya di-ping saat ada kode — lebih cepat daripada polling. Lihat Webhook. Kalau tetap polling, gunakan GET /v1/inboxes/:address/messages lalu baca otpCode dari item terbaru.