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).