Verify what matters.
Phone, email and IP verification in one API and one file, at published prices, with the paper your procurement asks for. When you need a verdict, one call scores the three together.
Sandbox keys are free. Evaluating for your company? Ask for a $10 credit from your dashboard.
- Line type
- mobile
- Original carrier
- T-Mobile USA, Inc.
- E.164
- +14155552671
- Local format
- (415) 555-2671
- Time zone
- America/Los_Angeles
- Running since
- 2019
- Verification APIs, built and run by our team
- Paying customers
- 1,900+
- On our team’s APIs, since 2019
- Checks a month
- 40M+
- On our team’s APIs, October 2026
- Phone coverage
- 244
- Countries and territories
- Hosting
- European Union
- Belgium, on Google Cloud
Send what you know. Get back what matters.
- 1Send a phone, an email, an IP, or all threeWhatever you collect at sign-up, login or checkout.
- 2We check every source in parallelThe numbering plan and line type, the mailbox and its domain, the network behind the address.
- 3You get the facts, and a verdict when you ask for oneEach signal answers for itself. Ask for a score and the three are weighed together: 0 to 100, allow, review or deny, every point explained in plain words.
The sample is the sandbox’s real answer. Run it with a pt_test_ key and you get exactly this, free. With a live key the same call costs $0.0070.
curl https://api.prooftell.com/v1/assess \ -H "Authorization: Bearer $PROOFTELL_KEY" \ -H "Content-Type: application/json" \ -d '{ "phone": "+15005550002", "email": "disposable@sandbox.prooftell.com", "ip": "203.0.113.66", "reference": "signup-48213" }'
const res = await fetch("https://api.prooftell.com/v1/assess", { method: "POST", headers: { "Authorization": `Bearer ${process.env.PROOFTELL_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ phone: "+15005550002", email: "disposable@sandbox.prooftell.com", ip: "203.0.113.66", reference: "signup-48213", }), }) const { score, verdict, reasons } = await res.json()
import os, requests
res = requests.post(
"https://api.prooftell.com/v1/assess",
headers={"Authorization": f"Bearer {os.environ['PROOFTELL_KEY']}"},
json={
"phone": "+15005550002",
"email": "disposable@sandbox.prooftell.com",
"ip": "203.0.113.66",
"reference": "signup-48213",
},
)
result = res.json()
print(result["verdict"], result["score"]){
"id": "asm_uevezsnajjrt3t2r",
"mode": "test",
"reference": "signup-48213",
"score": 95,
"verdict": "deny",
"reasons": [
{ "code": "phone_voip", "points": 20,
"message": "The number is a VoIP line, easy to obtain anonymously." },
{ "code": "email_disposable", "points": 35,
"message": "The email address uses a disposable provider." },
{ "code": "ip_tor", "points": 40,
"message": "The IP address is a Tor exit node." }
],
"signals": {
"phone": { "status": "ok", "cost": "0.000000", "result": { … } },
"email": { "status": "ok", "cost": "0.000000", "result": { … } },
"ip": { "status": "ok", "cost": "0.000000", "result": { … } }
},
"ruleset": "2026-10-07",
"cost": "0.000000",
"currency": "USD",
"createdAt": "2026-10-02T08:27:43Z"
}From a valid number to a live one.
Basic and line type read what the number says about itself. Each level above asks the network for more, and includes the ones before it.
basicValid or not, its formats and its country.
line_typeThe line type and the carrier it was issued to.
current_carrierThe carrier it is on today, and whether it was ported.
line_statusWhether it is on the network right now and, when not, why.
Send level with the number, or run a whole file at the level you pick. Each price is the whole call, and each part is charged when it returns a result: where a level doesn’t reach a number’s network it costs nothing, and the rest still answers.
Every signal you need. One API key, one balance.
Each signal on its own, the three scored together, or a whole file. By API, or from the dashboard.
Phone intelligence
Validity, line type, carrier and country for any number.
Email verification
Whether the mailbox exists, without sending a message.
IP intelligence
Tor, VPN and datacenter detection, location and network.
Risk score
One call, three signals: a 0 to 100 score, a verdict and the reasons.
Bulk verification
Upload a CSV or Excel file, download it back with every row checked.
Pay in dollars
One balance for every check, priced in dollars. No credit packs, no plans, nothing that expires.
Every fraud has a tell.
Ask for a verdict and the three signals are weighed together: 0 to 100, allow, review or deny, and every point a sentence your team can repeat to a customer or an auditor. No black box.
VoIP or virtual number
Cheap to create by the thousand and easy to obtain anonymously. The favorite of fake-account farms.
A number that cannot exist
Wrong length, unassigned prefix, a typo or an invention. It fails the numbering plan of its own country.
Disposable inbox
A mailbox that expires in ten minutes rarely belongs to a customer who plans to stay.
A mailbox nobody owns
The mail server says there is no such user. Real customers give addresses that receive mail.
Hidden network
Tor exits, VPN providers and datacenter ranges, where real shoppers rarely come from.
Two countries at once
A number from one country, a connection from another. Not damning alone; it weighs in with the rest.
| phone | pt_phone_line_type | pt_email_result | |
|---|---|---|---|
| +14155550132 | dana@northwind.example | mobile | deliverable |
| +442079460958 | sales@contoso.example | fixed_line | catch_all |
| +15005550002 | x9@tempbox.example | voip | disposable |
| +33639980123 | lee@fabrikam.example | mobile | undeliverable |
A whole file, checked the same way.
Upload a CSV or an Excel file, pick the columns, and download it back with the results added to every row, in the order you sent them. The phone column runs at the level you pick. Duplicates run once. Files are deleted 30 days after upload.
Bulk verificationPay for what you check. In dollars.
One public rate card for everyone. You are charged per signal that returns a result, from a balance that never expires.
$0.0025 per number.
$0.0040 per address.
$0.0005 per address.
Phone, email and IP in one call, scored. $0.0070 per check.
The price of a check falls with your month's volume, down to 20 % of the list, automatically. The phone levels are on the rate card too. Enterprise contracts are invoiced.
See the rate cardBuilt to keep little. Written to pass a review.
Where your data goes, who touches it and when it is deleted are published, down to the sub-processor list and the things we do not have.
Hosted in the EU
The API, the database and file storage run in Belgium, on Google Cloud.
Retention you control
Assessments are kept 90 days by default. Choose any period up to a year, or zero, and nothing is stored.
Inputs stay out of logs
Phone numbers, addresses and IPs never reach our logs or error messages: on /v1 they travel in request bodies.
A DPA you can file today
Pre-signed, GDPR Article 28, applies to every account. No call, no countersignature.
One check, at every door.
Account opening
Check every sign-up before it costs you a welcome bonus, a free trial or a support ticket.
List hygiene
Upload the file you already have and get it back with every phone, address and IP checked. Dead numbers out before the campaign.
Lead capture
A real mobile line and a mailbox that exists are stronger buying signals than a form that was merely filled in.
Checkout
Send the order’s phone, email and IP. Let the clean ones through, hold the rest for a second look.
Questions, answered plainly.
What does ProofTell check?
Is ProofTell a fraud tool?
What are the phone levels?
How is the score calculated?
What happens when one of the signals is down?
Do you contact the person I am checking?
Can I use a single signal on its own?
/v1/phone, /v1/email and /v1/ip each sell one signal at its own rate, and file uploads run them over a whole list. /v1/assess is the one endpoint that scores.How much does it cost?
Is there a free trial?
Where is my data processed, and for how long is it kept?
Do you sign a DPA, or our own contract?
Integrate today. Bring procurement when you’re ready.
Create an account, take a sandbox key, make your first call in minutes.