API Referenz

Integrieren Sie sich mit der Conzent Consent Management Plattform. Diese Endpunkte steuern das Einwilligungsbanner, die geolokalisierte Zielgruppenansprache, die Protokollierung der Einwilligungsprüfung und das Scannen von Cookies.

Basis-URL
https://your-instance.example.com

Alle Endpunkte sind relativ zu Ihrer selbst gehosteten Conzent-Instanz. Ersetzen Sie die Basis-URL durch Ihre tatsächliche Domain.

Authentifizierung

Die meisten Endpunkte sind öffentlich — sie werden vom Skript des Einwilligungsbanners auf den Browsern Ihrer Besucher aufgerufen.

Endpunkte, die Daten akzeptieren, verwenden einen Website-Schlüssel, um zu identifizieren, zu welcher Website die Anfrage gehört. Finden Sie Ihren Website-Schlüssel im Conzent-Dashboard unter Websites.

Scanner Webhook ist der einzige Endpunkt, der einen API-Schlüssel benötigt. Übergeben Sie ihn über den X-Api-Key Header. Der Schlüssel muss mit der SCANNER_WEBHOOK_SECRET Umgebungsvariable übereinstimmen.
Auth-MethodeVerwendet vonWie
KeineGesundheitscheck, GeolokalisierungKeine Authentifizierung erforderlich
Website-SchlüsselSeitenaufruf, Einwilligung, ScandatenÜbergeben Sie key im Anfragekörper
API-SchlüsselScan WebhookX-Api-Key Header

Antwortformat

API-Antworten verwenden zwei Formate, abhängig vom Endpunkt:

Standardantwort

Verwendet von Gesundheitscheck und Scan Webhook.

JSON
{
  "success": true,
  "data": {
    "status": "ok"
  }
}

Leichtgewichtige Antwort

Verwendet von Beacon-Endpunkten (Seitenaufruf, Einwilligung, Scandaten) für minimalen Overhead.

JSON
{
  "status": "ok"
}
Beacon-Endpunkte geben immer 200 zurück. Ungültige Anfragen geben {"status": "ignored"} mit HTTP 200 zurück, um Fehler in navigator.sendBeacon() zu vermeiden.
GET /health

Gesundheitscheck

Gibt den Gesundheitsstatus der Anwendung und der unterstützenden Dienste zurück. Verwenden Sie ihn zur Überwachung, für Lastenausgleichsprüfungen und Docker-Gesundheitsprüfungen.

Keine Authentifizierung

Antwort

200 OK
{
  "success": true,
  "data": {
    "status": "ok",
    "services": {
      "database": true,
      "redis": true
    },
    "environment": "production",
    "timestamp": "2026-03-16T12:00:00+00:00"
  }
}
503 — Degradierung
{
  "success": true,
  "data": {
    "status": "degraded",
    "services": {
      "database": true,
      "redis": false
    }
  }
}

Beispiel

curl
curl https://your-instance.example.com/health
GET /api/v1/geo_ip

Geolokalisierung

Gibt den Ländercode des Besuchers und den EU-Mitgliedsstatus zurück. Wird vom Einwilligungsskript verwendet, um geozielte Vorschriften anzuwenden (GDPR, CCPA).

Keine Authentifizierung Caching 1h CORS

Antwortfelder

FeldTypBeschreibung
countrystringISO 3166-1 alpha-2 Code (kleingeschrieben)
in_eubooleanOb das Land in der EU ist

Antwort

200 OK
{
  "country": "dk",
  "in_eu": true
}

Beispiel

curl
curl https://your-instance.example.com/api/v1/geo_ip
POST /api/v1/log

Seitenaufruf Beacon

Protokolliert Seitenaufrufe und Bannerladeereignisse. Wird über navigator.sendBeacon() als multipart/form-data gesendet. Erhöht den täglichen Seitenaufrufzähler und puffert Cookie-Beobachtungen für die asynchrone Verarbeitung.

Website-Schlüssel CORS

Anfragekörper multipart/form-data

ParameterTypErforderlichBeschreibung
keystringErforderlichIhr Website-Schlüssel
request_typestringErforderlichbanner_load oder banner_view
log_timeintegerOptionalUnix-Zeitstempel des Ereignisses
payloadJSON-StringOptionalObjekt mit consent_session_id, banner_id, url, cookies

Antwort

200 OK
{
  "status": "ok"
}

Beispiel

curl
curl -X POST https://your-instance.example.com/api/v1/log \
  -F "key=YOUR_WEBSITE_KEY" \
  -F "request_type=banner_load" \
  -F "log_time=$(date +%s)"
POST /api/v1/scan_data

Scan-Daten Beacon

Empfängt client-seitige Cookie-Scandaten. Das Einwilligungsskript erkennt Cookies im Browser des Besuchers und meldet sie zur automatischen Kategorisierung. Daten werden in Redis gepuffert und asynchron verarbeitet.

Website-Schlüssel 600 Anfragen/Min CORS

Anfragekörper multipart/form-data

ParameterTypErforderlichBeschreibung
keystringErforderlichIhr Website-Schlüssel
payloadJSON-StringErforderlichScan-Datenobjekt (siehe unten)

Payload-Struktur

payload (JSON-String)
{
  "scan_id": 123,
  "action": "runscan",
  "scan_url": "https://example.com/",
  "consent_phase": "pre_consent",
  "data": {
    "cookies": [
      { "name": "_ga", "domain": ".example.com" }
    ]
  }
}

Antwort

200 OK
{
  "status": "ok"
}

Beispiel

curl
curl -X POST https://your-instance.example.com/api/v1/scan_data \
  -F "key=YOUR_WEBSITE_KEY" \
  -F 'payload={"scan_id":123,"action":"runscan","scan_url":"https://example.com/"}'
POST /api/v1/scan-webhook

Scanner Webhook

Empfängt Scanergebnisse von externen Scanner-Servern, wenn ein Cookie-Scan abgeschlossen ist. Authentifiziert über den X-Api-Key Header, der mit der SCANNER_WEBHOOK_SECRET Umgebungsvariable übereinstimmen muss.

API-Schlüssel

Header

HeaderErforderlichBeschreibung
X-Api-KeyErforderlichMuss mit SCANNER_WEBHOOK_SECRET übereinstimmen
Content-TypeErforderlichapplication/json

Anfragekörper application/json

ParameterTypErforderlichBeschreibung
actionstringOptionalwebhook (Standard), runscan oder client_scan
scan_idintegerBedingtErforderlich für runscan / client_scan
scan_urlstringBedingtURL, die gescannt wurde
dataobjectOptionalScan-Ergebnisdaten (Cookies, Skripte)

Antwort

200 OK
{
  "success": true,
  "data": {
    "status": "processed"
  }
}

Fehler

401 Unauthorisiert
{
  "success": false,
  "error": "Unauthorized"
}

Beispiel

curl
curl -X POST https://your-instance.example.com/api/v1/scan-webhook \
  -H "X-Api-Key: YOUR_SCANNER_WEBHOOK_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "webhook",
    "scan_id": 456,
    "scan_url": "https://example.com/",
    "data": {
      "cookies": [
        {"name": "_ga", "domain": ".example.com", "category": "analytics"}
      ]
    }
  }'