İçeriğe atla
API-REFERENZ

RESTful API: Vollständige Dokumentation für Entwickler

Authentifizierung mit öffentlichem API-Key, JSON-Antworten, Rate-Limit 500 Anfragen/Min. Jeder Endpunkt ist mit cURL-, JavaScript- und PHP-Beispielen ausführlich dokumentiert.

Erste Schritte

Base URL und Authentication

Alle API-Aufrufe erfolgen über HTTPS über die untenstehende Base URL. HTTP-Anfragen werden per 301-Weiterleitung auf HTTPS umgeleitet.

Base URL

https://cerez.io/api/v1

OpenAPI-3.1-Spezifikation

Maschinenlesbare OpenAPI-3.1-Definition aller Endpunkte. Importierbar in Postman, Insomnia, Codegeneratoren und interaktive Clients.

openapi.json herunterladen

Authentifizierung: Öffentlicher API-Key

Die SDK-API verwendet einen öffentlichen API-Key: im URL-Pfad bei GET-Anfragen und im Anfragetext bei POST-Anfragen. Dieser Key wird vom SDK im Browser verwendet und ist daher clientseitig sichtbar, was normal ist. Der Authorization: Bearer-Header wird nicht verwendet. Ihren API-Key erhalten Sie im Admin-Panel > Installation.

curl https://cerez.io/api/v1/banner/YOUR_API_KEY
Sicherheit: Der Secret-Key wird bei diesen API-Aufrufen nicht verwendet und niemals clientseitig eingesetzt; er dient nur der Kontoverwaltung im Admin-Panel. Zur Zugriffsbeschränkung können Sie eine domainbezogene IP-Positivliste (CIDR) definieren.
POST

/api/v1/heartbeat

Erhöht den Pageview-Zähler und markiert die Domain als aktiv. Das SDK ruft diesen Endpoint einmal pro Seitenaufruf auf.

Body-Parameter

ParameterTypBeschreibung
api_keystringÖffentlicher API Key
session_idstringSession-ID (für eindeutiges Pageview-Tracking)
page_urlstringAktuelle Seiten-URL
referrerstringdocument.referrer-Wert (optional)

Antwort

{
  "success": true,
  "pageview_count_month": 42183,
  "plan_limit": 100000,
  "usage_percent": 42.18
}
SDK-API

Alle SDK-Endpunkte

Alle /api/v1-Endpunkte, die mit dem öffentlichen API-Key arbeiten. Das vollständige Anfrage- und Antwortschema jedes Endpunkts finden Sie in der maschinenlesbaren OpenAPI-3.1-Definition.

Cookies und Einwilligung

MethodeEndpointBeschreibung
GET/banner/{api_key}Banner-Konfiguration (Sprache, Theme, Kategorien)
POST/consent/logEinwilligungsprotokollierung (Fallback-Pfad: /consent-log)
GET/consent/state/{api_key}Serverseitige Einwilligungsabfrage (serverseitiges GTM)
GET/consent/group/{api_key}Domainübergreifende Einwilligungssynchronisierung
POST/preferencesSpeichern im universellen Präferenzzentrum

Barrierefreiheit

MethodeEndpointBeschreibung
GET/a11y/{api_key}Konfiguration des Barrierefreiheits-Widgets
GET/a11y/{api_key}/ai-labelsKI-generierte Alt-Text- und aria-label-Vorschläge
POST/a11y/feature-usedNutzungstelemetrie der Barrierefreiheitsfunktionen
POST/a11y/easy-readKI-Textvereinfachung (Leichte Lesbarkeit)
POST/a11y/ci-reportCI/CD-Barrierefreiheits-Gate-Bericht

TCF und Vendor List

MethodeEndpointBeschreibung
GET/tcf/{api_key}IAB-TCF-Konfiguration und GVL-Metadaten
GET/gvl.jsonGlobal Vendor List (24-Stunden-Edge-Cache)
GET/tcf-validator-testTCF-Validator-Testseite (HTML)

Telemetrie und System

MethodeEndpointBeschreibung
POST/heartbeatSeitenaufruf- und Lebenssignal
POST/interactionsInteraktionstelemetrie (gemäß KVKK standardmäßig aus)
POST/telemetryAnonyme SDK-Leistungsmetriken
GET/metaVersions- und Funktionserkennung (öffentlich, schreibgeschützt)

Antwort-Hüllen

Aus historischen Gründen verwenden SDK-Endpunkte unterschiedliche Antwort-Hüllen; diese Formen bleiben aus Gründen der Abwärtskompatibilität erhalten. Werten Sie Antworten gemäß der folgenden Tabelle aus.

HülleEndpunkte
{ ... } (ohne Hülle, direktes Objekt)GET /banner, GET /a11y, GET /tcf, GET /gvl.json
{ "status": "ok" }POST /consent/log, POST /heartbeat, POST /a11y/feature-used
{ "success": true }POST /preferences, POST /a11y/ci-report
{ "ok": true }POST /telemetry
{ "found": ... }GET /consent/state, GET /consent/group
{ "data": ..., "meta": ... }Alle Management-API-Endpunkte (/api/mgmt/v1)

API-Version

Die aktuellen API- und SDK-Versionen sowie TCF/GVL-Metadaten können Sie zur Laufzeit über den Endpunkt GET /api/v1/meta abrufen (öffentlich, schreibgeschützt).

GET /api/v1/meta

{
  "api_version": "1.0.0",
  "sdk_version": "2.6.2",
  "products": ["cookie", "accessibility"],
  "tcf": { "gvl_version": 123, "policy_version": 5 },
  "docs": "https://cerez.io/kaynaklar/api-referans"
}

OpenAPI-3.1-Spezifikation

Alle 18 SDK-Endpunkte in maschinenlesbarer Form (Postman-Import / Client-Generierung).

Management-API

Management-API (Server-zu-Server)

Eine separate API für programmatischen serverseitigen Zugriff. Die SDK-API (öffentlicher api_key) ist für Banner und Einwilligung; die Management-API ruft mit dem secret_key Ihre Domain-Daten ab (Cookie-Inventar, Einwilligungsdatensätze, Statistiken, Barrierefreiheits-Score). Schreibgeschützt.

Base URL

https://cerez.io/api/mgmt/v1

Authentifizierung: Bearer secret_key

Senden Sie Ihren Secret-Key im Authorization: Bearer-Header. Holen Sie den Secret-Key unter Admin-Panel > Installation > API und speichern Sie ihn NUR in einer sicheren Serverumgebung; setzen Sie ihn niemals clientseitig ein.

curl https://cerez.io/api/mgmt/v1/domain \
  -H "Authorization: Bearer YOUR_SECRET_KEY"
Alle erfolgreichen Antworten sind in { "data": ..., "meta": ... } verpackt. Fehler werden als RFC 9457 application/problem+json zurückgegeben. Rate-Limit: 60 Anfragen/Minute.

Endpunkte

MethodeEndpointBeschreibung
GET/domainTarif, Abonnement und Einstellungen
GET/cookiesCookie-Kategorien und gescannte Cookies
GET/stats?period=30Zustimmungs-/Ablehnungsrate, Geräteverteilung, Tagesreihe
GET/consents?from&to&cursorEinwilligungsdatensätze (cursor-paginiert, KVKK/DSGVO-Nachweis)
GET/a11y/scoreLetzter WCAG-Scan-Score und Verstoßverteilung
GET/consents/receipt?visitor_id=Einwilligungsnachweis für einen einzelnen Besucher (KVKK/DSGVO)
POST/scanCookie-Scan auslösen (synchron, bis zu 3 Seiten)
GET/scan/{id}Scan-Status und -Ergebnis
GET/webhooksWebhook-Liste (Secret maskiert)
POST/webhooksWebhook erstellen (url + events)
DELETE/webhooks/{id}Webhook löschen
POST/webhooks/{id}/testTestereignis senden
GET/dsar/export?visitor_id=Betroffenendaten exportieren (DSGVO Art. 15)
POST/dsar/erasureBetroffenendaten anonymisieren (zweistufig)

Erfolgreiche Antwort 200 OK

GET /api/mgmt/v1/domain

{
  "data": {
    "id": 42,
    "site_name": "Örnek",
    "domain_url": "https://example.com",
    "products": ["cookie", "accessibility"],
    "subscriptions": [
      { "product": "cookie", "plan_slug": "cookie_pro", "status": "active" }
    ],
    "settings": { "kvkk_enabled": true, "consent_expiry_days": 180 }
  },
  "meta": { "api": "mgmt/v1", "generated_at": "2026-06-30T12:00:00+00:00" }
}

Webhooks HMAC-SHA256

Bei niederfrequenten Ereignissen wird ein signierter POST an Ihre registrierten Endpunkte gesendet: scan.completed, cookies.new_found, scan.error. Einwilligungsereignisse mit hohem Volumen werden nicht per Webhook gesendet.

Beispiel-Payload und -Header

POST https://ornek.com/webhooks/cerez
X-Cerez-Event: scan.completed
X-Cerez-Timestamp: 1782475200
X-Cerez-Signature: sha256=3a7b...e0

{
  "event": "scan.completed",
  "created_at": "2026-06-30T12:00:00+00:00",
  "domain_id": 42,
  "data": { "total_cookies": 31, "new_cookies": 2 }
}

Signaturprüfung (Empfängerseite)

Die Signatur wird aus dem Zeitstempel und dem Rohtext abgeleitet. Prüfen Sie mit einem zeitkonstanten Vergleich und stellen Sie sicher, dass der Zeitstempel nicht älter als 5 Minuten ist (Replay-Schutz).

// Node.js
const crypto = require('crypto');
const expected = 'sha256=' + crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(timestamp + '.' + rawBody)
  .digest('hex');
const ok = crypto.timingSafeEqual(
  Buffer.from(expected), Buffer.from(signatureHeader)
);
// PHP
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
$ok = hash_equals($expected, $signatureHeader);

DSAR (Betroffenenanfragen) KVKK m.11 / GDPR m.15-17

Hilft Ihnen, auf Auskunfts- und Löschanfragen zu den Daten eines Besuchers zu reagieren. Löschung = Anonymisierung: direkte Identifikatoren (visitor_id, external_id, user_agent, region) werden entfernt; der Einwilligungsnachweis (Aktion, Kategorien, TCF-String, Zeitstempel) bleibt ERHALTEN. Sie überprüfen die Identität des Besuchers.

Die Anonymisierung erfolgt zweistufig (Schutz vor versehentlicher Löschung)

# 1. Önizleme (confirm_token yok) — hiçbir şey değişmez
curl -X POST https://cerez.io/api/mgmt/v1/dsar/erasure \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "visitor_id": "vis_a1b2c3" }'
# -> { "data": { "dry_run": true, "matched_count": 3, "confirm_token": "..." } }

# 2. Uygula (önizlemeden gelen confirm_token ile)
curl -X POST https://cerez.io/api/mgmt/v1/dsar/erasure \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "visitor_id": "vis_a1b2c3", "confirm_token": "..." }'
# -> { "data": { "dry_run": false, "affected_count": 3 } }

Ändert sich die Datensatzanzahl zwischen Vorschau und Anwendung, wird das Token ungültig (409). Zugriff und Löschung werden bei jedem erfolgreichen Aufruf im Audit-Protokoll erfasst. Dieses Werkzeug hilft Ihnen, Ihre Compliance-Pflichten zu erfüllen; wenden Sie sich für die rechtliche Gültigkeit an qualifizierten Rechtsbeistand.

OpenAPI-3.1-Spezifikation

Maschinenlesbare OpenAPI-3.1-Definition der Management-API (Postman/Codegen).

Management-API openapi.json
Rate Limiting

Anfragelimits

Wird pro IP-Adresse angewendet. Bei Überschreitung des Limits enthält die Antwort einen Header mit der Wartezeit.

500
Anfragen / Minute / IP
5 dk
Banner-Cache-Dauer
90 gün
API-Log-Aufbewahrungsdauer
Limit überschritten: Es wird ein 429 Too Many Requests zurückgegeben. Der Retry-After-Header gibt die Wartezeit in Sekunden an. Für Burst Protection wird Exponential Backoff (1s, 2s, 4s, 8s...) empfohlen. Für eine individuelle Rate-Limit-Erhöhung im Enterprise-Plan wenden Sie sich an das Vertriebsteam.
Fehlercodes

HTTP-Statuscodes

Code Beschreibung Typische Ursache
200 OK Anfrage erfolgreich
202 Accepted Akzeptiert (Telemetrie / Interaktion, asynchron)
304 Not Modified Nicht geändert (ETag; gvl.json)
402 Payment Required Aktives Abonnement erforderlich (Produkt deaktiviert)
403 Forbidden Außerhalb der IP-Whitelist oder Plan-Limit überschritten
404 Not Found API Key oder Ressource nicht gefunden
422 Unprocessable Validierungsfehler; prüfen Sie das errors-Feld in der Antwort
429 Too Many Requests Rate Limit überschritten (500/min)
502 Bad Gateway Upstream-Dienst (KI / Scan) vorübergehender Fehler
503 Service Unavailable Dienst vorübergehend nicht verfügbar; Retry-After

Fehlerantwort-Format

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key bulunamadı veya devre dışı",
    "details": { "field": "api_key" }
  }
}
Webhook

Ereignisbenachrichtigungen Live

Webhook-Unterstützung ist über die Management-API verfügbar. Bei niederfrequenten Ereignissen wird ein mit HMAC-SHA256 signierter POST an Ihren registrierten Endpunkt gesendet. Einrichtung und Signaturprüfung finden Sie im Abschnitt Management-API.

scan.completed

Wird ausgelöst, wenn ein Cookie-Scan abgeschlossen ist (Gesamt- und neue Cookie-Anzahl)

cookies.new_found

Wird ausgelöst, wenn beim Scan neue Cookies gefunden werden

scan.error

Wird ausgelöst, wenn ein Scan fehlschlägt

Häufige Fragen

Ihre offenen Fragen

Was ist der Unterschied zwischen SDK und API?
Kurze Antwort: Das SDK läuft im Browser und rendert das Banner automatisch. Die API ist für die Server-zu-Server-Integration konzipiert; sie wird in Szenarien wie eigenen Dashboards, mobilen Apps oder serverseitigem Consent-Logging eingesetzt. Die meisten Kunden nutzen nur das SDK.
Gibt es einen Batch-Endpoint?
Kurze Antwort: Derzeit gibt es keinen Batch-Endpoint. Der Endpoint POST /api/v1/consent/log ist für Einzelaufrufe gedacht. Batch-Unterstützung steht auf der Roadmap für Q4 2026.
Wie funktioniert die IP-Whitelist?
Kurze Antwort: Aktivieren Sie den IP-Restriction-Toggle unter Admin-Panel > Installation und tragen Sie die erlaubten IPs ein (CIDR-Notation wird unterstützt: 192.168.1.0/24). Anfragen außerhalb der Whitelist erhalten ein 403 Forbidden. SDK-Anfragen aus dem Browser werden immer akzeptiert.
Gibt es Webhook-Unterstützung?
Kurze Antwort: Ja. Webhooks sind über die Management-API verfügbar. Ereignisse werden als mit HMAC-SHA256 signierte POST-Anfragen gesendet; unterstützte Ereignistypen sind scan.completed, cookies.new_found und scan.error. Zur Einrichtung siehe den Abschnitt Management-API.
Was passiert, wenn das Rate Limit überschritten wird?
Kurze Antwort: Es wird ein 429 Too Many Requests zurückgegeben. Der Retry-After-Header gibt an, wie viele Sekunden Sie warten müssen. Für Burst Protection wird Exponential Backoff (1s, 2s, 4s, 8s...) empfohlen. Im Enterprise-Plan kann das Rate Limit erhöht werden.

Möchten Sie die API testen?

Holen Sie sich Ihren API Key mit einer 14-tägigen kostenlosen Pro-Testphase, kopieren Sie den Code und starten Sie sofort mit der Integration.

⚡ YASAL ZORUNLULUK 2025/10 Cumhurbaşkanlığı Genelgesi: Kamu, belediye, banka, üniversite, hastane, okullar için 21 Haziran 2026'ya WCAG 2.2 A zorunlu · Ceza: 5.000–25.000 TL/tespit