Integration Overview
Deep Linking
Partners can redirect users to Proof with pre-populated data to streamline the verification flow. When the user completes verification, they are redirected back to your application.Deep Link Parameters
| Parameter | Required | Description |
|---|---|---|
wallet | Yes | The Solana wallet address to link |
signature | Yes | Pre-signed ownership proof (base58 encoded) |
timestamp | Yes | Unix timestamp in milliseconds when signature was created |
redirect_uri | Yes | URL to redirect the user after verification |
email | No | Email address to prefill in the authentication step |
projectId | No | Your project identifier for tracking |
Redirect URIs must use
https: or chrome-extension: schemes. Custom URL schemes (e.g. myapp://) are not supported and the redirect will not fire. Native mobile apps should use universal links (iOS) or app links (Android), which use https: URLs that deep link into your app.Constructing a Deep Link
Build the deep link URL with query parameters:Generating the Signature
The user must sign a message proving wallet ownership. The message format is:{timestamp} is the Unix timestamp in milliseconds (13 digits).
Example: Creating a Deep Link
Handling the Return
When the user completes verification (or cancels), they are redirected to yourredirect_uri. Query the verification API to confirm their status.
When verification succeeds, Proof also sends an “Identity Verification Complete” email to the user.
Verification API
The verification API lets you check if a wallet address is linked to a verified identity. This is a public endpoint that does not require authentication.Endpoint
Parameters
| Parameter | Location | Type | Description |
|---|---|---|---|
address | path | string | Solana wallet address (32-44 characters) |
Response
| Field | Type | Description |
|---|---|---|
verified | boolean | Whether the wallet is linked to a verified identity |
Example: Checking Verification Status
Example: Gating Features
Integration Flow
Here’s a complete integration flow combining deep linking and the verification API:Best Practices
Cache Verification Status
Verification status is stable once a user is verified. Consider caching the result to reduce API calls:Getting Prediction Market Order Quotes for Unverified Users
To show order quotes to unverified users, omituserPublicKey from /order requests.
Handle Edge Cases
- Signature expiration: Generate fresh signatures close to redirect time
- User cancellation: Handle cases where users return without completing verification
- Network errors: Implement retry logic for API calls
Security Considerations
- Always verify wallet ownership server-side when performing sensitive actions
- Do not trust client-side verification status alone for security-critical operations
- Use HTTPS for all API calls and redirects
API Reference
For complete API documentation, see the Proof API Reference:- Verify Address — Check if a wallet is verified
Need Help?
Join Our Discord
Connect with other developers, get help, and stay updated on the latest
DFlow developments.
Dev Notifications
Join the DFlow Dev Notifications Telegram group to stay in the loop on
new features and other announcements.