Bulk Verification

Verify large volumes of phone numbers by uploading a CSV file through the dashboard or API.

Workflow

The bulk verification process follows this sequence:

  1. Upload a CSV file (/v2/file/upload)
  2. Start verification (/v2/file/verify)
  3. Poll status (/v2/file/status) until processing completes
  4. Download the results (/v2/file/download)

POST /v2/file/upload

Upload a CSV file for bulk verification. Content-Type: multipart/form-data.

Parameters

NameTypeDescription
filefileRequiredCSV file (multipart form field). Max 100 MB, max 1 million rows.
columnnumberRequiredZero-based index of the column containing phone numbers.
firstrownumberRequiredZero-based index of the first data row (use to skip header rows).

Example

cURL
curl -X POST https://api.veriphone.io/v2/file/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@contacts.csv" \
  -F "column=0" \
  -F "firstrow=1"

Response 200

JSON
{
  "result": "success",
  "id": "abc123def456",
  "column": 0,
  "firstrow": 1,
  "lastrow": 5000,
  "record1": "+14158586273",
  "record2": "+442071234567"
}
FieldTypeDescription
idstringUpload ID. Use this for all subsequent file operations.
lastrownumberTotal number of rows detected in the file.
record1stringSample value from the first data row at the specified column.
record2stringSample value from the second data row at the specified column.

Errors

CodeMessage
400File type not supported (must be .csv)
400File is too large (max ~100 MB)
400Too many entries (max 1 million rows)
400Missing column / Missing firstrow

POST /v2/file/verify

Starts a background job to verify all phone numbers in the uploaded file.

Parameters

NameTypeDescription
idstringRequiredUpload ID returned by /v2/file/upload.
default_countrystringOptionalISO 3166-1 alpha-2 country code for numbers without a country prefix.

Example

cURL
curl -X POST "https://api.veriphone.io/v2/file/verify?id=abc123def456" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response 200

JSON
{
  "status": "success",
  "id": "abc123def456"
}

Errors

CodeMessage
402Insufficient credits
403File not ready / Unauthorized file access / Account inactive
404File not found

GET /v2/file/list

Returns all non-deleted uploads for your account, newest first.

Parameters

No additional parameters beyond authentication.

Example

cURL
curl "https://api.veriphone.io/v2/file/list" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response 200

JSON
{
  "status": "success",
  "uploads": [
    {
      "id": "abc123def456",
      "name": "contacts.csv",
      "status": "completed",
      "filesize": 102400,
      "created": "2026-03-15T10:30:00Z",
      "firstrow": 1,
      "lastrow": 5000,
      "column": 0,
      "position": 5000,
      "stage": "done",
      "speed": 120,
      "billable": 4999,
      "syntaxerr": 50,
      "valid": 4500,
      "invalid": 449,
      "record1": "+14158586273",
      "record2": "+442071234567"
    }
  ]
}
FieldTypeDescription
statusstringnew, ready, verifying, completed, or deleted
positionnumberCurrent processing row (tracks progress during verification)
stagestringProcessing stage during verification
speednumberProcessing speed in rows per second
billablenumberRows that counted against credits
syntaxerrnumberRows with phone number syntax errors (not billed)
validnumberValid phone numbers found
invalidnumberInvalid phone numbers found

GET /v2/file/get

Returns details for a single upload. Same fields as a single entry in the /v2/file/list response.

Parameters

NameTypeDescription
idstringRequiredUpload ID.
Note
Returns an empty object if the file does not exist or is not owned by your account.

GET /v2/file/status

Poll the current status of a bulk verification job.

Parameters

NameTypeDescription
idstringRequiredUpload ID.

Response 200

JSON
{
  "id": "abc123def456",
  "status": "completed"
}
Note
Returns an empty status if the file does not exist or is not owned by your account.

GET /v2/file/download

Download the verified results CSV. Returns the verified results if available, otherwise the original uploaded file.

Parameters

NameTypeDescription
idstringRequiredUpload ID.
asstringOptionalFilename for the download (used in Content-Disposition header).

Example

cURL
curl -o results.csv "https://api.veriphone.io/v2/file/download?id=abc123def456&as=results.csv" \
  -H "Authorization: Bearer YOUR_API_KEY"

Returns binary application/octet-stream with Content-Disposition: attachment.

Errors

CodeMessage
404File not found

POST /v2/file/delete

Permanently deletes an uploaded file and its results.

Parameters

NameTypeDescription
idstringRequiredUpload ID.

Response 200

JSON
{
  "status": "success"
}

Errors

CodeMessage
403Access to file is forbidden
404File not found