Naar de inhoud

Conversations

LinkedIn-gesprekken ophalen en een antwoord in de wachtrij zetten.

Een conversation is een LinkedIn-gesprek met een prospect, zoals je het ook in de Inbox ziet. Met de API lees je gesprekken en hun berichten, en zet je een antwoord klaar dat LeadForge daarna via LinkedIn verstuurt. Alleen LinkedIn-gesprekken komen mee.

Gesprekken ophalen

GET https://leadforge.nl/api/v1/conversations

Vraagt read

LinkedIn-gesprekken van je werkruimte, met het laatste bericht eerst.

Queryparameters

NaamTypeStandaardBeschrijving
limitgetal50Aantal gesprekken per pagina, hoogstens 200.
cursortekstDe nextCursor van de vorige pagina.
sincedatumAlleen gesprekken met lastMessageAt vanaf dit moment, als ISO-datum. Een ongeldige datum wordt genegeerd.
labeltekstAlleen gesprekken met precies dit label. Zie de waarden hieronder.

De lijst staat op lastMessageAt, laatste eerst. Hoe je doorbladert staat in Paginering en filters.

curl
curl "https://leadforge.nl/api/v1/conversations?label=interested&limit=50" \
  -H "Authorization: Bearer LF_LIVE_SLEUTEL"
JSON Antwoord 200
{
	"data": [
		{
			"id": "<gesprek-id>",
			"name": "Anna Jansen",
			"profileUrl": "https://www.linkedin.com/in/voorbeeld",
			"threadUrl": null,
			"label": "interested",
			"unread": true,
			"lastInbound": true,
			"lastMessageAt": "2026-11-05T13:40:00.000Z",
			"lastSnippet": "Klinkt goed, kun je volgende week bellen?",
			"aiIntent": null,
			"leadId": "<lead-id>",
			"createdAt": "2026-11-02T09:14:00.000Z"
		}
	],
	"hasMore": false,
	"nextCursor": null
}

Velden van een gesprek

Velden

NaamTypeBeschrijving
idtekst (uuid)Het id van het gesprek.
nametekst of nullDe naam van de prospect, anders het onderwerp van het gesprek.
profileUrltekst of nullAdres van het LinkedIn-profiel van de prospect.
threadUrltekst of nullAdres van het gesprek op LinkedIn, als dat bekend is.
labeltekst of nullHet label van het gesprek. Zie hieronder.
unreadbooleanOf het gesprek ongelezen is.
lastInboundboolean of nullOf het laatste bericht van de prospect kwam.
lastMessageAtdatum (ISO) of nullWanneer het laatste bericht is verstuurd.
lastSnippettekst of nullHet begin van het laatste bericht.
aiIntenttekst of nullDe bedoeling van het gesprek volgens de AI, als die is vastgesteld.
leadIdtekst (uuid) of nullDe lead bij dit gesprek, als die er is.
createdAtdatum (ISO)Wanneer het gesprek in LeadForge is aangemaakt.

Labelwaarden

WaardeIn de app
newNieuw
interestedInteresse
meetingAfspraak
not_nowLater
not_interestedGeen interesse
doneAfgerond

Goed om te weten

Een gesprek zonder label staat in de app als Nieuw, maar de API geeft dan null. Een filter op label=new vindt alleen gesprekken die echt het label new hebben.

Eén gesprek ophalen

GET https://leadforge.nl/api/v1/conversations/{id}

Vraagt read

Eén LinkedIn-gesprek met zijn berichten.

Padparameters

NaamTypeBeschrijving
id*(verplicht)tekst (uuid)Het id van het gesprek.

* verplicht

Het antwoord heeft alle velden van een gesprek en daarnaast messages: hoogstens 200 berichten, oudste eerst.

Velden

NaamTypeBeschrijving
messages[].idtekst (uuid)Het id van het bericht.
messages[].directiontekstinbound voor een bericht van de prospect, outbound voor een bericht van jouw kant.
messages[].texttekstDe tekst van het bericht.
messages[].sentAtdatum (ISO)Wanneer het bericht is verstuurd. Bij een antwoord dat je zelf klaarzette is dat het moment van klaarzetten.
JSON Antwoord 200
{
	"data": {
		"id": "<gesprek-id>",
		"name": "Anna Jansen",
		"...": "alle velden van een gesprek",
		"messages": [
			{
				"id": "<bericht-id>",
				"direction": "outbound",
				"text": "Hoi Anna, dank voor je reactie.",
				"sentAt": "2026-11-04T10:02:00.000Z"
			},
			{
				"id": "<bericht-id>",
				"direction": "inbound",
				"text": "Klinkt goed, kun je volgende week bellen?",
				"sentAt": "2026-11-05T13:40:00.000Z"
			}
		]
	}
}
StatusCodeWanneer
200Het gesprek met zijn berichten.
404not_foundGesprek niet gevonden. Het id bestaat niet in je werkruimte, is geen LinkedIn-gesprek of is geen geldig id.
401unauthorizedGeen geldige sleutel.
403forbiddenDe sleutel heeft geen read, of hoort niet bij één werkruimte.
429rate_limitedMeer dan 120 verzoeken per minuut.

Een antwoord versturen

POST https://leadforge.nl/api/v1/conversations/{id}/reply

Vraagt write

Een antwoord in een LinkedIn-gesprek in de wachtrij zetten.

De API verstuurt niet zelf

Dit adres zet het bericht in de wachtrij. LeadForge verstuurt het daarna via LinkedIn, met de Chrome-extensie of de achtergronddienst, binnen het verzendvenster en de daglimiet van het account. Een 201 betekent dus dat het bericht klaarstaat, niet dat het al bij de prospect is. Zie Limieten en veiligheid.

Padparameters

NaamTypeBeschrijving
id*(verplicht)tekst (uuid)Het id van het gesprek.

* verplicht

Body

NaamTypeBeschrijving
message*(verplicht)tekstDe tekst van het antwoord, hoogstens 1000 tekens. Spaties aan het begin en eind worden weggehaald.

* verplicht

Verzoek
curl -X POST https://leadforge.nl/api/v1/conversations/<gesprek-id>/reply \
  -H "Authorization: Bearer LF_LIVE_SLEUTEL" \
  -H "Content-Type: application/json" \
  -d '{"message": "Dank je, ik bel je dinsdag om 10 uur."}'
JSON Antwoord 201
{
	"data": {
		"jobId": "<taak-id>",
		"status": "queued"
	}
}

Volgorde van fouten

De API controleert in deze volgorde. De eerste controle die faalt bepaalt het antwoord.

StatusCodeWanneer
401unauthorizedGeen geldige sleutel.
403forbiddenDeze sleutel heeft geen 'write'-rechten, of hoort niet bij één werkruimte.
429rate_limitedMeer dan 120 verzoeken per minuut.
400emptyBericht is leeg: message ontbreekt, is leeg of de body is geen geldige JSON.
404not_foundGesprek niet gevonden: het id bestaat niet in je werkruimte of is geen LinkedIn-gesprek.
400too_longMaximaal 1000 tekens.
404not_foundLinkedIn-account niet gevonden: er hangt geen gekoppeld LinkedIn-account aan het gesprek.
409pausedHet LinkedIn-account is gepauzeerd. De melding geeft de reden, of: Je LinkedIn-account is gepauzeerd, vernieuw je sessie op 'LinkedIn koppelen'.
409duplicateEr staat al een antwoord klaar voor dit gesprek. Wacht tot dat antwoord verstuurd is.
201Het antwoord staat in de wachtrij.

Een GET op dit adres geeft 405 zonder body.

Wat er gebeurt na een 201

  • Het antwoord staat meteen als uitgaand bericht in het gesprek, ook in de app. Het krijgt als sentAt het moment van klaarzetten, ook al is het dan nog niet verstuurd.
  • Het gesprek staat op gelezen (unread wordt false) en lastInbound wordt false.
  • De webhook conversation.reply_sent gaat uit met via: "api".

Bij een paused: vernieuw de LinkedIn-sessie. Zie LinkedIn koppelen.

Verder lezen