Skip to content
ProofTell
Sign inSign up
Bulk verification

Upload the file. Get it back checked.

CSV or Excel in, the same file out, with the phone, email and IP results added to every row. From the dashboard without a line of code, or through the API.

Upload and analysis are free. You see the price before anything runs.

leads-october.xlsx
48,210 rows · 46,902 unique · phone + email
Verifying
31,400 of 46,902 rows67%
Held on your balance
$187.61
Charged so far
$121.96
Duplicates, free
1,308
Partial result available Download
How it works

Four steps, and the first two are free.

  1. 1

    Upload

    CSV, TSV, a plain list or an Excel file, up to 1 GB. Upload and analysis are free.

  2. 2

    Confirm the columns

    We find the phone, email and IP columns and show you a sample. You choose which signals to run.

  3. 3

    See the price, then run

    The cost of every unique row is held on your balance before the first one runs. Stop whenever you like.

  4. 4

    Download

    Your rows, in your order, with our columns added. As CSV, and as Excel when you uploaded Excel. A partial CSV is there while the file runs.

The details

Built for lists that are not clean yet.

The pipeline carries over what years of running Veriphone’s and Verimail’s bulk jobs in production taught us.

Duplicates run once

A value that appears twice is checked once and charged once. The repeats point to the first row.

pt_duplicate_of

You pay for results only

Rows a source could not judge are free, and whatever was held but not used returns to your balance when the file ends.

hold · charged

Slow mail servers get a second visit

When a mail server asks us to come back later, we do, before the file is finished, instead of writing “unknown”.

pt_email_result

Partial results, any time

Download what is done while the rest runs. Rows not reached yet are marked pending.

GET /v1/files/{id}/download

An email when it is done

Whoever uploaded the file from the dashboard gets an email when it completes, stops or fails. No need to watch a progress bar.

by email

Deleted after 30 days

The upload, the working data and the result are removed 30 days after upload, with a reminder 7 days before. Delete sooner whenever you want.

expires_at
The result file

Your columns, then ours.

Every row you sent comes back in the order you sent it. Our columns start with pt_, so they never collide with yours, and only the signals you ran are added.

Values that a spreadsheet would mistake for a formula are neutralized, so the file is safe to open in Excel.

ColumnWhat it holds
pt_phone_status · pt_email_statusWhether the row got a result, is still pending, was not run, or its source was unavailable.
pt_phone_validWhether the number is valid.
pt_phone_e164The number in E.164 format.
pt_phone_typeLine type: mobile, fixed_line, voip…
pt_phone_carrierThe carrier the number was issued to.
pt_phone_countryTwo-letter country code of the number.
pt_email_verdictdeliverable, undeliverable, risky or unknown.
pt_email_resultThe detailed result, such as catch_all or disposable.
pt_email_reasonWhy, in one code, such as mailbox_rejected.
pt_ip_countryCountry of the IP address.
pt_ip_cityCity, where known.
pt_ip_asn · pt_ip_as_orgThe network and the organization behind it.
pt_ip_tor · pt_ip_vpn · pt_ip_datacenterThe three anonymity flags.
pt_duplicate_ofThe row this one repeats, when it is a duplicate.
For developers

The same pipeline, from your own code.

/v1/files does everything the dashboard does. Small files go up in one request; larger ones use a signed upload URL that takes the bytes straight to storage.

Files need a pt_live_ key.

Read the API reference
cURL
# 1. Upload. Direct for files up to 32 MB; larger ones use a signed upload URL.
curl https://api.prooftell.com/v1/files \
  -H "Authorization: Bearer $PROOFTELL_KEY" \
  -F "file=@leads.csv"

# 2. Choose the signals and run. The cost of every unique row is held on your balance.
curl https://api.prooftell.com/v1/files/$FILE_ID/verify \
  -H "Authorization: Bearer $PROOFTELL_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "signals": ["phone_static", "email"] }'

# 3. Follow progress, then ask for the 15-minute link to the result.
curl https://api.prooftell.com/v1/files/$FILE_ID \
  -H "Authorization: Bearer $PROOFTELL_KEY"
curl https://api.prooftell.com/v1/files/$FILE_ID/download \
  -H "Authorization: Bearer $PROOFTELL_KEY"
What it costs

The API’s rates, row by row.

A file costs its unique rows times the signals you run, at the public rate card. No file fee, no minimum volume, and nothing for the rows that got no result.

See the rate card
SignalPer 1,000 rowsPer 100,000 rows
Phone intelligence$1.00$100.00
Email verification$3.00$300.00
IP intelligence$0.50$50.00
FAQ

About files.

Which file formats can I upload?
CSV, TSV, plain text with one value per line, and Excel (.xlsx). The delimiter, the encoding and the header row are detected, and you can correct the column mapping before you start. Results come back as CSV, and also as Excel when the upload was an Excel file.
How large can a file be?
Up to 1 GB. There is no row limit of its own: the balance needed to run the file is the practical ceiling, and you see that amount before anything is charged.
How is a file charged?
Per row and per signal, at the same rates as the API. Before the file starts, the cost of every unique row is held on your balance; rows are charged against that hold as their results arrive; what was not used is released at the end. Duplicates, rows a source could not judge and rows never reached because you stopped the file are free.
Does a file give each row a risk score?
Not yet. A file returns each signal’s own result for every row: the phone check, the email check, the IP lookup. The combined score and verdict are available on the API, through /v1/assess.
What happens to the other columns in my file?
They come back untouched. We read only the columns you map as phone, email or IP; the rest pass through to the result file in the same order.
Can I run files without the dashboard?
Yes. /v1/files does everything the dashboard does: create, upload, start, follow progress, stop, download, delete. Files need a live key; the sandbox does not run them.

Bring the list you already have.

Create an account, take a sandbox key, make your first call in minutes.

staging