Submit File
POST/v1/detect/file
Upload a TXT or CSV file with one phone number or email address per line, max 50 MB. The file is queued as a task; poll it exactly like an array submission.
Returns HTTP 202 Accepted.
Parameters
Section titled “Parameters”Content-Type: multipart/form-data
| Field | Type | Required | Description |
|---|---|---|---|
product | string | Yes | Product slug — see the bulk product list. |
country | string | Required for phone | ISO 3166-1 alpha-2 country code — the full list is on the Country Codes page. Omit it for email products. |
file | file | Yes | TXT or CSV file, one number or address per line, max 50 MB. |
The same volume rules apply as for an array submission: at least the selected product’s minimum, at most 2,000,000 rows. A file whose rows all fail to parse is rejected as empty_input.
Response Example
Section titled “Response Example”{ "mode": "async", "task_id": "qH5rZ7Lp3Wm9", "idempotent_replay": false, "message": "File queued (10000 numbers). Poll GET /api/v1/tasks/qH5rZ7Lp3Wm9 for progress.", "recovery_pending": false, "summary": { "total": 10000, "cost_deducted": 1.000000 }}The response body is identical in shape to an array submission — only the message differs, because the row count comes from the file rather than from a JSON array.