Met de REST API lees je leads, LinkedIn-gesprekken, campagnes, agents en open vragen uit je werkruimte, en zet je een antwoord in een LinkedIn-gesprek klaar. De API is bedoeld voor verkeer van server naar server, bijvoorbeeld vanuit je CRM, een script of een koppeling in Zapier of Make. Antwoorden hebben bewust geen CORS-header, dus een aanroep vanuit de browser van een bezoeker werkt niet.
Basisadres
https://leadforge.nl/api/v1
Elk verzoek stuurt een API-sleutel mee in de header Authorization. Hoe dat werkt staat in Authenticatie.
Je eerste aanroep
De eenvoudigste aanroep is GET /api/v1/me. Die laat zien bij welke werkruimte je sleutel hoort en welke rechten hij heeft. Vervang LF_LIVE_SLEUTEL door je eigen sleutel.
curl https://leadforge.nl/api/v1/me \
-H "Authorization: Bearer LF_LIVE_SLEUTEL"
const antwoord = await fetch('https://leadforge.nl/api/v1/me', {
headers: { Authorization: 'Bearer LF_LIVE_SLEUTEL' }
});
const gegevens = await antwoord.json();
console.log(antwoord.status, gegevens);
import json
import urllib.request
verzoek = urllib.request.Request(
"https://leadforge.nl/api/v1/me",
headers={"Authorization": "Bearer LF_LIVE_SLEUTEL"},
)
with urllib.request.urlopen(verzoek) as antwoord:
print(antwoord.status, json.load(antwoord))
Is de sleutel geldig, dan krijg je status 200 en een antwoord als dit:
{
"client": {
"id": "<werkruimte-id>",
"name": "Klant A"
},
"scopes": ["read"]
}
Krijg je een 401, dan is de sleutel onbekend, ingetrokken of niet goed meegestuurd. Zie Fouten.
Opbouw van antwoorden
Elk antwoord is JSON. Er zijn drie vormen.
Eén object
Een enkel object staat onder data, zoals bij GET /api/v1/leads/{id}:
{
"data": {
"id": "<lead-id>",
"firstName": "Anna",
"events": []
}
}
Een lijst
Een lijst zonder paginering, zoals agents, campaigns en modules, staat als array onder data. Een lijst met paginering, zoals leads, conversations en content-gaps, heeft daarnaast hasMore en nextCursor:
{
"data": [
{ "id": "<id>", "...": "..." }
],
"hasMore": true,
"nextCursor": "<id van de laatste rij>"
}
Hoe je doorbladert staat in Paginering en filters.
Uitzondering: /me
GET /api/v1/me heeft geen data-omhulsel. De velden client en scopes staan direct in het antwoord.
Fouten
Een fout heeft altijd de vorm {"error":{"message":"...","code":"..."}}. Alle codes staan in Fouten.
Goed om te weten
status en pipelineStage van een lead komen in het Nederlands terug, bijvoorbeeld nieuw of geinteresseerd. Zie Leads.Endpoints
| Methode | Pad | Rechten |
|---|---|---|
GET | /api/v1/me | read |
GET | /api/v1/leads | read |
GET | /api/v1/leads/{id} | read |
GET | /api/v1/conversations | read |
GET | /api/v1/conversations/{id} | read |
POST | /api/v1/conversations/{id}/reply | write |
GET | /api/v1/agents | read |
GET | /api/v1/campaigns | read |
GET | /api/v1/content-gaps | read |
GET | /api/v1/modules | read |
Headers in elk antwoord
content-type: application/jsonx-frame-options: DENY
Er gaat geen access-control-allow-origin mee.
Verder lezen
- Authenticatie
- Limieten
- Webhooks: gebeurtenissen ontvangen in plaats van ze op te vragen