API-documentatie voor e-mailverificatie
Controleer een e-mailadres, start bulkcontroles en controleer catch-all-adressen en adressen achter een SEG grondig. Alle endpoints gebruiken JSON en authenticatie met een API-sleutel. Je betaalt alleen voor geslaagde controles.
Introductie
Met de API van Giggal.ai controleer je een e-mailadres, start je bulkcontroles tot 50.000 e-mailadressen per taak en controleer je catch-all-adressen en adressen achter een SEG grondig. Het is een eenvoudige REST API met JSON. Elke geslaagde controle gebruikt credits van je account.
https://api.giggal.ai/v1Maak een API-sleutel aan in je Giggal.ai-dashboard: open het tabblad Developer API in de zijbalk en klik op Create API Key. Elke sleutel hoort bij je account en houdt zijn eigen gebruik bij. Je kunt een sleutel op elk moment intrekken.
Tabblad Developer API openenElk antwoord heeft dezelfde JSON-structuur:
// 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"}'Authenticatie
Stuur je API-sleutel mee met elk verzoek, in een van deze twee headers. Beide werken.
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxX-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxEen ontbrekende, ongeldige of ingetrokken sleutel geeft een HTTP 401-fout. Zet je API-sleutels nooit in code aan de clientkant. Stuur de aanroepen via je eigen backend.
Stuur bij POST /v1/verify-batch en POST /v1/catchall een header Idempotency-Key mee. Een nieuwe poging met dezelfde sleutel geeft het oorspronkelijke antwoord terug. Er ontstaat geen dubbele taak en de credits worden niet twee keer afgeschreven.
Idempotency-Key: 2026-07-24-list-batch-42Losse controle
1 endpoint in deze groep.
/v1/verifyEen e-mailadres controleren
Controleert één e-mailadres synchroon. Kost 1 credit. Is het domein catch-all, dan gebeurt de grondige controle in hetzelfde verzoek en bevat het antwoord catch_all_score en catch_all_verdict.
Bulkcontrole
3 endpoints in deze groep.
/v1/verify-batchEen bulkcontrole starten
Stuur tot 50.000 e-mailadressen per taak. De verwerking is asynchroon: vraag GET /v1/jobs/:jobId op om de voortgang te volgen. Stuur een header Idempotency-Key mee om het aanmaken van een taak opnieuw te proberen zonder dubbele kosten.
/v1/jobs/:jobIdStatus van een bulktaak opvragen
Vraag dit endpoint op om de voortgang te volgen. De status gaat van processing naar completed (of failed). Aanbevolen interval: elke 10 tot 15 seconden. Kleine lijsten (minder dan 50 e-mailadressen) zijn meestal binnen 30 seconden klaar.
/v1/jobs/:jobId/resultsResultaten van een bulktaak opvragen
Als de status "completed" is, haal je de resultaten per e-mailadres op. De resultaten zijn verdeeld over pagina’s: stuur de queryparameters page en limit mee. Resultaten worden 48 uur bewaard (zie resultsExpiresAt bij de taak).
Catch-all-controle
4 endpoints in deze groep.
/v1/catchallEen catch-all-controle starten
Start de grondige catch-all-controle voor een afgeronde bulktaak. Alleen de adressen die in de oorspronkelijke taak als catch-all zijn gemarkeerd, worden opnieuw gecontroleerd. Kost 1 credit per adres (zie creditsRequired in het antwoord).
/v1/catchall/:taskIdStatus van een catch-all-taak opvragen
Vraag dit endpoint op om de voortgang en de bijgewerkte tellingen in verdictCounts te volgen. Een catch-all-taak duurt meestal een paar seconden tot een paar minuten, afhankelijk van het aantal adressen.
/v1/catchall/:taskId/resultsResultaten van een catch-all-taak opvragen
Haalt de resultaten per e-mailadres op, verdeeld over pagina’s, met de opbouw van de score (signalen van het domein en de leeftijd van het domein).
/v1/catchall/:taskId/downloadCatch-all-resultaten downloaden als CSV
Downloadt alle resultaten van een afgeronde catch-all-taak als CSV-bestand met de kolommen Email, Score en Verdict. Het Content-Type is text/csv.
Account
1 endpoint in deze groep.
/v1/creditsSaldo van je credits opvragen
Geeft het saldo van je account: beschikbare credits, gereserveerde credits (vastgezet voor lopende taken) en totalen sinds het openen van je account. Controles met het resultaat "unknown" worden automatisch terugbetaald en staan hier ook.
Fouten en limieten
| Status | Betekenis |
|---|---|
| 200 OK | Het verzoek is gelukt (synchrone controle, of het opvragen van een status of resultaten). |
| 202 Accepted | De asynchrone taak is aangemaakt en staat in de wachtrij. |
| 400 Bad Request | Parameters ontbreken of zijn ongeldig (verkeerd e-mailformaat, lege lijst emails, jobId ontbreekt). |
| 401 Unauthorized | API-sleutel ontbreekt, is ongeldig of is ingetrokken. |
| 402 Payment Required | Niet genoeg credits voor deze actie. |
| 404 Not Found | Deze taak-ID bestaat niet in je account. |
| 409 Conflict | De taak heeft niet de vereiste status (bijvoorbeeld resultaten opgevraagd voordat de taak klaar is). |
| 410 Gone | De resultaten van de taak zijn ouder dan de bewaartermijn van 48 uur. |
| 429 Too Many Requests | Limiet voor verzoeken overschreden. Wacht even en probeer het opnieuw. |
| 500 / 502 / 503 | De server of de onderliggende verificatiedienst is tijdelijk niet beschikbaar. |
Limieten voor verzoeken
Elk antwoord bevat de headers RateLimit-Limit, RateLimit-Remaining en RateLimit-Reset (schrijfwijze volgens de RFC), zodat je je verzoeken kunt spreiden. RateLimit-Reset geeft het aantal seconden tot het huidige venster opnieuw begint.
| Categorie | Limiet |
|---|---|
| Alle endpoints (standaard) | 300 verzoeken / 15 minuten |
| Taken aanmaken (POST /v1/verify-batch, POST /v1/catchall) | 30 verzoeken / 15 minuten |
| Taken volgen (GET /v1/jobs/:id, GET /v1/jobs/:id/results) | 600 verzoeken / 15 minuten |
| Maximaal aantal e-mailadressen per bulktaak | 50.000 |
| Bewaartermijn van resultaten | 48 uur |
Er zijn drie limieten, omdat je een taak vaker volgt dan dat je er een aanmaakt. Je kunt de API elke paar seconden opvragen terwijl een taak loopt. De limiet van 600 / 15 min (ongeveer 40 per minuut) geeft je dus genoeg ruimte zonder de server te overbelasten.
Hogere limieten nodig?
We verhogen de limieten regelmatig voor geverifieerde integratiepartners.
Opbouw van het 429-antwoord
Als je een limiet bereikt, geeft de API een HTTP 429-fout met deze body:
{
"success": false,
"message": "Developer API rate limit exceeded"
}Wacht voor een nieuwe poging het aantal seconden dat in de header RateLimit-Reset staat (de tijd tot het venster opnieuw begint).
Klaar om de API te koppelen?
Maak in een paar seconden je API-sleutel aan. Gratis proefcredits zitten erbij, zodat je alles van begin tot eind kunt testen voordat je betaalt.
