Skip to main content

Async Validation Jobs

Use asynchronous validation jobs for larger email lists that should be processed in the background. Jobs are Product Control Plane-owned public API workflows: the API authenticates with X-API-Key, reserves credits for unique submitted emails, validates asynchronously, finalizes charges for High-Value Validations, and refunds unused reserved credits.

Endpoints

Required Scope

Scoped API keys need email:validate:bulk. Legacy unrestricted keys retain compatible access until rotated.

Create Job

Use this JSON endpoint for scripts and SDKs that already have an array of emails. It accepts up to 500,000 submitted emails; valid duplicates are deduplicated before credit reservation.
cURL

Signed CSV Upload

Use this flow for large CSV files so the file body goes directly to Storage instead of through the API proxy.
cURL
Upload the CSV file to the returned upload_url, then start processing:
cURL

List Jobs

cURL

Get Job Status

cURL
Status responses include job state, progress, summary counts, credits reserved, credits consumed, credits refunded, effective credits per High-Value Validation, and download handoff metadata without exposing internal validation batch table shape.

Get Download URL

cURL
Agents and scripts should use mode=url and follow the signed URL instead of pulling raw CSV content through MCP.

Credit Behavior

  • Credits are reserved up front for unique submitted emails.
  • Only High-Value Validations are charged when processing completes.
  • Role-based, catch-all, invalid, risky, and unknown results are refunded from the reservation.
  • Failed-job recovery should refund unused reservations idempotently.
  • Use results.high_value, results.credits_consumed, and results.credits_per_high_value_validation to measure cost per usable lead instead of raw cost per lookup.