Developer

API verifikasi email yang langsung berfungsi

Verifikasi satu alamat secara real-time, atau kirim seluruh daftar sebagai batch. Semua permintaan menggunakan HTTPS dan mengembalikan JSON. Buat kunci API di dasbor Anda pada menu Kunci API.

  • REST dan JSON
  • Callback batch
  • Kredit yang sama dengan dasbor
Halaman kunci API di BounceBell dengan kunci aktif dan formulir untuk membuat kunci baru

Autentikasi

Kirim kunci API Anda sebagai bearer token di header Authorization pada setiap permintaan. Simpan kunci di server Anda. Jangan pernah menaruhnya di kode browser atau aplikasi seluler.

Authorization: Bearer YOUR_API_KEY

URL dasar untuk setiap endpoint adalah https://bouncebell.com/api/v1.

Verifikasi satu alamat

GET https://bouncebell.com/api/v1/verify

ParameterWajibDeskripsi
emailYaAlamat yang akan dicek. Lakukan URL-encode.
timeoutTidakDetik untuk menunggu server email, dari 3 hingga 30. Default 10. Jika waktu habis, statusnya unknown dan tidak ada kredit yang terpakai.

Contoh

curl "https://bouncebell.com/api/v1/verify?email=rini.elizabeth%40acme-foods.example" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "rini.elizabeth@acme-foods.example",
  "status": "valid",
  "reason": "mailbox_exists",
  "domain": "acme-foods.example",
  "mx_record": "mx1.acme-foods.example",
  "disposable": false,
  "role": false,
  "free_provider": false,
  "catch_all": false,
  "did_you_mean": null,
  "checked_at": "2026-10-30T09:30:12Z",
  "credits_used": 1
}

Field hasil

FieldJenisDeskripsi
emailstringAlamat seperti yang Anda kirim.
statusstringHasil akhirnya. Lihat status.
reasonstringAlasan kami mencapai hasil tersebut, misalnya mailbox_not_found atau no_mail_server.
domainstringBagian domain, dalam huruf kecil.
mx_recordstring or nullServer email dengan prioritas tertinggi.
disposablebooleanTrue jika domain adalah layanan kotak masuk sementara.
rolebooleanTrue untuk kotak masuk bersama seperti info@ atau support@.
free_providerbooleanTrue untuk penyedia kotak surat gratis seperti Gmail.
catch_allbooleanTrue jika domain menerima setiap alamat.
did_you_meanstring or nullAlamat yang dikoreksi jika domain tampak salah ketik.
checked_atstringWaktu pengecekan dijalankan, dalam ISO 8601 UTC.
credits_usedinteger1, atau 0 jika statusnya unknown.

Status

StatusArtiTindakan yang disarankan
validKotak surat ada dan menerima email.Kirim
invalidAlamat, domain, atau kotak surat tidak ada.Hapus
disposableLayanan kotak masuk sementara.Hapus
catch_allDomain menerima semua alamat, sehingga kotak surat tidak dapat dikonfirmasi.Tinjau
roleKotak masuk bersama yang ada.Tinjau
unknownServer email tidak memberikan jawaban tepat waktu. Tidak dikenai biaya.Coba lagi nanti

Batch

Kirim hingga 100.000 alamat dalam satu permintaan. Batch berjalan di latar belakang; cek statusnya secara berkala atau berikan callback_url dan kami akan memanggilnya saat batch selesai.

Buat batch

POST https://bouncebell.com/api/v1/batches

curl -X POST "https://bouncebell.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "October import", "emails": ["a@example.com", "b@example.com"],
       "callback_url": "https://yourapp.example/hooks/bouncebell"}'
{ "id": "bat_8f2k1q3m9x7w4p", "status": "queued", "total": 2, "done": 0 }

Kredit untuk setiap alamat unik ditahan saat batch dibuat, dan hasil tidak diketahui dikembalikan saat batch selesai. Callback menerima POST dengan {"event": "batch.completed", "batch_id": "...", "status": "done", "counts": {...}}. URL callback harus menggunakan HTTPS.

Cek progres

GET https://bouncebell.com/api/v1/batches/{id}

{ "id": "bat_8f2k1q3m9x7w4p", "status": "running", "total": 2, "done": 1 }

Statusnya queued, running, atau done. Saat statusnya done, respons juga berisi counts per status.

Unduh hasil

GET https://bouncebell.com/api/v1/batches/{id}/results

Mengembalikan JSON secara default. Tambahkan ?format=csv untuk file CSV. Setiap baris memiliki field yang sama dengan cek tunggal.

Kredit

GET https://bouncebell.com/api/v1/credits

{ "credits_remaining": 33420 }

Error dan batas

Error mengembalikan body JSON dengan kode error dan message yang mudah dibaca.

Kode HTTPErrorYang harus dilakukan
400bad_requestParameter tidak ada atau salah. Baca pesannya.
401invalid_keyPastikan kunci sudah benar dan belum dicabut.
402no_creditsBeli kredit tambahan.
403email_not_confirmedBuka tautan konfirmasi yang kami kirim lewat email saat Anda mendaftar.
404not_foundBatch tidak ada atau sudah dihapus setelah 30 hari.
429rate_limitedPerlambat. Tunggu selama jumlah detik di header Retry-After.
500server_errorCoba lagi setelah jeda singkat. Jika terus berlanjut, hubungi dukungan.

Cek tunggal dibatasi 20 permintaan per detik per kunci. Hubungi kami jika Anda membutuhkan lebih.