Universal Fallback
SMS Verification
Universal fallback verification via SMS. Works on any phone that can send a text message. Reverse OTP: the user sends the code to us.
Proof Holdingsproof.holdings · verification api
AttestationNº 2026-0042
subject+370 691 •• •99
channelSMS · inbound
methodReverse OTP
challengeVRF-4821 — sent by the user, not to them
receivedVRF-4821 · 14:02:07 UTC
verdictControl provenno code to intercept or phish
Mintedph_ctl_2f9a…e41 · ES256
How It Works
The option that works on any phone that can send a text
§ 01
Create Request
Call our API with the phone number. We return a challenge code and SMS instructions.
§ 02
User Sends SMS
User sends an SMS with the challenge code to our verification number. Works on any phone that can send a text message.
§ 03
Instant Verification
We verify the SMS sender and return a signed proof token: poll GET /verifications/:id, or wait on its event stream.
API Integration
SMS verification without paying for outgoing texts
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": "sms",
"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": "sms",
"status": "pending",
"identifier": "+37069199199",
"challenge": {
"code": "A7B3X9",
"expires_at": "2026-03-15T11:00:00Z",
"send_to": "+37052140180",
"send_to_formatted": "+37052140180",
"instruction": "Send 'A7B3X9' to +37052140180 on sms"
},
"created_at": "2026-03-15T10:50:00Z"
}