Skip to content

Add addresses

POST /v1/bulk-verifications/{jobId}/items

Send the list in chunks of 1–500 rows per call. Each row carries the address and a row_index — its position in your source list, starting at 0. The index is what makes uploads safe to retry: re-sending a (row_index, email) pair you already sent is ignored, so a chunk that timed out can simply be sent again.

Terminal window
curl -X POST https://api.tryverifyemail.com/v1/bulk-verifications/$JOB_ID/items \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"items":[
{"row_index":0,"email":"a@example.com"},
{"row_index":1,"email":"b@example.com"}
]}'

Returns 200 with what happened to the chunk:

{ "received": 2, "inserted": 2, "duplicates_ignored": 0 }

duplicates_ignored counts rows that matched a pair already stored. Two things make the call fail instead, both with a 409:

  • A row_index reused with a different address. Nothing from the chunk is written; the body lists the offending rows. Fix them and resend.

    {
    "error": "row_conflict",
    "conflicts": [{ "row_index": 0, "email": "other@example.com" }]
    }
  • The job is already committed. { "error": "input_sealed" } — create a new job for the extra rows.