Using an AI coding agent? The
dflow-proof-kyc skill teaches Claude Code to build a Proof integration end-to-end. See Agent Skills.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
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
Response
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:Showing Order Quotes to 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