API-referentie
Webhook-endpoints
Een webhook-endpoint is een URL van jou die de gebeurtenissen van Gemlead ontvangt zodra ze plaatsvinden. Je kunt er 10 per account hebben. Lees Webhooks voor de gebeurtenissen, hun payloads en hoe je een handtekening verifieert.
Het webhook-endpoint-object
Een URL van jou waar Gemlead gebeurtenissen naartoe stuurt. Zie Webhooks voor de gebeurtenissen en hoe je ze verifieert.
Attributen
- idstringUnieke ID van het endpoint.
- objectstringAltijd
webhook_endpoint. - urlstringDe HTTPS-URL waar gebeurtenissen naartoe gaan.
- descriptionstring of nullJe notitie over het endpoint.
- eventsarray van stringsDe gebeurtenistypen die ernaartoe gaan.
lead.createdlead.hotreply.receivedreaction.receivedsam.suggestion.readysam.reply.sentsam.handoff - statusstringOf er gebeurtenissen naartoe gaan.
enableddisabled - filtersobjectWelke gebeurtenissen het krijgt, op basis van de persona van de lead. Deze filters gelden voor elk gebeurtenistype.
- disabled_reasonstring of nullWaarom het is uitgeschakeld.
manualals jij het uitzette,failingals Gemlead dat deed na 3 dagen op rij met fouten en minstens 8 mislukte pogingen.nullzolang het aan staat.manualfailing - secretstringHet ondertekeningsgeheim,
whsec_gevolgd door 32 tekens. Alleen in de responses van aanmaken en geheim vernieuwen. - created_atstringWanneer het endpoint is gemaakt, in ISO 8601.
- updated_atstringWanneer het endpoint voor het laatst is gewijzigd, in ISO 8601.
{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Webhook-endpoints opvragen
readGeeft je webhook-endpoints terug, zonder hun geheimen.
Queryparameters
- limitintegerHoeveel objecten je terugkrijgt, van 1 tot 100. Standaard 25.
- cursorstringDe
next_cursorvan de vorige pagina, om de pagina daarna op te halen. Zie Paginering.
Resultaat
Een lijst van webhook-endpoint-objecten.
curl https://gemlead.ai/api/v1/webhook_endpoints \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"object": "list",
"data": [
{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}
],
"has_more": false,
"next_cursor": null
}Een webhook-endpoint maken
writeRegistreert een URL voor een of meer gebeurtenistypen. Bewaar de secret uit de response, je ziet hem maar deze ene keer.
Bodyparameters
- urlstringVerplichtEen HTTPS-URL die bereikbaar is op het publieke internet.
- eventsarray van stringsVerplichtDe gebeurtenistypen die verstuurd worden.
lead.createdlead.hotreply.receivedreaction.receivedsam.suggestion.readysam.reply.sentsam.handoff - descriptionstringEen notitie voor jezelf.
- filtersobjectWelke gebeurtenissen er gestuurd worden, op basis van de persona van de lead.
Resultaat
Het nieuwe webhook-endpoint-object met de secret.
Fouten
- Er ontbreekt een verplichte parameter.
paramgeeft aan welke. - Een parameter heeft een waarde die de API niet accepteert.
paramgeeft aan welke. - De body bevat een veld dat dit endpoint niet accepteert.
- 400url_invalidDe URL is geen HTTPS, bevat inloggegevens of wijst naar een privéadres.
- Het account heeft al 10 endpoints.
curl -X POST https://gemlead.ai/api/v1/webhook_endpoints \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/gemlead",
"events": ["lead.hot", "reply.received"],
"description": "CRM sync",
"filters": {
"persona_ids": ["lvWBPnytpS"]
}
}'{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z",
"secret": "whsec_4QeX7nP2kR9tLm3Vb8YzC1dF6hJ0sWuA"
}Een webhook-endpoint ophalen
readGeeft één webhook-endpoint terug, zonder het geheim.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Resultaat
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
curl https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een webhook-endpoint bijwerken
writeWijzigt een endpoint. Zet status op enabled om een endpoint dat Gemlead uitschakelde weer aan te zetten. Aanzetten of een nieuwe url geven zet de foutentelling weer op nul.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Bodyparameters
- urlstringEen nieuwe HTTPS-URL.
- eventsarray van stringsDe gebeurtenistypen die verstuurd worden.
lead.createdlead.hotreply.receivedreaction.receivedsam.suggestion.readysam.reply.sentsam.handoff - descriptionstringEen notitie voor jezelf.
- statusstringZet het endpoint aan of uit.
enableddisabled - filtersobjectWelke gebeurtenissen er gestuurd worden, op basis van de persona van de lead.
Resultaat
Het bijgewerkte webhook-endpoint-object.
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
- Een parameter heeft een waarde die de API niet accepteert.
paramgeeft aan welke. - De body bevat een veld dat dit endpoint niet accepteert.
- 400url_invalidDe URL is geen HTTPS, bevat inloggegevens of wijst naar een privéadres.
curl -X PATCH \
https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "enabled"
}'{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een webhook-endpoint verwijderen
writeVerwijdert een endpoint. Leveringen die nog op een nieuwe poging wachten, vervallen.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Resultaat
Een object met de id van het endpoint en deleted op true.
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
curl -X DELETE \
https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"deleted": true
}Het ondertekeningsgeheim vernieuwen
writeVervangt het geheim van het endpoint meteen, het oude werkt niet meer. Leveringen die in de tussentijd mislukken, worden opnieuw geprobeerd en met het nieuwe geheim ondertekend.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Resultaat
Het webhook-endpoint-object met de nieuwe secret.
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
curl -X POST \
https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe/roll_secret \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "wh3LpX9dKe",
"object": "webhook_endpoint",
"url": "https://example.com/webhooks/gemlead",
"description": "CRM sync",
"events": ["lead.hot", "reply.received"],
"status": "enabled",
"filters": {
"persona_ids": ["lvWBPnytpS"]
},
"disabled_reason": null,
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z",
"secret": "whsec_4QeX7nP2kR9tLm3Vb8YzC1dF6hJ0sWuA"
}Een testgebeurtenis sturen
writeStuurt een voorbeeldgebeurtenis van het eerste gebeurtenistype van het endpoint, met data.test op true en ID's die met test_ beginnen. Eén poging, geen nieuwe pogingen.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Resultaat
Een leveringsobject met de status en status_code waarmee je endpoint antwoordde.
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
curl -X POST \
https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe/test \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "dL5qW1zXa8",
"object": "webhook_delivery",
"endpoint_id": "wh3LpX9dKe",
"event_id": "evt_8kQ2vXr4LmT9wPz1Hc6YbN3d",
"event_type": "lead.hot",
"status": "succeeded",
"attempts": 1,
"status_code": 200,
"error": null,
"test": true,
"next_attempt_at": null,
"last_attempt_at": "2026-11-06T07:45:12.904Z",
"created_at": "2026-11-06T07:45:12.904Z"
}Het leveringsobject
Eén gebeurtenis die naar één endpoint is gestuurd, met de pogingen en het laatste antwoord van je server.
Attributen
- idstringUnieke ID van de levering.
- objectstringAltijd
webhook_delivery. - endpoint_idstringHet endpoint waarnaar de levering is gestuurd.
- event_idstringDe verstuurde gebeurtenis, de
iddie je server ontving. - event_typestringHet type van de gebeurtenis.
lead.createdlead.hotreply.receivedreaction.receivedsam.suggestion.readysam.reply.sentsam.handoff - statusstring
pendingzolang er pogingen over zijn, daarnasucceededoffailed.pendingsucceededfailed - attemptsintegerPogingen tot nu toe, maximaal 8.
- status_codeinteger of nullDe HTTP-status van je laatste antwoord.
nullals er geen was, na een time-out of een verbindingsfout. - errorstring of nullWat er bij de laatste poging misging, zoals de status en het begin van je antwoord, of een time-out.
- testboolean
truevoor een testgebeurtenis. - next_attempt_atstring of nullWanneer de volgende poging gepland staat, zolang
pending. - last_attempt_atstring of nullWanneer de laatste poging is gedaan.
- created_atstringWanneer de levering is gemaakt, in ISO 8601.
{
"id": "dR7mK2pVn4",
"object": "webhook_delivery",
"endpoint_id": "wh3LpX9dKe",
"event_id": "evt_3Hn7QpW2xZk9LmR4tV8bYc1D",
"event_type": "reply.received",
"status": "pending",
"attempts": 2,
"status_code": 503,
"error": "HTTP 503: Service Unavailable",
"test": false,
"next_attempt_at": "2026-11-06T08:18:10.000Z",
"last_attempt_at": "2026-11-06T08:13:10.000Z",
"created_at": "2026-11-06T08:12:10.000Z"
}Leveringen opvragen
readGeeft de laatste leveringen van het endpoint terug, nieuwste eerst, testgebeurtenissen inbegrepen. Leveringen worden 30 dagen bewaard.
Padparameters
- idstringVerplichtDe ID van het webhook-endpoint.
Queryparameters
- limitintegerHoeveel leveringen je terugkrijgt, van 1 tot 100. Standaard 25.
Resultaat
Een lijst van leveringsobjecten. Deze lijst heeft geen next_cursor, verhoog limit om meer te zien.
Fouten
- Geen webhook-endpoint met deze ID op het account van de sleutel.
- Een parameter heeft een waarde die de API niet accepteert.
paramgeeft aan welke.
curl -G \
https://gemlead.ai/api/v1/webhook_endpoints/wh3LpX9dKe/deliveries \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d limit=10{
"object": "list",
"data": [
{
"id": "dR7mK2pVn4",
"object": "webhook_delivery",
"endpoint_id": "wh3LpX9dKe",
"event_id": "evt_3Hn7QpW2xZk9LmR4tV8bYc1D",
"event_type": "reply.received",
"status": "pending",
"attempts": 2,
"status_code": 503,
"error": "HTTP 503: Service Unavailable",
"test": false,
"next_attempt_at": "2026-11-06T08:18:10.000Z",
"last_attempt_at": "2026-11-06T08:13:10.000Z",
"created_at": "2026-11-06T08:12:10.000Z"
},
{
"id": "dL5qW1zXa8",
"object": "webhook_delivery",
"endpoint_id": "wh3LpX9dKe",
"event_id": "evt_8kQ2vXr4LmT9wPz1Hc6YbN3d",
"event_type": "lead.hot",
"status": "succeeded",
"attempts": 1,
"status_code": 200,
"error": null,
"test": true,
"next_attempt_at": null,
"last_attempt_at": "2026-11-06T07:45:12.904Z",
"created_at": "2026-11-06T07:45:12.904Z"
}
],
"has_more": false,
"next_cursor": null
}