Skip to content

Quick Start

View as Markdown

Create your account

  1. Go to app.syvel.io/register
  2. Enter your email address and choose a password
  3. Your Free account is immediately active (100 req/month)

Create your first API key

In the dashboard, under the API Keys section:

  1. Click New key
  2. Give it a name (e.g. “Production”)
  3. Copy the displayed key — it will not be shown again

Your key looks like: sv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

First API call

Terminal window
curl "https://api.syvel.io/v1/check/[email protected]" \
-H "Authorization: Bearer sv_your_key"

Response:

{
"email": "a9****[email protected]",
"is_risky": true,
"risk_score": 100,
"reason": "disposable",
"is_free_provider": false,
"is_corporate_email": false,
"did_you_mean": null,
"is_alias_email": false,
"mx_provider_label": "Yopmail",
"deliverability_score": 0
}

Key fields

FieldTypeDescription
is_riskybooleanThe primary blocking signal. Use this to accept or reject.
risk_scoreinteger0–100. For custom thresholds (default: 65).
reasonstringsafe · disposable · undeliverable · role_account
did_you_meanstring | nullTypo correction suggestion.
deliverability_scoreinteger0–100. Probability of actual delivery.

Integrating into a form

async function validateEmail(email) {
try {
const res = await fetch(
`https://api.syvel.io/v1/check/${encodeURIComponent(email)}`,
{
headers: { 'Authorization': 'Bearer sv_your_key' },
signal: AbortSignal.timeout(3000), // 3 s max — never hang
}
);
if (!res.ok) return { valid: true }; // quota exceeded, server error → let through
const data = await res.json();
if (data.is_risky) {
return { valid: false, message: "Please use a professional email address." };
}
// Suggest typo correction
if (data.did_you_mean) {
return { valid: true, warning: `Did you mean ${data.did_you_mean}?` };
}
return { valid: true };
} catch {
return { valid: true }; // network error or timeout → fail open
}
}

Next steps

Last updated: