Phone Verification
User-initiated verification that's secure, global, and affordable. With Reverse OTP, users send messages TO us via Telegram, WhatsApp, or SMS.
Why Reverse OTP?
Traditional SMS verification sends codes TO users. We flip it - users send codes TO us. This simple change transforms cost, reliability, and security.
Traditional OTP
You send SMS → User receives code → User enters code → You verify
$0.05–$0.40 per SMS
Outbound SMS costs vary wildly by country. International verification gets expensive fast.
10-30% Delivery Failure
Carrier filtering, network issues, and regional blocks mean codes never arrive.
SIM-Swap Vulnerable
Attackers convince carriers to transfer numbers. They receive your OTP, not you.
Regional Complications
Different carriers, regulations, and formats per country. A global nightmare.
Reverse OTP
User sends code to us → We verify instantly → You get proof token
90%+ Cost Reduction
Inbound messages cost a fraction of outbound SMS. Predictable pricing.
No Carrier Filtering
User sends the message. No outbound SMS blocked by carrier spam filters.
User-Initiated Security
User starts the verification. Harder to intercept what you didn't initiate.
Instant Verification
No waiting for SMS delivery. Message sent = verified within seconds.
Users verify via their preferred messaging app
How It Works
User sends a message to prove they control the phone number
Create Verification
Call our API with the phone number to verify. We generate a unique challenge code and verification link.
User Sends Message
User sends the challenge code to our number via their preferred channel (WhatsApp, Telegram, or SMS).
Proof Generated
We verify the message came from the claimed number and return a cryptographic proof token.
Choose Your Channel
Multiple channels for maximum reach and user preference
API Integration
Integrate phone verification in minutes
1. Create Verification Request
curl -X POST https://api.proof.holdings/api/v1/verifications \
-H "Authorization: Bearer pk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "phone",
"channel": "telegram",
"identifier": "+37069199199"
}'2. Verify the Proof Token
# Poll for verification status
curl https://api.proof.holdings/api/v1/verifications/VERIFICATION_ID \
-H "Authorization: Bearer pk_live_YOUR_API_KEY"Response Example
{
"id": "507f1f77bcf86cd799439011",
"type": "phone",
"channel": "telegram",
"status": "verified",
"identifier": "+37069199199",
"verified_at": "2026-03-15T10:51:30Z",
"verified_data": {
"telegram_user_id": "123456789"
},
"proof": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": "2026-04-14T10:51:30Z"
}
}