Your First Verification
Create a proof request and poll for the result. This takes about 5 minutes to set up.
1. Create a Proof Request
import { Tokenive } from '@tokenive/sdk';
const client = new Tokenive({
baseUrl: process.env.TOKENIVE_BASE_URL,
apiKey: process.env.TOKENIVE_API_KEY,
});
const result = await client.proofRequests.create({
requester_entity: 'my-org',
claim_type_id: 'passport',
customer_email: 'holder@example.com',
});
console.log('Request ID:', result.id);
console.log('QR Data:', result.qr_data);
console.log('Expires at:', result.expires_at);
The qr_data object should be encoded as a QR code and displayed to the holder.
2. Poll for Results
const request = await client.proofRequests.get(result.id);
console.log('Status:', request.status);
// 'pending' | 'claimed' | 'submitted' | 'verified' | 'expired'
if (request.status === 'verified') {
console.log('Verified at:', request.verified_at);
}
3. Complete Example
import { Tokenive, TokeniveError } from '@tokenive/sdk';
const client = new Tokenive({
baseUrl: process.env.TOKENIVE_BASE_URL,
apiKey: process.env.TOKENIVE_API_KEY,
});
async function verifyPassport(email: string) {
// Create the request
const { id, qr_data } = await client.proofRequests.create({
requester_entity: 'my-org',
claim_type_id: 'passport',
customer_email: email,
});
// Display QR code to the holder (your UI logic here)
console.log('Show QR code:', JSON.stringify(qr_data));
// Poll for completion
let delay = 1000;
const maxWait = 60_000;
const start = Date.now();
while (Date.now() - start < maxWait) {
const request = await client.proofRequests.get(id);
if (request.status === 'verified') {
return request;
}
if (request.status === 'expired') {
throw new Error('Verification request expired');
}
await new Promise((r) => setTimeout(r, delay));
delay = Math.min(delay * 1.5, 5000);
}
throw new Error('Verification timed out');
}
Next Steps
- Creating verification requests — advanced options
- Error handling — handling failures gracefully