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

  1. Im Dashboard öffnen: Einstellungen → REST-API
  2. Klick auf + Neuer Key, beschreibendes Label vergeben
  3. Den ausgegebenen Key (lck_live_…) sofort kopieren — wird nur einmal angezeigt
  4. Im Code als Authorization: Bearer lck_live_… mitgeben

🔑 Authentifizierung

Alle Requests benötigen einen Authorization-Header:

HTTP
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

limit1–200default 50
offset≥ 0Pagination, default 0
statusneu | kontaktiert | angebot | gewonnen | verlorenFilter
ampelheiss | mittel | infoFilter nach KI-Bewertung
sinceISO-Datum (z.B. 2026-05-01)Nur Leads ab Zeitpunkt

Beispiele

cURL

bash
curl -H "Authorization: Bearer lck_live_DEIN_KEY" \
  "https://leadcheck.packomedia.de/api/v1/leads?limit=20&ampel=heiss"

Node.js

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

py
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)

json
{
  "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:

json
{
  "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

401Bearer-Token fehlt oder ungültig
403Key hat keinen leads.read-Scope
429Rate-Limit (60 Requests/Minute pro Key)
500Datenbank-/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.