Bulk uploads

CSV and Excel jobs up to 50,000 rows: upload, poll, filter and export results.

Bulk jobs verify a whole file asynchronously. The flow: upload, poll status, fetch results.

1. Upload

curl -X POST "https://api.kavik.email/api/v1/verify/async/upload" \
  -H "X-API-Key: eva_your_key" \
  -F "file=@list.csv"

CSV and Excel (.xlsx) uploads are accepted. Row caps by plan: Free with credits 10,000 (and capped at balance), Starter 10,000, Pro 20,000, Business 50,000, Enterprise 2,000,000. A per-job webhook_url can be passed at upload to be called when the job completes.

2. Poll status

curl "https://api.kavik.email/api/v1/verify/async/{id}" \
  -H "X-API-Key: eva_your_key"

A job that sits at 100% while still processing is running its greylist retry pass; that is normal, and the retries happen inside the job.

3. Fetch results

curl "https://api.kavik.email/api/v1/verify/async/{id}/result" \
  -H "X-API-Key: eva_your_key"

The endpoint returns the full result set for the job. Two optional parameters shape it: ?risk=safe,risky,invalid,unknown filters rows by verdict, and ?format=csv downloads the set as CSV instead of JSON. Exports to CSV or Excel are also available from the dashboard. Unknowns are never billed and can be re-run with POST /api/v1/verify/async/{id}/rerun-unknowns after a 30-minute cooldown.

Job control

pause, resume, and cancel endpoints exist at /api/v1/verify/async/{id}/pause (and .../resume, .../cancel).