Einstieg

Site anlegen, Widget einbauen, Token prüfen — der kürzeste Weg zum funktionierenden Schutz.

Auf dieser Seite

Dokumentation

CaptchaCore in 5 Minuten in dein Projekt integrieren.

1 Site & Keys erstellen

  1. Login unter /admin
  2. Unter Sites eine neue Site anlegen (Name + Domain)
  3. Unter API-Keys ein Key-Paar generieren
  4. Den cc_pub_... (public) und cc_sec_... (secret) Key sicher speichern

2 Widget einbinden (Frontend)

Der public key (cc_pub_) wird im Browser verwendet.

<!-- In deinem HTML, vor </body> -->
<script src="https://src-eu.captchacore.eu/widget/captchacore-v2.min.js"
        data-service-url="https://api.captchacore.eu"
        data-site-key="cc_pub_DEIN_KEY"
        async defer></script>

<!-- Formular mit CaptchaCore -->
<form data-captchacore="interactive" method="post">
    <!-- Deine Formularfelder -->
    <div data-captchacore-widget></div>
    <button type="submit">Absenden</button>
</form>

3 Token verifizieren (Backend)

Der secret key (cc_sec_) wird serverseitig verwendet.

POST https://api.captchacore.eu/api/v2/verify
Header: X-CaptchaCore-Key: cc_sec_DEIN_SECRET

Body:
{
    "token":     "<captchacore_token aus dem Formular>",
    "form_type": "register"
}

Response:
{
    "valid":      true,
    "decision":   "allow",        // allow | challenge | step_up | block
    "risk_score": 8,
    "confidence": 0.94,           // 0.0–1.0 Signalabdeckung
    "reasons":    ["pow_valid", "behavior_human_like", "ip_clean"],
    "step_up":    null             // Step-Up-Challenge falls noetig
}

HTML Integration

Für statische Seiten, PHP-Projekte, Node.js oder jedes andere Backend.

Frontend

Das Widget wird automatisch an alle Formulare mit data-captchacore Attribut angeheftet. Es fügt ein verstecktes captchacore_token Input-Feld ein.

Backend (beliebige Sprache)

# curl Beispiel
curl -X POST https://api.captchacore.eu/api/v2/verify \
  -H "X-CaptchaCore-Key: cc_sec_DEIN_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_AUS_FORMULAR","form_type":"contact"}'

# Antwort prüfen: valid=true UND action != "block"