API Docs
NumDetect API: submit phone lists and download task results
Use one API key to submit a phone-list task, check its status, and download the result when processing finishes.
API endpointPOST
/api/v1/bulk-tasksX-API-Key headercode · msg · data
Last updated: August 31, 2026phone-list taskstask status + result URL
API at a glanceSubmit a phone-list task with your API key, poll its status, and download the completed result. The server quote is returned before processing starts.
Quickstart
- 1.Create an API key in Settings.
- 2.Call GET /api/v1/balance to check the current balance.
- 3.Upload a number file to /api/v1/bulk-tasks, then poll the task by ID and download the result when ready.
Authentication
Use an API key created in Settings and send it with every request.
X-API-Key: sk_your_api_keyKeep your API key secret
Always call this endpoint from your server. Anyone holding the key can spend your balance.Concurrency, timeouts, and retry behavior
Bulk task submissions are accepted before work starts. Use the returned task status to decide whether to keep polling or handle a failure.
- 5 requests in flight per userA task submission uses one request slot. If the account has no slot available, the API returns 42901 with Retry-After; wait and submit the file again.
- Poll instead of waitingSubmitting a task returns immediately. Poll its status no more than once every 30 seconds while it is processing.
- Task size follows the productEach product has its own minimum and maximum file size, shown in the task section.
Error codes
40000Unsupported service type or conflicting request fields
40001Invalid JSON body
40002Invalid phone number
40100Missing or invalid API key
40200Insufficient balance
42200The submitted task could not be accepted in its current form
42900A usage quota is exhausted, or there are too many unfinished orders
42901All request slots are occupied; submit after an in-flight request finishes. The rejected request is not charged and carries a Retry-After header
50303The service is at capacity right now; not charged. Wait for the Retry-After seconds and resubmit the same request
50400The request did not finish within its timeout and is not charged; retry it
50300Validation service maintenance
Asynchronous bulk tasks
Submit a .txt or .csv phone list and get a task id straight away. Check the task by that id; once it succeeds, the response carries the result file download link.
number_validation_batchPhone Number Validation1,000–100,000 phone numbers per task$0.001 per phone numbernumber_activity_batchNumber Activity1,000–100,000 phone numbers per task$0.003 per phone numbernumber_high_value_batchHigh-Value Users1,000–100,000 phone numbers per task$0.004 per phone numbernumber_ecommerce_batchE-commerce Active1,000–100,000 phone numbers per task$0.003 per phone numberglobal_carrier_batchGlobal carrier lookup1,000–100,000 phone numbers per task$0.001 per phone number
1. Submit a file
curl -X POST "https://numdetect.com/api/v1/bulk-tasks" \
-H "X-API-Key: sk_your_api_key" \
-F service_type=number_validation_batch \
-F country=US \
-F file=@numbers.txtResponse: task created (status processing)
{
"code": 0,
"msg": "ok",
"data": {
"id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
"product": "number_validation_batch",
"status": "processing",
"country": "US",
"total": 1000,
"created_at": "2026-09-08T09:30:00Z"
}
}2. Check the task
curl "https://numdetect.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
-H "X-API-Key: sk_your_api_key"Response: task finished (result_url present once it succeeds)
{
"code": 0,
"msg": "ok",
"data": {
"id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
"product": "number_validation_batch",
"status": "success",
"country": "US",
"total": 1000,
"success_cnt": 990,
"failure_cnt": 10,
"result_url": "https://…/result.zip",
"created_at": "2026-09-08T09:30:00Z"
}
}- One phone number per line.Upload a .txt or .csv with one phone number per line. Use the product code that matches the enrichment you need; the submitted file must meet that product's size limits.
- No per-phone number progress.status is processing, success or failed. Large lists take a while; do not poll more often than once every 30 seconds.
- Billing.The full file is reserved on submit. When the task finishes you are charged only for the phone numbers that were actually checked and the rest is refunded. A failed task is refunded in full.
- Result files expire.The download link is generated on demand and points at a time-limited file. Download the result soon after the task finishes.