REST-API · v1
LeadCheck API
Lese-Zugriff auf deine Leads via Bearer-Token-Authentifizierung. Ideal für eigene CRM-Anbindungen, Reporting-Tools oder No-Code-Workflows mit Make, Zapier, n8n.
🚀 Quickstart
- Im Dashboard öffnen: Einstellungen → REST-API
- Klick auf + Neuer Key, beschreibendes Label vergeben
- Den ausgegebenen Key (
lck_live_…) sofort kopieren — wird nur einmal angezeigt - Im Code als
Authorization: Bearer lck_live_…mitgeben
🔑 Authentifizierung
Alle Requests benötigen einen Authorization-Header:
Authorization: Bearer lck_live_xxxxxxxxxxxxxxxxxxxx
Der Key ist an einen Tenant gebunden. Bei kompromittiertem Key → im Dashboard widerrufen.
📥 GET /api/v1/leads
Liefert eine paginierte Liste der Leads des Tenants, neueste zuerst.
Query-Parameter
| limit | 1–200 | default 50 |
| offset | ≥ 0 | Pagination, default 0 |
| status | neu | kontaktiert | angebot | gewonnen | verloren | Filter |
| ampel | heiss | mittel | info | Filter nach KI-Bewertung |
| since | ISO-Datum (z.B. 2026-05-01) | Nur Leads ab Zeitpunkt |
Beispiele
cURL
curl -H "Authorization: Bearer lck_live_DEIN_KEY" \ "https://leadcheck.packomedia.de/api/v1/leads?limit=20&el=heiss"
Node.js
const res = await fetch("https://leadcheck.packomedia.de/api/v1/leads?limit=20", {
headers: { Authorization: "Bearer lck_live_DEIN_KEY" },
});
const { leads, total } = await res.json();
console.log(`${total} Leads insgesamt`);Python
import requests
res = requests.get(
"https://leadcheck.packomedia.de/api/v1/leads",
headers={"Authorization": "Bearer lck_live_DEIN_KEY"},
params={"limit": 20, "ampel": "heiss"},
)
data = res.json()
print(f"{data['total']} Leads")Antwort (200)
{
"leads": [
{
"id": "uuid",
"timestamp": "2026-05-14T10:30:00Z",
"name": "Max Mustermann",
"email": "max@example.com",
"telefon": "+49 170 1234567",
"plz": "10115",
"ort": "Berlin",
"score": 85,
"ampel": "heiss",
"status": "neu",
"geschaetzterauftragswert": 12500,
"kundenzusammenfassung": "…",
"naechsterschritt": "…",
"tags": ["vor-Ort-Termin"],
"utmsource": "google",
"utmmedium": "cpc",
"utmcampaign": "winter-2026"
}
],
"total": 142,
"limit": 20,
"offset": 0
}🪝 Webhooks (Push statt Pull)
Alternativ kannst du im Dashboard eine Webhook-URL hinterlegen. Bei jedem neuen Lead wird ein POST mit folgendem JSON-Payload an die URL gesendet:
{
"event": "lead.created",
"tenant": { "id": "uuid", "slug": "musterbau" },
"lead": {
"id": "uuid",
"name": "Max Mustermann",
"email": "max@example.com",
"telefon": "+49 170 1234567",
"plz": "10115",
"ort": "Berlin",
"score": 85,
"ampel": "heiss",
"kundenzusammenfassung": "…",
"einsparpotenzial": "…",
"geschaetzterAuftragswert": 12500,
"naechsterSchritt": "…",
"industry": "energie",
"utm": { "source": "google", "medium": "cpc", "campaign": "winter-2026" }
},
"timestamp": "2026-05-14T10:30:00Z"
}Retry-Verhalten: 3 Versuche mit Backoff bei 5xx oder Netzwerkfehler. 4xx-Antworten werden nicht erneut versucht. Status sichtbar unter Einstellungen → Webhook.
⚠️ Fehler-Codes
| 401 | Bearer-Token fehlt oder ungültig |
| 403 | Key hat keinen leads.read-Scope |
| 429 | Rate-Limit (60 Requests/Minute pro Key) |
| 500 | Datenbank-/Serverfehler |
⏱️ Rate-Limits
- 60 Requests / Minute pro API-Key
- Bei Überschreitung: HTTP 429 — eine Minute warten
- Keine harten Tages-/Monats-Limits
📅 Versionierung
Die API ist als v1 gekennzeichnet. Breaking Changes erscheinen unter neuer Version (/api/v2/…). Bestehende Versionen bleiben mindestens 12 Monate aktiv.
Fragen? Probleme? Schreib uns an info@packomedia.de.