1. Environment
VERIFAI_BASE_URL=https://verifai.iqtbots.ai VERIFAI_API_KEY=vf_test_your_secret_here VERIFAI_COLLECTION_ID=your-collection-uuid
Express (or any framework) with fetch and FormData. OpenAPI: https://verifai.iqtbots.ai/api/schema/
VERIFAI_BASE_URL=https://verifai.iqtbots.ai VERIFAI_API_KEY=vf_test_your_secret_here VERIFAI_COLLECTION_ID=your-collection-uuid
// verifai.js
const BASE = process.env.VERIFAI_BASE_URL.replace(/\/$/, '');
const API_KEY = process.env.VERIFAI_API_KEY;
const COLLECTION_ID = process.env.VERIFAI_COLLECTION_ID;
async function verifaiRequest(path, formData) {
const res = await fetch(`${BASE}${path}`, {
method: 'POST',
headers: { Authorization: `Bearer ${API_KEY}` },
body: formData,
});
return res.json();
}
export async function enrollPerson({ externalId, buffer, filename, displayName }) {
const form = new FormData();
form.append('external_id', externalId);
if (displayName) form.append('display_name', displayName);
form.append('image', new Blob([buffer]), filename || 'face.jpg');
return verifaiRequest(`/api/v1/collections/${COLLECTION_ID}/persons/`, form);
}
export async function verifyPerson({ externalId, buffer, filename, threshold = 0.4 }) {
const form = new FormData();
form.append('collection_id', COLLECTION_ID);
form.append('external_id', externalId);
form.append('threshold', String(threshold));
form.append('image', new Blob([buffer]), filename || 'probe.jpg');
return verifaiRequest('/api/v1/verify/', form);
}
// Express + multer for file upload
import multer from 'multer';
import { enrollPerson, verifyPerson } from './verifai.js';
const upload = multer({ storage: multer.memoryStorage() });
app.post('/api/face/enroll', upload.single('image'), async (req, res) => {
const result = await enrollPerson({
externalId: String(req.user.id),
buffer: req.file.buffer,
filename: req.file.originalname,
displayName: req.user.name,
});
res.status(result.success ? 200 : 422).json(result);
});
app.post('/api/face/verify', upload.single('image'), async (req, res) => {
const result = await verifyPerson({
externalId: String(req.user.id),
buffer: req.file.buffer,
filename: req.file.originalname,
});
if (result.success && result.data?.matched) {
return res.json({ ok: true, similarity: result.data.similarity });
}
res.status(401).json(result);
});