Emails
Trouve une adresse email exploitable pour chaque point d'intérêt d'une liste existante.
Purpose
Module d'enrichissement : déduit des adresses email depuis le site web de chaque POI. Les boîtes nominatives sont remontées avant les génériques (info@, contact@, hello@). Aucune adresse n'est inventée — vide quand aucun candidat ne qualifie.
Inputs
Une liste de POI portant chacun au moins un site web. Les deux modes d'exécution diffèrent en couverture vs coût.
| Field | Type | Required | Description |
|---|---|---|---|
items |
array of POI objects | yes | 1 à 10 000 entrées. Les entrées sans site_web sont filtrées avant l'exécution. |
mode |
"normal" | "deep" |
no, défaut "normal" |
normal exécute l'extraction standard. deep exécute un second passage exhaustif et requiert un run normal déjà terminé sur la même source. |
source_job_id |
string | conditionnel | Requis quand mode = "deep". Doit référencer un job emails done en mode normal sur la même source amont. |
Outputs
Chaque POI d'entrée est augmenté de jusqu'à deux champs email. Les colonnes POI d'origine sont conservées ; le job ajoute :
| Column | Type | Description |
|---|---|---|
email |
string | null | Meilleure adresse classée pour ce POI. Vide quand aucun candidat ne qualifie. |
email_personal |
string | null | Renseigné quand le meilleur candidat ressemble à une boîte personnelle plutôt qu'à une adresse de rôle générique. |
Le classement est déterministe. Unité de progression : sites. Unité de résultat : emails.
Lifecycle
Cycle de vie standard : voir Jobs & lifecycle.
Pipeline
| Slot | Value |
|---|---|
needs |
poi_list (POI avec un champ site_web) |
produces |
enriched_list (POI augmentés de email, email_personal) |
| Amont typique | scrap |
| Aval typique | verify_emails, delivery_check, filter |
Config pipeline par défaut : { "mode": "normal" }. deep est conçu comme une relance manuelle sur les POI revenus vides du run normal.
Endpoints
Création d'un job :
POST /api/jobs/emails
Content-Type: application/json
{
"items": [
{ "site_web": "https://example.com", "nom": "Example Co" }
],
"mode": "normal"
}
Réponse : un objet JobPublic avec id, status et les métadonnées standard. Pour la surface API job complète, voir Jobs API.
Limits
Quotas globaux : voir /docs/fr/concepts/limits. Plafonds spécifiques au module :
| Limit | Value |
|---|---|
| Nombre minimum d'items par job | 1 |
| Nombre maximum d'items par job | 10 000 |
| Items retenus | uniquement ceux avec un site_web non vide |
Prérequis mode deep |
Un job emails normal done sur le même source_job_id |
Les items sans site web sont écartés à la normalisation. Si la liste filtrée est vide, le job est rejeté avec "Aucun établissement avec site web".
Errors
| HTTP | detail |
Cause |
|---|---|---|
| 400 | Mode email invalide : ... (attendu: normal | deep) |
mode n'est ni normal ni deep. |
| 400 | Aucun établissement avec site web |
Aucun item d'entrée ne porte un champ site_web. |
| 400 | Le mode Deep Extract n'est dispo qu'après une extraction normale ... |
mode = "deep" soumis sans run normal valide préalable sur la même source. |
| 400 | Quota dépassé : ... |
Coût estimé supérieur au quota équivalent-France per-job. |
| 401 / 403 | — | Session absente ou inactive. |
Les erreurs levées après création remontent via l'événement SSE error ; le job termine en status = "error" et les résultats partiels restent téléchargeables.
What's next
- verify_emails — confirme que chaque adresse est délivrable avant envoi.
- delivery_check — mesure le placement inbox sur un vrai message.
- filter — ne garder que les POI ayant une adresse personnelle, exclure les domaines jetables, ou échantillonner la liste.