Passer au contenu

SDK Python

Voir en Markdown

Installation

Fenêtre de terminal
pip install syvel

Requires Python 3.10+. Aucune dépendance runtime au-delà de httpx.

Démarrage rapide

import os
from syvel import Syvel
client = Syvel(api_key=os.environ["SYVEL_API_KEY"])
result = client.check_email("user@example.com")
if result and result.is_risky:
raise ValueError("Veuillez utiliser une adresse email professionnelle.")
# result est None → Syvel indisponible, laisser passer l'utilisateur

Utilisation asynchrone

import os
from syvel import AsyncSyvel
async def validate_email(email: str) -> bool:
async with AsyncSyvel(api_key=os.environ["SYVEL_API_KEY"]) as client:
result = await client.check_email(email)
return result is None or not result.is_risky

Django REST Framework

from rest_framework import serializers
import os
from syvel import Syvel
client = Syvel(api_key=os.environ["SYVEL_API_KEY"], silent=True)
class RegisterSerializer(serializers.Serializer):
email = serializers.EmailField()
def validate_email(self, value):
result = client.check_email(value)
if result and result.is_risky:
raise serializers.ValidationError(
"Veuillez utiliser une adresse email professionnelle."
)
return value

FastAPI (async)

from fastapi import FastAPI, HTTPException
import os
from syvel import AsyncSyvel
app = FastAPI()
@app.post("/register")
async def register(email: str):
async with AsyncSyvel(api_key=os.environ["SYVEL_API_KEY"]) as client:
result = await client.check_email(email)
if result and result.is_risky:
raise HTTPException(
status_code=422,
detail="Veuillez utiliser une adresse email professionnelle.",
)
# continuer l'inscription…

Flask

from flask import Flask, request, jsonify
import os
from syvel import Syvel
app = Flask(__name__)
client = Syvel(api_key=os.environ["SYVEL_API_KEY"], silent=True)
@app.route("/register", methods=["POST"])
def register():
email = request.json.get("email")
result = client.check_email(email)
if result and result.is_risky:
return jsonify({"error": "Veuillez utiliser une adresse email professionnelle."}), 422
# continuer l'inscription…

Champs de la réponse

ChampTypeDescription
is_riskyboolTrue si l’email est à risque
risk_scoreintScore de risque (0–100)
reasonstr"safe" | "disposable" | "undeliverable" | "role_account"
deliverability_scoreintProbabilité de délivrabilité (0–100)
did_you_meanstr | NoneSuggestion de correction de frappe
is_free_providerboolGmail, Yahoo, etc.
is_corporate_emailboolDomaine professionnel détecté
is_alias_emailboolService de relais de confidentialité (ex : iCloud Hide My Email)

Gestion des erreurs

Par défaut, le SDK lève des exceptions en cas d’erreur. Passez silent=True pour retourner None à la place.

from syvel import Syvel, SyvelAuthError, SyvelRateLimitError, SyvelError
client = Syvel(api_key=os.environ["SYVEL_API_KEY"])
try:
result = client.check_email("user@example.com")
except SyvelAuthError:
pass # clé API invalide
except SyvelRateLimitError:
pass # quota dépassé
except SyvelError:
pass # toute autre erreur Syvel → fail open

Configuration

ParamètreDéfautDescription
api_keyVotre clé API (depuis syvel.io/dashboard)
base_urlhttps://api.syvel.ioURL de base de l’API
timeout3.0Timeout en secondes
silentFalseRetourne None au lieu de lever une exception

Ressources

Dernière mise à jour :