API-referentie
Campagnes
Een campagne leidt de hete leads van een persona door een flow van stappen, likes, reacties, follows en DM's, allemaal vanaf je X-account, en zet elk antwoord in je inbox. Maak er een op basis van een template of je eigen flow, start hem en volg de cijfers.
- GET/v1/
campaigns - GET/v1/
campaigns/ :id - POST/v1/
campaigns - POST/v1/
campaigns/ :campaign_id/ start - POST/v1/
campaigns/ :campaign_id/ pause - POST/v1/
campaigns/ :campaign_id/ archive - POST/v1/
campaigns/ :campaign_id/ duplicate - DELETE/v1/
campaigns/ :campaign_id - GET/v1/
campaigns/ :id/ stats - GET/v1/
campaigns/ :campaign_id/ settings - PATCH/v1/
campaigns/ :campaign_id/ settings - GET/v1/
campaigns/ :campaign_id/ leads - GET/v1/
campaigns/ :campaign_id/ trends - GET/v1/
campaign_templates
Het campagne-object
Een outreach-flow die DM's stuurt naar de hete leads van een persona, follow-ups verstuurt en antwoorden in je inbox zet.
Attributen
- idstringUnieke ID van de campagne.
- objectstringAltijd
campaign. - namestringDe naam van de campagne.
- statusstringOf de campagne aan het versturen is.
draftactivepausedarchived - personaobject of nullDe persona waarvan de leads in de campagne komen.
- methodstring of nullHoe de leads van de campagne zijn gevonden. Null bij oudere campagnes.
followingkeywordscompetitor_followerscompetitor_comments - min_scoreintegerLeads met een lagere score komen nooit in de campagne.
- daily_limitintegerHet maximale aantal nieuwe leads dat per dag in de campagne komt, 5 tot 150. Standaard 60.
- statsobjectTotalen sinds de start van de campagne. Een antwoord telt als het binnen 7 dagen na de eerste DM komt.
- created_atstringWanneer de campagne is gemaakt, in ISO 8601.
- updated_atstringWanneer de campagne voor het laatst is gewijzigd, in ISO 8601.
{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "active",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Campagnes opvragen
Geeft je campagnes terug, nieuwste eerst.
Queryparameters
- statusstringAlleen campagnes met deze status.
draftactivepausedarchived - personastringAlleen campagnes van de persona met deze ID.
- 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 campagne-objecten.
Fouten
- Een parameter heeft een waarde die de API niet accepteert.
paramgeeft aan welke.
curl -G https://gemlead.ai/api/v1/campaigns \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d status=active{
"object": "list",
"data": [
{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "active",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}
],
"has_more": false,
"next_cursor": null
}Een campagne ophalen
readGeeft één campagne terug.
Padparameters
- idstringVerplichtDe ID van de campagne.
Resultaat
Een campagne-object.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
curl https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "active",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne maken
Maakt een campagne aan als concept. Er gaat niets de deur uit tot je hem start. Zonder template of flow krijgt de campagne de standaard van de app, de Warm-up-flow voor B2B en de Directe flow voor B2C.
Bodyparameters
- persona_idstringVerplichtDe persona waarvan de leads erin komen.
- namestringVerplichtDe naam van de campagne, maximaal 100 tekens.
- methodstringAlleen leads die op deze manier zijn gevonden, komen erin. Laat dit weg om alle leads van de persona toe te laten.
followingkeywordscompetitor_followerscompetitor_comments - min_scoreintegerAlleen leads met minstens deze score komen erin, 0 tot 100. Standaard 60.
- daily_limitintegerHet maximale aantal nieuwe leads dat per dag instroomt, 5 tot 150. Standaard 60. Elke nieuwe lead begint met Radar, die hem op X toevoegt aan een privélijst van het account, en boven een paar honderd per dag blokkeert X die toevoegingen 6 tot 24 uur.
- lead_orderstringWelke leads er het eerst in komen. Standaard
highest, ofnewestbij de zoekwoord- en concurrentmethodes.highestlowestshufflenewest - templatestringDe flow om mee te beginnen. Zie Campagnetemplates opvragen. Niet samen met
flow.warm_upinstantdirect_messageblank - flowobjectJe eigen flow, in plaats van een template.
Resultaat
Het nieuwe campagne-object, met status op draft.
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.
- Geen persona met deze
persona_idop het account van de sleutel.
curl -X POST https://gemlead.ai/api/v1/campaigns \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"persona_id": "lvWBPnytpS",
"name": "Tipsters warm intro",
"method": "keywords",
"daily_limit": 50,
"template": "instant"
}'{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "draft",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 0,
"dms_sent": 0,
"replies": 0,
"reply_rate": null
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne starten
Start een concept of hervat een gepauzeerde campagne. Leads stromen in en de stappen worden vanaf je X-account uitgevoerd.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Het campagne-object, met status op active.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
- De campagne is gearchiveerd. Dupliceer hem om hem opnieuw te laten draaien.
- De flow heeft nog geen stap.
curl -X POST \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/start \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "active",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne pauzeren
Pauzeert een campagne. Er gaat geen nieuwe stap de deur uit tot je hem weer start, en leads behouden hun plek.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Het campagne-object, met status op paused.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
- De campagne is gearchiveerd. Dupliceer hem om hem opnieuw te laten draaien.
- De campagne is een concept, dus er valt niets te pauzeren.
curl -X POST \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/pause \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "paused",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne archiveren
Beëindigt een campagne definitief. De geschiedenis en de gesprekken blijven bestaan, en met Een campagne dupliceren draai je hem opnieuw.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Het campagne-object, met status op archived.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
curl -X POST \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/archive \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c7RkQ2wLxe",
"object": "campaign",
"name": "Tipsters warm intro",
"status": "archived",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"created_at": "2026-09-14T09:21:05.300Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne dupliceren
Kopieert de instellingen en de flow van een campagne, zonder de leads, als nieuw concept.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Het nieuwe campagne-object, met status op draft.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
curl -X POST \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/duplicate \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c2VbN6mQrz",
"object": "campaign",
"name": "Tipsters warm intro copy",
"status": "draft",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"stats": {
"leads": 0,
"dms_sent": 0,
"replies": 0,
"reply_rate": null
},
"created_at": "2026-11-06T07:45:12.904Z",
"updated_at": "2026-11-06T07:45:12.904Z"
}Een campagne verwijderen
Verwijdert een campagne. De leads en hun gesprekken blijven bestaan. Dit kan niet ongedaan worden gemaakt.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Een object met de id van de campagne en deleted op true.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
curl -X DELETE \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "c7RkQ2wLxe",
"object": "campaign",
"deleted": true
}Het object met campagnestatistieken
De resultaten van een campagne over een periode, in totaal en per dag.
Attributen
- objectstringAltijd
campaign_stats. - campaign_idstringDe ID van de campagne.
- fromstringDe eerste dag,
YYYY-MM-DD. - tostringDe laatste dag,
YYYY-MM-DD. - totalsobject
leads_added,dms_sent,repliesenreply_rateover de periode. - dailyarray van objectsEén regel per dag met
date,dms_sentenreplies.
{
"object": "campaign_stats",
"campaign_id": "c7RkQ2wLxe",
"from": "2026-10-08",
"to": "2026-11-06",
"totals": {
"leads_added": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"daily": [
{
"date": "2026-11-04",
"dms_sent": 22,
"replies": 3
},
{
"date": "2026-11-05",
"dms_sent": 25,
"replies": 4
},
{
"date": "2026-11-06",
"dms_sent": 9,
"replies": 1
}
]
}Statistieken van een campagne ophalen
Geeft de resultaten van een campagne over een periode terug, in totaal en per dag. dms_sent telt de eerste DM's die in de periode zijn verstuurd, replies de antwoorden van die leads binnen 7 dagen. Dagen zijn UTC-datums.
Padparameters
- idstringVerplichtDe ID van de campagne.
Queryparameters
- fromstringDe eerste dag,
YYYY-MM-DD. Standaard 30 dagen geleden. - tostringDe laatste dag,
YYYY-MM-DD. Standaard vandaag.
Resultaat
Een object met campagnestatistieken.
Fouten
- Geen campagne 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/campaigns/c7RkQ2wLxe/stats \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d from=2026-10-08 \
-d to=2026-11-06{
"object": "campaign_stats",
"campaign_id": "c7RkQ2wLxe",
"from": "2026-10-08",
"to": "2026-11-06",
"totals": {
"leads_added": 640,
"dms_sent": 412,
"replies": 57,
"reply_rate": 13.8
},
"daily": [
{
"date": "2026-11-04",
"dms_sent": 22,
"replies": 3
},
{
"date": "2026-11-05",
"dms_sent": 25,
"replies": 4
},
{
"date": "2026-11-06",
"dms_sent": 9,
"replies": 1
}
]
}Het object met campagne-instellingen
De instellingen van een campagne en de volledige flow, elke stap met zijn ID en opties.
Attributen
- objectstringAltijd
campaign_settings. - campaign_idstringDe ID van de campagne.
- persona_idstring of nullDe persona waarvan de leads erin komen.
- namestringDe naam van de campagne.
- statusstringWaar de campagne staat.
draftactivepausedarchived - methodstring of nullAlleen leads die op deze manier zijn gevonden, komen erin. Met
nullkomen alle leads van de persona erin.followingkeywordscompetitor_followerscompetitor_comments - min_scoreintegerAlleen leads met minstens deze score komen erin, 0 tot 100.
- daily_limitintegerHet maximale aantal nieuwe leads dat er per dag in komt, 5 tot 150.
- lead_orderstringWelke leads er het eerst in komen.
highestvoor de hoogste score,lowestvoor de laagste,shufflevoor willekeurig ofnewestvoor de laatst gevonden.highestlowestshufflenewest - flowobjectDe flow van de campagne.
- updated_atstringWanneer hij voor het laatst is gewijzigd, in ISO 8601.
{
"object": "campaign_settings",
"campaign_id": "c7RkQ2wLxe",
"persona_id": "lvWBPnytpS",
"name": "Tipsters warm intro",
"status": "active",
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"lead_order": "newest",
"flow": {
"steps": [
{
"id": "in-like",
"type": "like",
"label": "Like",
"count": 1
},
{
"id": "in-follow",
"type": "follow",
"label": "Follow"
},
{
"id": "in-timer",
"type": "timer",
"label": "Timer",
"duration": "1d"
},
{
"id": "in-inbox",
"type": "can_dm",
"label": "Inbox opened test",
"if_yes": [
{
"id": "in-dm",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-comment-bridge",
"type": "comment",
"label": "Comment",
"comment_type": "bridge",
"language": "auto",
"instructions": null
}
],
"if_no": [
{
"id": "in-comment-closed",
"type": "comment",
"label": "Comment",
"comment_type": "inbox_closed",
"language": "auto",
"instructions": null
}
]
},
{
"id": "in-timer-followup",
"type": "timer",
"label": "Timer",
"duration": "3d"
},
{
"id": "in-dm-followup",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "follow_up",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-cleaner",
"type": "cleaner",
"label": "Cleaner",
"unfollow": true,
"delete_comments": true,
"delete_likes": true
}
]
},
"updated_at": "2026-11-06T07:45:12.904Z"
}Instellingen van een campagne ophalen
Geeft de instellingen en de flow van een campagne terug, elke stap met zijn ID en opties. Lees dit voordat je de flow bewerkt.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Resultaat
Een object met campagne-instellingen.
Fouten
- Geen campagne met deze ID op het account van de sleutel.
curl https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/settings \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"object": "campaign_settings",
"campaign_id": "c7RkQ2wLxe",
"persona_id": "lvWBPnytpS",
"name": "Tipsters warm intro",
"status": "active",
"method": "keywords",
"min_score": 60,
"daily_limit": 50,
"lead_order": "newest",
"flow": {
"steps": [
{
"id": "in-like",
"type": "like",
"label": "Like",
"count": 1
},
{
"id": "in-follow",
"type": "follow",
"label": "Follow"
},
{
"id": "in-timer",
"type": "timer",
"label": "Timer",
"duration": "1d"
},
{
"id": "in-inbox",
"type": "can_dm",
"label": "Inbox opened test",
"if_yes": [
{
"id": "in-dm",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-comment-bridge",
"type": "comment",
"label": "Comment",
"comment_type": "bridge",
"language": "auto",
"instructions": null
}
],
"if_no": [
{
"id": "in-comment-closed",
"type": "comment",
"label": "Comment",
"comment_type": "inbox_closed",
"language": "auto",
"instructions": null
}
]
},
{
"id": "in-timer-followup",
"type": "timer",
"label": "Timer",
"duration": "3d"
},
{
"id": "in-dm-followup",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "follow_up",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-cleaner",
"type": "cleaner",
"label": "Cleaner",
"unfollow": true,
"delete_comments": true,
"delete_likes": true
}
]
},
"updated_at": "2026-11-06T07:45:12.904Z"
}Instellingen van een campagne bijwerken
Wijzigt de instellingen die je meestuurt en laat de rest staan. Een flow vervangt de hele flow, ook bij een lopende campagne. Behoud de ID's van de stappen die je houdt, dan blijven de leads die erop wachten daar staan, en de app verplaatst de andere.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Bodyparameters
- namestringDe naam van de campagne, maximaal 100 tekens.
- methodstring of nullAlleen leads die op deze manier zijn gevonden, komen erin,
nullvoor alle leads van de persona.followingkeywordscompetitor_followerscompetitor_comments - min_scoreintegerAlleen leads met minstens deze score komen erin, 0 tot 100.
- daily_limitintegerHet maximale aantal nieuwe leads dat er per dag in komt, 5 tot 150.
- lead_orderstringWelke leads er het eerst in komen.
highestvoor de hoogste score,lowestvoor de laagste,shufflevoor willekeurig ofnewestvoor de laatst gevonden.highestlowestshufflenewest - flowobjectDe nieuwe flow, volledig.
Resultaat
Het bijgewerkte object met campagne-instellingen.
Fouten
- Geen campagne 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.
- Je probeert de flow van een gearchiveerde campagne te wijzigen. Dupliceer de campagne in plaats daarvan.
curl -X PATCH \
https://gemlead.ai/api/v1/campaigns/c7RkQ2wLxe/settings \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"daily_limit": 80,
"min_score": 70
}'{
"object": "campaign_settings",
"campaign_id": "c7RkQ2wLxe",
"persona_id": "lvWBPnytpS",
"name": "Tipsters warm intro",
"status": "active",
"method": "keywords",
"min_score": 70,
"daily_limit": 80,
"lead_order": "newest",
"flow": {
"steps": [
{
"id": "in-like",
"type": "like",
"label": "Like",
"count": 1
},
{
"id": "in-follow",
"type": "follow",
"label": "Follow"
},
{
"id": "in-timer",
"type": "timer",
"label": "Timer",
"duration": "1d"
},
{
"id": "in-inbox",
"type": "can_dm",
"label": "Inbox opened test",
"if_yes": [
{
"id": "in-dm",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-comment-bridge",
"type": "comment",
"label": "Comment",
"comment_type": "bridge",
"language": "auto",
"instructions": null
}
],
"if_no": [
{
"id": "in-comment-closed",
"type": "comment",
"label": "Comment",
"comment_type": "inbox_closed",
"language": "auto",
"instructions": null
}
]
},
{
"id": "in-timer-followup",
"type": "timer",
"label": "Timer",
"duration": "3d"
},
{
"id": "in-dm-followup",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "follow_up",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-cleaner",
"type": "cleaner",
"label": "Cleaner",
"unfollow": true,
"delete_comments": true,
"delete_likes": true
}
]
},
"updated_at": "2026-11-06T07:45:12.904Z"
}Het flow-object
De stappen die een campagne voor elke lead doorloopt, op volgorde. Een splitsing voert if_yes of if_no uit en daarna de stappen die erop volgen. Een flow heeft maximaal 60 stappen, splitsingen gaan 2 niveaus diep en stap-ID's zijn uniek. Een stap accepteert alleen de opties van zijn type. Elke like, reactie, follow en DM gaat de deur uit vanaf je X-account. Het canvas in de app geeft de flow op dezelfde manier weer als zijn eigen templates.
Attributen
- stepsarray van objectsVerplichtDe stappen, op volgorde.
{
"steps": [
{
"id": "in-like",
"type": "like",
"label": "Like",
"count": 1
},
{
"id": "in-follow",
"type": "follow",
"label": "Follow"
},
{
"id": "in-timer",
"type": "timer",
"label": "Timer",
"duration": "1d"
},
{
"id": "in-inbox",
"type": "can_dm",
"label": "Inbox opened test",
"if_yes": [
{
"id": "in-dm",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-comment-bridge",
"type": "comment",
"label": "Comment",
"comment_type": "bridge",
"language": "auto",
"instructions": null
}
],
"if_no": [
{
"id": "in-comment-closed",
"type": "comment",
"label": "Comment",
"comment_type": "inbox_closed",
"language": "auto",
"instructions": null
}
]
},
{
"id": "in-timer-followup",
"type": "timer",
"label": "Timer",
"duration": "3d"
},
{
"id": "in-dm-followup",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "follow_up",
"language": "auto",
"instructions": null,
"template": null
},
{
"id": "in-cleaner",
"type": "cleaner",
"label": "Cleaner",
"unfollow": true,
"delete_comments": true,
"delete_likes": true
}
]
}Het campagnelead-object
Een lead in een campagne, de stap waar hij staat en wat de campagne voor hem plaatste.
Attributen
- objectstringAltijd
campaign_lead. - idstring of nullUnieke ID van de doorloop van de lead in deze campagne.
- campaign_idstringDe ID van de campagne.
- lead_idstring of nullDe ID van de lead.
- statusstringDe status van de lead in de campagne, zoals
waiting,replied,completedoffailed. - stepstring of nullHet label van de stap waar hij staat.
- entered_atstring of nullWanneer hij in de campagne kwam, in ISO 8601.
- leadobject of nullDe lead.
- postedobjectWat er voor deze lead is verstuurd.
{
"object": "campaign_lead",
"id": "cl9TzQ4wKa",
"campaign_id": "c7RkQ2wLxe",
"lead_id": "msgOtJ8dvT",
"status": "replied",
"step": "Direct message",
"entered_at": "2026-11-05T15:00:08.000Z",
"lead": {
"id": "msgOtJ8dvT",
"object": "lead",
"profile": {
"x_user_id": "1460283925",
"username": "jane_builds",
"name": "Jane Doe",
"bio": "Runs a paid trading community. Daily setups, no hype.",
"followers_count": 12400,
"following_count": 380,
"location": "Austin, TX",
"website": "https://janedoe.com",
"profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
"verified": true,
"url": "https://x.com/jane_builds"
},
"score": 86,
"score_reason": "Runs a paid trading community and asks how to collect payments for it.",
"hot": true,
"status": "scored",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"campaign": null,
"conversation_id": null,
"locked_to": null,
"found_at": "2026-11-05T14:02:11.482Z",
"scored_at": "2026-11-05T14:03:40.117Z",
"updated_at": "2026-11-05T14:03:40.117Z",
"metadata": {}
},
"posted": {
"comments": [],
"dms": [
{
"text": "Hey Jane, saw you want a real checkout for your picks. Want to see how others charge for their Discord?",
"message_id": "1985300011122233344",
"at": "2026-11-06T07:58:21.000Z"
}
]
}
}Leads van een campagne opvragen
Geeft de leads van een campagne terug op basis van waar ze in de flow staan, met wat de campagne bij elke lead heeft geplaatst.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Queryparameters
- stagestring
allzijn alle leads die erin kwamen.stepzijn de leads die de stapstep_idpasseerden,forkde leads die één tak ervan namen.dm_sent,replied,finishedvoor afgerond of beantwoord,completedvoor alle stappen doorlopen zonder antwoord. Standaardall.allstepforkdm_sentrepliedfinishedcompleted - step_idstringBij
stepoffork, de ID van de stap. - branchstringBij
fork, de tak.yesno - skippedbooleanBij
stepop een reactie- of DM-stap, de leads waarvoor die stap niets plaatste. - qstringZoek op naam of gebruikersnaam.
- 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 campagnelead-objecten, met total_count.
Fouten
- Geen campagne 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/campaigns/c7RkQ2wLxe/leads \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d stage=replied{
"object": "list",
"data": [
{
"object": "campaign_lead",
"id": "cl9TzQ4wKa",
"campaign_id": "c7RkQ2wLxe",
"lead_id": "msgOtJ8dvT",
"status": "replied",
"step": "Direct message",
"entered_at": "2026-11-05T15:00:08.000Z",
"lead": {
"id": "msgOtJ8dvT",
"object": "lead",
"profile": {
"x_user_id": "1460283925",
"username": "jane_builds",
"name": "Jane Doe",
"bio": "Runs a paid trading community. Daily setups, no hype.",
"followers_count": 12400,
"following_count": 380,
"location": "Austin, TX",
"website": "https://janedoe.com",
"profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
"verified": true,
"url": "https://x.com/jane_builds"
},
"score": 86,
"score_reason": "Runs a paid trading community and asks how to collect payments for it.",
"hot": true,
"status": "scored",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"campaign": null,
"conversation_id": null,
"locked_to": null,
"found_at": "2026-11-05T14:02:11.482Z",
"scored_at": "2026-11-05T14:03:40.117Z",
"updated_at": "2026-11-05T14:03:40.117Z",
"metadata": {}
},
"posted": {
"comments": [],
"dms": [
{
"text": "Hey Jane, saw you want a real checkout for your picks. Want to see how others charge for their Discord?",
"message_id": "1985300011122233344",
"at": "2026-11-06T07:58:21.000Z"
}
]
}
}
],
"has_more": true,
"next_cursor": "eyJzIjoiMjAyNi0xMS0wNVQxNDowMzo0MC4xMTdaIn0",
"total_count": 57
}Het object met campagnetrends
De activiteit van een campagne per dag over 14 dagen of per uur over 24 uur, zoals in de grafiek in de app.
Attributen
- objectstringAltijd
campaign_trends. - campaign_idstringDe ID van de campagne.
- rangestringDe periode.
14d24h - timezonestringDe tijdzone van de intervallen.
- bucketsarray van objectsEén per dag of per uur, elk met
keyen de gevraagde metrics. - totalsobjectSinds de start van de campagne, de
started,sent,repliesenfollows, metlast_sent_atenlast_reply_at. - truncatedboolean
trueals de campagne te groot is om volledig te tellen. - generated_atstringWanneer de cijfers zijn uitgelezen, in ISO 8601.
{
"object": "campaign_trends",
"campaign_id": "c7RkQ2wLxe",
"range": "14d",
"timezone": "Europe/Paris",
"buckets": [
{
"key": "2026-11-04",
"started": 48,
"sent": 22,
"replies": 3,
"follows": 9
},
{
"key": "2026-11-05",
"started": 50,
"sent": 25,
"replies": 4,
"follows": 11
},
{
"key": "2026-11-06",
"started": 21,
"sent": 9,
"replies": 1,
"follows": 4
}
],
"totals": {
"started": 640,
"sent": 412,
"replies": 57,
"follows": 133,
"last_sent_at": "2026-11-06T08:20:03.000Z",
"last_reply_at": "2026-11-06T08:12:44.000Z"
},
"truncated": false,
"generated_at": "2026-11-06T08:30:00.000Z"
}Trends van een campagne ophalen
Geeft de gestarte leads, verstuurde DM's, antwoorden en follows van een campagne terug, per dag over 14 dagen of per uur over 24 uur.
Padparameters
- campaign_idstringVerplichtDe ID van de campagne.
Queryparameters
- metricsstringEen of meer van
started,sent,repliesenfollows, gescheiden door komma's. Standaard alle vier.startedsentrepliesfollows - rangestring
14dper dag,24hper uur. Standaard14d.14d24h - timezonestringDe IANA-tijdzone van de intervallen, zoals
Europe/Paris. Standaard UTC.
Resultaat
Een object met campagnetrends.
Fouten
- Geen campagne 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/campaigns/c7RkQ2wLxe/trends \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d range=14d \
--data-urlencode "timezone=Europe/Paris"{
"object": "campaign_trends",
"campaign_id": "c7RkQ2wLxe",
"range": "14d",
"timezone": "Europe/Paris",
"buckets": [
{
"key": "2026-11-04",
"started": 48,
"sent": 22,
"replies": 3,
"follows": 9
},
{
"key": "2026-11-05",
"started": 50,
"sent": 25,
"replies": 4,
"follows": 11
},
{
"key": "2026-11-06",
"started": 21,
"sent": 9,
"replies": 1,
"follows": 4
}
],
"totals": {
"started": 640,
"sent": 412,
"replies": 57,
"follows": 133,
"last_sent_at": "2026-11-06T08:20:03.000Z",
"last_reply_at": "2026-11-06T08:12:44.000Z"
},
"truncated": false,
"generated_at": "2026-11-06T08:30:00.000Z"
}Het campagnetemplate-object
Een flow om een campagne mee te beginnen, zoals de app hem aanbiedt. De flow van elke template is een geldige flow voor Een campagne maken.
Attributen
- objectstringAltijd
campaign_template. - idstringDe ID van de template, voor de parameter
template.warm_upinstantdirect_messageblank - descriptionstringWat de flow doet, in een paar zinnen.
- defaultbooleanOf de app deze template kiest voor deze methode en markt.
- flowobjectDe flow van de campagne.
{
"object": "campaign_template",
"id": "direct_message",
"description": "Radar waits until they are online, then the message. No warm up.",
"default": false,
"flow": {
"steps": [
{
"id": "dm-snapshot",
"type": "snapshot",
"label": "Radar"
},
{
"id": "dm-send",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
}
]
}
}Campagnetemplates opvragen
Geeft de templates van de app terug met hun volledige flows, de beste referentie voor elk staptype en elke optie. De Warm-up-flow liket, reageert en volgt vóór de DM. De Directe flow doet dat meteen en stuurt een dag later de DM. Privébericht verstuurt alleen de DM.
Queryparameters
- methodstringDe methode van de campagne. De Directe flow past zich daaraan aan.
followingkeywordscompetitor_followerscompetitor_comments - marketstringDe markt van de persona. In
b2cverstuurt Privébericht de DM meteen, zonder Radar.b2bb2c
Resultaat
Een lijst van campagnetemplate-objecten.
Fouten
- Een parameter heeft een waarde die de API niet accepteert.
paramgeeft aan welke.
curl -G https://gemlead.ai/api/v1/campaign_templates \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d method=following \
-d market=b2b{
"object": "list",
"data": [
{
"object": "campaign_template",
"id": "direct_message",
"description": "Radar waits until they are online, then the message. No warm up.",
"default": false,
"flow": {
"steps": [
{
"id": "dm-snapshot",
"type": "snapshot",
"label": "Radar"
},
{
"id": "dm-send",
"type": "send_dm",
"label": "Direct message",
"mode": "ai",
"dm_kind": "cold",
"language": "auto",
"instructions": null,
"template": null
}
]
}
}
],
"has_more": false,
"next_cursor": null
}