Bulk Processing
Process thousands of email addresses or domains in a single request. Upload a CSV file and download the classified results when processing completes.
How it works
- Upload a CSV file containing emails or domains (one per row)
- EmailKind processes each item asynchronously in the background
- Check the job status via the API or dashboard
- Download the results as a CSV when complete
Upload a bulk job
POST /v1/bulk
Content-Type: multipart/form-data
curl -X POST -H "Authorization: Bearer sk_live_YOUR_KEY" \
-F "[email protected]" \
-F "enrich=true" \
"https://emailkind.com/v1/bulk"
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | CSV file (max 2MB, max 10,000 rows) |
| enrich | string | No | Set to true to include company enrichment |
Response (202 Accepted):
{
"success": true,
"request_id": "req_abc123",
"job": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"total_items": 1500,
"created_at": "2025-01-15T10:30:00Z"
}
}
Check job status
GET /v1/bulk/{id}
curl -H "Authorization: Bearer sk_live_YOUR_KEY" \
"https://emailkind.com/v1/bulk/550e8400-e29b-41d4-a716-446655440000"
Response:
{
"success": true,
"request_id": "req_def456",
"job": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing",
"total_items": 1500,
"processed_items": 750,
"enrich": true,
"created_at": "2025-01-15T10:30:00Z",
"started_at": "2025-01-15T10:30:01Z"
}
}
Job statuses:
| Status | Description |
|---|---|
| pending | Job created, waiting to start |
| processing | Currently classifying items |
| completed | All items processed, results ready |
| failed | An error occurred during processing |
Download results
GET /v1/bulk/{id}/results
curl -H "Authorization: Bearer sk_live_YOUR_KEY" \
-o results.csv \
"https://emailkind.com/v1/bulk/550e8400-e29b-41d4-a716-446655440000/results"
Returns a CSV file with the following columns:
| Column | Description |
|---|---|
| input | Original email or domain from the uploaded file |
| domain | Extracted domain |
| provider_id | Provider identifier |
| provider_name | Provider display name |
| provider_type | business, personal, disposable, etc. |
| is_business | true/false |
| is_free | true/false |
| is_disposable | true/false |
| is_education | true/false |
| confidence | Confidence score (0.0 - 1.0) |
| company_name | Company name (if enrich=true) |
| company_source | Enrichment source (if enrich=true) |
List all jobs
GET /v1/bulk
Returns the 20 most recent bulk jobs for your account.
CSV input format
The CSV should contain one email address or domain per row in the first column. A header row is automatically detected and skipped.
Example:
email
[email protected]
[email protected]
[email protected]
Or just domains:
gmail.com
company.com
example.org
Limits
- Maximum 10,000 items per file
- Maximum 2MB file size
- Maximum 3 concurrent jobs per account
- Available on Starter plan and above
- Not available in sandbox mode
Webhooks
If you have webhooks configured, a bulk.completed event is dispatched when a job finishes:
{
"event": "bulk.completed",
"timestamp": "2025-01-15T10:35:00Z",
"data": {
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"total_items": 1500,
"status": "completed"
}
}
Email notification
An email notification is sent to the account owner when a bulk job completes.