Zoek je een algemeen overzicht? Lees de pagina over de API voor e-mailverificatie of over de API voor e-mailvalidatie in aanmeldformulieren (in het Engels).

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.

Basis-URL
https://api.giggal.ai/v1
Een API-sleutel aanmaken

Maak 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 openen
Opbouw van het antwoord

Elk antwoord heeft dezelfde JSON-structuur:

// Success
{ "success": true, "data": { ... }, "meta": { ... } }

// Error
{ "success": false, "error": "Human-readable error message" }
Snel starten: een adres controleren met cURL
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.

Optie 1: Bearer-token
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx
Optie 2: header X-API-Key
X-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx

Een 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.

Idempotentie (bulk en catch-all)

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-42

Losse controle

1 endpoint in deze groep.

POST/v1/verify

Een 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.

Autorisatie
api_key_auth
Body van het verzoek
email
Verplicht
string
Het e-mailadres dat je wilt controleren.

Bulkcontrole

3 endpoints in deze groep.

POST/v1/verify-batch

Een 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.

Autorisatie
api_key_auth
Body van het verzoek
emails
Verplicht
string[]
Lijst met e-mailadressen om te controleren. Maximaal 50.000 per taak. Dubbele en verkeerd opgebouwde adressen haalt de server eruit.
name
string
Optionele naam voor de taak, leesbaar voor mensen. Wordt getoond in je dashboard.
GET/v1/jobs/:jobId

Status 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.

Autorisatie
api_key_auth
Pad- en queryparameters
jobId
Verplicht
string
De taak-ID die POST /v1/verify-batch teruggaf.
GET/v1/jobs/:jobId/results

Resultaten 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).

Autorisatie
api_key_auth
Pad- en queryparameters
jobId
Verplicht
string
De ID van de taak.
page
integer
Paginanummer, standaard 1.
limit
integer
Resultaten per pagina, standaard 25, maximaal 500.

Catch-all-controle

4 endpoints in deze groep.

POST/v1/catchall

Een 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).

Autorisatie
api_key_auth
Body van het verzoek
jobId
Verplicht
string
De ID van een afgeronde bulktaak. Alleen de catch-all-adressen uit die taak worden grondig gecontroleerd.
name
string
Optionele naam voor de taak, leesbaar voor mensen.
GET/v1/catchall/:taskId

Status 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.

Autorisatie
api_key_auth
Pad- en queryparameters
taskId
Verplicht
string
De taak-ID die POST /v1/catchall teruggaf.
GET/v1/catchall/:taskId/results

Resultaten 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).

Autorisatie
api_key_auth
Pad- en queryparameters
taskId
Verplicht
string
De ID van de taak.
page
integer
Paginanummer, standaard 1.
limit
integer
Resultaten per pagina, standaard 25, maximaal 500.
verdict
string
Filteren op resultaat: valid | invalid.
GET/v1/catchall/:taskId/download

Catch-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.

Autorisatie
api_key_auth
Pad- en queryparameters
taskId
Verplicht
string
De ID van de taak.
verdict
string
Filteren op resultaat: valid | invalid.

Account

1 endpoint in deze groep.

GET/v1/credits

Saldo 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.

Autorisatie
api_key_auth

Fouten en limieten

StatusBetekenis
200 OKHet verzoek is gelukt (synchrone controle, of het opvragen van een status of resultaten).
202 AcceptedDe asynchrone taak is aangemaakt en staat in de wachtrij.
400 Bad RequestParameters ontbreken of zijn ongeldig (verkeerd e-mailformaat, lege lijst emails, jobId ontbreekt).
401 UnauthorizedAPI-sleutel ontbreekt, is ongeldig of is ingetrokken.
402 Payment RequiredNiet genoeg credits voor deze actie.
404 Not FoundDeze taak-ID bestaat niet in je account.
409 ConflictDe taak heeft niet de vereiste status (bijvoorbeeld resultaten opgevraagd voordat de taak klaar is).
410 GoneDe resultaten van de taak zijn ouder dan de bewaartermijn van 48 uur.
429 Too Many RequestsLimiet voor verzoeken overschreden. Wacht even en probeer het opnieuw.
500 / 502 / 503De 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.

CategorieLimiet
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 bulktaak50.000
Bewaartermijn van resultaten48 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.

Neem contact op

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.