Node.js SDK
Preview
import { Syvel } from '@syvel/node';
const syvel = new Syvel({ apiKey: process.env.SYVEL_API_KEY,});
// In a form submit handler or registration route:try { // result.isRisky — boolean // result.riskScore — 0–100 // result.reason — "safe" | "disposable" | "undeliverable" | "role_account" // result.deliverabilityScore — 0–100
if (result.isRisky) { return res.status(422).json({ error: 'Please use a professional email address.' }); }} catch { // Syvel unavailable — fail open, never block a registration}Using raw fetch today (Node.js 18+)
async function checkEmail(email) { try { const res = await fetch( `https://api.syvel.io/v1/check/${encodeURIComponent(email)}`, { headers: { Authorization: `Bearer ${process.env.SYVEL_API_KEY}` }, signal: AbortSignal.timeout(3000), } );
if (!res.ok) return null; // quota exceeded or server error → fail open
return await res.json(); } catch { return null; // network error or timeout → fail open }}
// In an Express route:app.post('/register', async (req, res) => { const result = await checkEmail(req.body.email);
if (result?.is_risky) { return res.status(422).json({ error: 'Please use a professional email address.' }); }
// continue with registration...});