REST-API v1

Lead-Import API-Dokumentation

Übertragen Sie Leads in Echtzeit an das Anfragekraft-CRM. Einfache REST-API, X-API-KEY-Authentifizierung, Interlead-kompatibles Feldschema.

Einführung

Überblick

Über die Anfragekraft Partner-API können Sie als Lead-Lieferant Datensätze in Echtzeit an unser CRM übertragen. Jeder Lead durchläuft automatisch Adress-Geocoding, Dublettenprüfung und wird anschließend nach unserem Regelwerk an passende Vertriebspartner ausgeliefert.

  • Echtzeit-Ingest via HTTPS
  • HMAC-signierte Webhooks bei Statusänderung
  • JSON-Body, bis zu 500 Leads pro Request
  • TLS 1.2+, DSGVO-konforme Verarbeitung
API-Key

Authentifizierung

Jeder Request muss mit einem API-Key authentifiziert werden. Sie erhalten Ihren persönlichen Key nach Freischaltung im CRM-Bereich API-Quellen. Der Key ist geheim — behandeln Sie ihn wie ein Passwort und geben Sie ihn niemals in Frontend-Code weiter.

X-API-KEY

Empfohlener Standard-Header.

x-api-key

Kleinbuchstaben-Variante wird ebenfalls akzeptiert.

Authorization: Bearer

Alternativ als Bearer-Token.

curl -X POST https://app.anfragekraft.de/api/public/leads/ingest \
  -H "X-API-KEY: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"leads":[{"lastname":"Mustermann","zipcode":"10115","phone":"+491701234567"}]}'
Ungültige oder deaktivierte Keys liefern HTTP 401. Rate-Limit: 60 Requests/Minute pro Key.
Vor der Live-Schaltung

Sandbox (Testebene)

Testen Sie Ihre Integration zuerst in der Sandbox. Endpoint, Feldschema und Antwortstruktur sind identisch zum Live-Betrieb — entscheidend ist allein der verwendete API-Key.

lk_test_… (Sandbox)

Validierung, Mapping und Dublettenlogik laufen vollständig — es wird nichts gespeichert und nichts ausgeliefert. Antwort: mode: sandbox, test: true, Lead-Nummern AK-TEST-000001.

lk_live_… (Live)

Lead wird gespeichert, dedupliziert, geocodiert und ausgeliefert. Antwort: mode: live mit echter Lead-Nummer AK-2026-000123.

curl -X POST https://app.anfragekraft.de/api/public/leads/ingest \
  -H "X-API-KEY: lk_test_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"leads":[{"external_id":"LX-1001","lastname":"Mustermann","email":"max@example.com","phone":"+491701234567","zipcode":"10115"}]}'
Sandbox-Abrufe beeinflussen weder Abrechnung noch Statistiken. Solange Ihr Live-Zugang nicht freigeschaltet ist, antwortet der Live-Key mit HTTP 401. Nach erfolgreichem Test tauschen Sie lediglich den Key aus.
POST /api/public/leads/ingest

Endpoint

POSThttps://app.anfragekraft.de/api/public/leads/ingest

Nimmt einen einzelnen Lead oder ein Array von bis zu 500 Leads entgegen. Antwort enthält je Lead ein Ergebnis-Objekt (accepted, duplicate, rejected, error).

Request-Body

Entweder ein einzelnes Lead-Objekt, ein Array oder { "leads": [...] }.

{
  "leads": [
    {
      "salutation": "Herr",
      "first_name": "Max",
      "last_name": "Mustermann",
      "email": "max@example.com",
      "phone": "+491701234567",
      "street": "Musterstraße",
      "house_no": "12",
      "zip": "10115",
      "city": "Berlin",
      "country": "DE",
      "vertical": "energie",
      "source": "partner-xyz",
      "notes": "Interessiert an PV-Anlage"
    }
  ]
}
Schema

Feld-Mapping

Wir akzeptieren unser eigenes Feld-Schema sowie das Interlead-Feldschema. Alias-Felder werden automatisch auf unser internes Schema gemappt.

FeldAliase (auch akzeptiert)TypPflicht
last_namelastname, nachname, surnamestringJa
emailemail, e_mail, mailstringJa
phonephone, mobile, mobil, telefon, telstring (E.164)Ja
salutationanrede, genderstringoptional
first_namefirstname, vorname, given_namestringoptional
streetstrasse, straße, streetnamestringoptional
house_nohousenumber, hausnummer, hnrstringoptional
zipzipcode, postcode, postal_code, plzstringoptional
cityort, stadt, townstringoptional
countryland, country_codeISO-3166-α2optional
verticalbranche, campaign, kampagne, productstringoptional
sourcequelle, partner, supplierstringoptional
notesnotiz, kommentar, comment, messagestringoptional
external_idlead_id, supplier_id, supplier_ref, provider_lead_id, partner_lead_id, ref, reference, referenz, idstringoptional

Mindestens eines der Pflichtfelder (last_name, email, phone) muss gesetzt sein — sonst wird der Lead abgelehnt.

Statuscodes & Payload

Response

200OK — verarbeitet
400Ungültiges JSON / Batch-Grenze
401Kein/Ungültiger API-Key
429Rate Limit erreicht
{
  "ok": true,
  "import_id": "b6d1…",
  "total": 3,
  "accepted": 2,
  "duplicates": 1,
  "rejected": 0,
  "results": [
    {
      "index": 0,
      "status": "accepted",
      "id": "8f2c…"
    },
    {
      "index": 1,
      "status": "duplicate",
      "id": "1a9e…"
    },
    {
      "index": 2,
      "status": "accepted",
      "id": "44b7…"
    }
  ]
}
Bestätigung

Lieferbestätigung der Leads

Jede erfolgreiche Übertragung wird verbindlich quittiert. Sie erhalten synchron in der HTTP-Antwort zu jedem Lead unsere Lead-Nummer zurück, gespiegelt an Ihrer eigenen ID — damit ist die Lieferung eindeutig bestätigt und beidseitig zuordenbar.

FeldBedeutung
confirmedtrue, sobald der Request verarbeitet wurde (Lieferbestätigung auf Request-Ebene).
received_atZeitstempel des Eingangs (ISO-8601, UTC).
lead_no / lead_idUnsere Lead-Nummer, z. B. AK-2026-000123 (Sandbox: AK-TEST-000001).
lead_uuidInterne technische ID des Leads.
supplier_lead_idIhre übergebene external_id — zurückgespiegelt.
receivedtrue je Lead: Datensatz angenommen und quittiert.
statusaccepted, duplicate, rejected oder error.
confirmationsKompakte Zuordnungsliste: Ihre ID → unsere Lead-Nummer.
{
  "ok": true,
  "confirmed": true,
  "mode": "live",
  "received_at": "2026-08-02T09:14:22.481Z",
  "import_id": "b6d1…",
  "total": 3,
  "accepted": 2,
  "duplicates": 1,
  "rejected": 0,
  "results": [
    {
      "index": 0,
      "status": "accepted",
      "received": true,
      "lead_no": "AK-2026-000123",
      "lead_id": "AK-2026-000123",
      "lead_uuid": "8f2c…",
      "supplier_lead_id": "LX-1001"
    },
    {
      "index": 1,
      "status": "duplicate",
      "received": true,
      "lead_no": "AK-2026-000124",
      "supplier_lead_id": "LX-1002",
      "duplicate_of": "0b3f…"
    },
    {
      "index": 2,
      "status": "accepted",
      "received": true,
      "lead_no": "AK-2026-000125",
      "supplier_lead_id": "LX-1003"
    }
  ],
  "confirmations": [
    {
      "supplier_lead_id": "LX-1001",
      "lead_no": "AK-2026-000123"
    },
    {
      "supplier_lead_id": "LX-1002",
      "lead_no": "AK-2026-000124"
    },
    {
      "supplier_lead_id": "LX-1003",
      "lead_no": "AK-2026-000125"
    }
  ]
}
Speichern Sie lead_no zu Ihrer eigenen ID: Nur diese Nummer verwenden wir in Statistik-Abgleich, Retouren und Support — und ausschließlich sie wird an die belieferten Unternehmen übermittelt. Bleibt die Antwort aus (Timeout), wiederholen Sie den Request mit identischer external_id — die Dublettenprüfung verhindert eine Doppel-Erfassung.
Integration

Code-Beispiele

curl -X POST https://app.anfragekraft.de/api/public/leads/ingest \
  -H "X-API-KEY: $ANFRAGEKRAFT_KEY" \
  -H "Content-Type: application/json" \
  -d @lead.json
Datenqualität

Dublettenprüfung

Jeder Lead wird über einen SHA-256-Hash aus normalisierter Telefonnummer, E-Mail sowie Straße/Hausnummer/PLZ auf Dubletten geprüft. Existiert bereits ein Lead mit gleichem Hash, wird der neue Datensatz als duplicate markiert, gespeichert (mit Referenz auf das Original) und nicht weiter ausgeliefert.

Optional

Status-Webhooks

Auf Wunsch senden wir Statusänderungen (z. B. delivered, returned) per HMAC-signierten Webhook an eine URL Ihrer Wahl. Die Signatur liegt im HeaderX-Anfragekraft-Signature als Hex-HMAC-SHA256 über den raw-Body.

Aktivierung im CRM unter API-Quellen → Webhook.

Sie möchten Leads liefern?

Wir richten Ihren API-Zugang innerhalb von 24 Stunden ein.

API-Zugang anfragen