Skip to content

Node.js SDK

View as Markdown

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 {
const result = await syvel.check('[email protected]');
// 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...
});

Resources

Last updated: