Documentation de l’API de vérification d’adresse mail
Vérifiez une adresse mail, lancez des vérifications en masse et contrôlez en détail les adresses catch-all et protégées par une SEG. Tous les endpoints utilisent JSON et une authentification par clé API. Seules les vérifications réussies sont facturées.
Introduction
L’API Giggal.ai vous permet de vérifier une adresse mail, de lancer des vérifications en masse jusqu’à 50 000 emails par tâche et de contrôler en détail les adresses catch-all et protégées par une SEG. Elle utilise une API REST simple au format JSON. Chaque vérification réussie consomme des crédits de votre compte.
https://api.giggal.ai/v1Créez une clé API depuis votre tableau de bord Giggal.ai : ouvrez l’onglet Developer API dans la barre latérale et cliquez sur Create API Key. Chaque clé est liée à votre compte, suit sa propre utilisation et peut être révoquée à tout moment.
Ouvrir l’onglet Developer APIChaque réponse suit la même structure JSON :
// Success
{ "success": true, "data": { ... }, "meta": { ... } }
// Error
{ "success": false, "error": "Human-readable error message" }curl -X POST https://api.giggal.ai/v1/verify \
-H "Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email":"info@giggal.ai"}'Authentification
Envoyez votre clé API avec chaque requête, dans l’un des deux en-têtes suivants. Les deux fonctionnent.
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxX-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxUne clé absente, invalide ou révoquée renvoie une erreur HTTP 401. N’exposez jamais vos clés API dans du code côté client. Faites passer les appels par votre backend.
Pour POST /v1/verify-batch et POST /v1/catchall, envoyez un en-tête Idempotency-Key. Une nouvelle tentative avec la même clé renvoie la réponse d’origine. Aucune tâche en double n’est créée et les crédits ne sont pas débités deux fois.
Idempotency-Key: 2026-07-24-list-batch-42Vérification unitaire
1 endpoint dans ce groupe.
/v1/verifyVérifier une adresse mail
Vérifie une adresse mail de façon synchrone. Coûte 1 crédit. Si le domaine est catch-all, la vérification approfondie se fait dans la même requête et la réponse inclut catch_all_score et catch_all_verdict.
Vérification en masse
3 endpoints dans ce groupe.
/v1/verify-batchEnvoyer une tâche de vérification en masse
Envoyez jusqu’à 50 000 emails par tâche. Le traitement est asynchrone : interrogez GET /v1/jobs/:jobId pour suivre l’avancement. Envoyez un en-tête Idempotency-Key pour relancer la création d’une tâche sans double facturation.
/v1/jobs/:jobIdObtenir le statut d’une tâche en masse
Interrogez cet endpoint pour suivre l’avancement. Évolution du statut : processing → completed (ou failed). Intervalle d’interrogation conseillé : 10 à 15 secondes. Les petites listes (moins de 50 emails) se terminent en général en moins de 30 secondes.
/v1/jobs/:jobId/resultsObtenir les résultats d’une tâche en masse
Quand le statut est "completed", récupérez les résultats de chaque email. Les résultats sont paginés : envoyez les paramètres de requête page et limit. Les résultats sont conservés 48 heures (voir resultsExpiresAt sur la tâche).
Vérification catch-all
4 endpoints dans ce groupe.
/v1/catchallLancer une tâche de vérification catch-all
Lance la vérification catch-all approfondie pour une tâche en masse terminée. Seules les adresses marquées catch-all dans la tâche d’origine sont vérifiées à nouveau. Facturé 1 crédit par adresse (voir creditsRequired dans la réponse).
/v1/catchall/:taskIdObtenir le statut d’une tâche catch-all
Interrogez cet endpoint pour suivre l’avancement et les compteurs verdictCounts mis à jour. Une tâche catch-all prend en général de quelques secondes à quelques minutes, selon le volume.
/v1/catchall/:taskId/resultsObtenir les résultats d’une tâche catch-all
Récupère les résultats paginés de chaque email, avec le détail du score (signaux de tri du domaine et âge du domaine).
/v1/catchall/:taskId/downloadTélécharger les résultats catch-all en CSV
Télécharge tous les résultats d’une tâche catch-all terminée dans un fichier CSV avec les colonnes Email, Score et Verdict. Le Content-Type est text/csv.
Compte
1 endpoint dans ce groupe.
/v1/creditsObtenir le solde de crédits
Renvoie le solde de votre compte : crédits disponibles, réservés (bloqués pour les tâches en cours) et totaux depuis l’ouverture du compte. Les vérifications au résultat "unknown" sont remboursées automatiquement et apparaissent ici.
Erreurs et limites de requêtes
| Statut | Signification |
|---|---|
| 200 OK | La requête a réussi (vérification synchrone, ou lecture d’un statut ou de résultats). |
| 202 Accepted | La tâche asynchrone a été créée et mise en file d’attente. |
| 400 Bad Request | Paramètres absents ou invalides (format d’email incorrect, liste emails vide, jobId absent). |
| 401 Unauthorized | Clé API absente, invalide ou révoquée. |
| 402 Payment Required | Crédits insuffisants pour l’opération demandée. |
| 404 Not Found | L’identifiant de tâche n’existe pas dans votre compte. |
| 409 Conflict | La tâche n’est pas dans l’état requis (par exemple, résultats demandés avant la fin). |
| 410 Gone | Les résultats de la tâche ont dépassé la durée de conservation de 48 heures. |
| 429 Too Many Requests | Limite de requêtes dépassée. Attendez, puis réessayez. |
| 500 / 502 / 503 | Le serveur ou le service de vérification en amont est temporairement indisponible. |
Limites de requêtes
Chaque réponse inclut les en-têtes RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset (casse RFC), pour vous aider à espacer vos requêtes. RateLimit-Reset indique le nombre de secondes avant la réinitialisation de la fenêtre en cours.
| Catégorie | Limite |
|---|---|
| Tous les endpoints (par défaut) | 300 requêtes / 15 minutes |
| Création de tâches (POST /v1/verify-batch, POST /v1/catchall) | 30 requêtes / 15 minutes |
| Suivi des tâches (GET /v1/jobs/:id, GET /v1/jobs/:id/results) | 600 requêtes / 15 minutes |
| Nombre maximal d’emails par tâche en masse | 50 000 |
| Conservation des résultats | 48 heures |
Il y a trois niveaux de limite, car le suivi d’une tâche se fait plus souvent que sa création. Vous pouvez interroger l’API toutes les quelques secondes pendant qu’une tâche tourne. La limite de 600 / 15 min (environ 40 par minute) vous laisse donc de la marge sans surcharger le serveur.
Besoin de limites plus élevées ?
Nous relevons régulièrement les limites pour les partenaires d’intégration vérifiés.
Format de la réponse 429
Quand vous atteignez une limite, l’API renvoie une erreur HTTP 429 avec ce corps :
{
"success": false,
"message": "Developer API rate limit exceeded"
}Avant de réessayer, attendez le nombre de secondes indiqué dans l’en-tête RateLimit-Reset (temps restant avant la réinitialisation de la fenêtre).
Prêt à intégrer l’API ?
Créez votre clé API en quelques secondes. Des crédits d’essai gratuits sont inclus, pour tout tester de bout en bout avant de payer.
