Langsung ke konten

Error

5 min read

Setiap respons API Kirisan berformat JSON. Panggilan berhasil menyertakan "status": true. Kegagalan menyertakan "status": false dan "reason" yang mudah dibaca ketika seluruh permintaan gagal sebelum pengiriman ke channel.

Kode status HTTP

StatusKapan terjadi
200Permintaan terurai — periksa "status" di body (send dapat mengembalikan 200 dengan "status": false dan detail channel)
400JSON tidak valid, field hilang, atau error validasi
401Bearer token hilang atau tidak valid
403Bearer token valid tetapi channel key bukan milik akun Anda
503Layanan sementara tidak tersedia

POST /v1/send biasanya mengembalikan HTTP 200 meskipun pengiriman gagal — baca "status" dan "channels".

reason tingkat atas

Ini muncul di root respons ketika permintaan tidak pernah sampai ke pengiriman, atau ketika setiap channel gagal secara blocking:

Reason (contoh)Arti
missing api token / invalid api tokenPerbaiki Authorization: Bearer … — lihat Authentication
invalid JSONBody bukan JSON valid
No channels configuredkeys kosong — sertakan minimal satu token channel
content requiredTidak ada objek content dengan minimal satu channel
no sendable channels: content requires a matching keyAnda mengatur content.whatsapp tetapi tidak menyertakan keys.whatsapp, atau sejenisnya
Invalid schedule: the time is in the past.context.timing.schedule harus timestamp Unix di masa depan
whatsapp key does not belong to this accountToken channel milik pengguna lain (403)

Error validasi dari body pesan juga dikembalikan sebagai "reason" tingkat atas sebelum send — misalnya email inline message requires subject atau waba message type must be text, interactive, image, video, or document.

Error per channel (channels)

Pada POST /v1/send, setiap channel yang Anda coba punya objek sendiri di bawah "channels":

{
  "status": false,
  "channels": {
    "whatsapp": {
      "status": false,
      "reason": "template is not approved for sending",
      "processing_time": "142ms"
    },
    "email": {
      "status": true,
      "processing_time": "891ms"
    }
  }
}
FieldArti
statustrue jika channel tersebut terkirim (atau dijadwalkan)
reasonAda jika status adalah false — kuota, target hilang, template tidak aktif, error provider, dll. Untuk email, error SMTP/transport diringkas menjadi kalimat singkat yang mudah dibaca (misalnya Recipient address does not exist). Teks mentah provider hanya disimpan di log internal. Kegagalan email yang tidak dikenali mengembalikan Email could not be delivered. Pesan kuota seperti insufficient quota dan paid plan expired dikembalikan apa adanya.
detailPayload provider tambahan pada beberapa channel (WhatsApp, Telegram, WABA)
processing_timeLama panggilan ke provider
scheduledtrue ketika pesan diantre untuk context.timing.schedule
fallbacktrue ketika channel ini mengirim sebagai bagian dari tier fallback

Ketika satu channel gagal dan yang lain berhasil (misalnya WhatsApp gagal, fallback email berhasil), "status" tingkat atas mungkin tetap true jika ada channel yang terkirim.

Error template saat send

Ketika content.<channel>.template menunjuk ke template dashboard yang tidak bisa dikirim:

ReasonArti
template is not approved for sendingTemplate masih menunggu review atau ditolak
template is inactiveTemplate ada tetapi dimatikan di dashboard
WhatsApp template not foundID salah, channel salah, atau template milik akun lain

Buat template di Channel → channel → Templates dan pastikan status Approved dan Active sebelum mereferensikan ID-nya saat send.

Error email

Alasan ini muncul di "channels.email.reason" (atau di root jika email adalah satu-satunya channel yang gagal):

ReasonArtiYang dilakukan
rate_limitedAnda mengirim lebih dari 2 permintaan per detik untuk email marketing atau tanpa template pada domain yang sama. Respons bisa menyertakan retry_after (detik).Tunggu, lalu kirim lagi. Template transactional tidak memakai batas ini.
queue_fullTerlalu banyak email marketing atau tanpa template masih menunggu untuk domain ini.Tunggu beberapa terkirim, lalu coba lagi.
email_lane_blockedJenis email itu (transactional, marketing, atau raw) sedang diblokir di domain.Buka Channel → Email → Domains, baca label di bawah Sending health, lalu Acknowledge.
email_domain_suspendedKesehatan domain menjeda jenis email itu.Buka Channel → Email → Domains. Badge bisa menampilkan Suspended until …. Tunggu atau acknowledge sesuai yang ditampilkan.
not_in_email_poolTemplate marketing ke alamat yang belum pernah menerima email dari domain ini.Kirim dulu transactional atau email tanpa template ke alamat itu, atau pakai alamat yang sudah pernah Anda kirimi.
email inline message requires subjectPesan tanpa template tidak punya subject.Tambahkan subject.
email inline message requires message or htmlPesan tanpa template tidak punya isi.Tambahkan message dan/atau html.
email inline message type must be textmessage.type bukan text.Set type ke "text".

Error SMTP (gagal kirim ke provider)

Saat email service menolak kiriman ke Gmail/Outlook/Yahoo, channels.email.reason memakai kode stabil (bukan teks SMTP mentah). Detail SMTP penuh ada di log Kirisan (admin).

ReasonArtiYang dilakukan
recipient_not_foundAlamat penerima tidak ada atau invalid (hard bounce).Hapus atau perbaiki alamat; alamat ini di-suppress permanen.
recipient_temp_unavailableKotak penuh atau penerima sementara tidak bisa menerima (soft bounce).Coba lagi nanti; alamat di-suppress 24 jam (3× → permanen).
delivery_temporarily_unavailablePenundaan sementara (greylist, server sibuk, timeout).Respons bisa menyertakan retryable: true. Coba lagi nanti.
rate_limited_by_providerProvider membatasi pengirim (IP/domain/reputasi), bukan alamat penerima.Perlambat volume; perbaiki auth/warmup. Jangan hapus alamat dari list.
blocked_by_providerIP/domain masuk block list provider (mis. Outlook S3150).Perbaiki reputasi; minta delist jika perlu. Alamat penerima tetap valid.
policy_rejectedAuth/policy (SPF, DMARC, konten, Outlook SC-/DY-/OU-).Perbaiki DNS auth atau konten.
message_rejectedUkuran, format, atau syntax pesan ditolak.Perkecil lampiran atau perbaiki format.

rate_limited (2 req/detik per domain) berbeda dari rate_limited_by_provider (batas Gmail/Outlook/Yahoo).

Lihat Send API untuk tiga jenis email, dan Mengirim pesan jika kiriman tertolak atau tertahan.

Terkait