Available
Email OTP Verification
Classic one-time password verification via email. User receives a 6-character code and enters it in your app.
Proof Holdingsproof.holdings · verification api
AttestationNº 2026-0051
subject[email protected]
channelEmail · one-time code
challengeK7Q 2M9 — the code we sent was entered
received14:07:22 UTC
verdictControl proventhe code was read where it landed
Mintedph_ctl_5e1a…b73 · ES256
How It Works
Familiar verification flow users already know
§ 01
Send OTP Email
Call our API with the email address. We send an email with a 6-character code.
§ 02
User Enters Code
User receives the email and enters the OTP code in your application.
§ 03
Instant Verification
Submit the code to our API. We verify and return a cryptographic proof token.
API Integration
Simple OTP verification API
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": "email",
"channel": "email",
"identifier": "[email protected]"
}'2. Verify the Proof Token
# After user enters the OTP code from their email
curl -X POST https://api.proof.holdings/api/v1/verifications/VERIFICATION_ID/submit \
-H "Authorization: Bearer pk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "847293"
}'Response Example
{
"id": "507f1f77bcf86cd799439011",
"type": "email",
"channel": "email",
"status": "verified",
"identifier": "[email protected]",
"verified_at": "2026-03-15T10:30:00Z",
"proof": {
"token": "eyJhbGciOiJFUzI1NiIs...",
"expires_at": "2027-03-15T10:30:00Z"
}
}