---
title: Web-SDK
---
# Web-SDK
Das Web-SDK unterstützt alle modernen Browser mit verschiedenen Integrationsmethoden.
::: tip In 30 Sekunden in Aktion sehen
[demo-v1.captcha.la](https://demo-v1.captcha.la) — reines HTML + PHP, MIT-lizenziert, Quelltext auf jeder Seite einsehbar.
- [popup.html](https://demo-v1.captcha.la/popup.html) — Popup-Modus
- [float.html](https://demo-v1.captcha.la/float.html) — schwebendes Widget
- [bind.html](https://demo-v1.captcha.la/bind.html) — an Button binden
- [inline.html](https://demo-v1.captcha.la/inline.html) — Inline-Einbettung
- [server-token.html](https://demo-v1.captcha.la/server-token.html) — servergenerierter Token (Anti-Replay)
:::
## Schnellstart
```html
```
## Installation
### CDN
```html
```
### NPM
```bash
npm install captchala
# or framework wrappers
npm install @captcha-la/vue
npm install @captcha-la/react
```
```js
import Captchala from 'captchala';
import 'captchala/dist/captchala.css';
```
## Modi
### Popup-Modus
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'popup', action: 'login' })
.bindTo('#login-btn')
.onSuccess(res => sendToBackend(res.token));
```
### Float-Modus
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'float', action: 'browse' })
.appendTo('#captcha-container')
.onSuccess(res => sendToBackend(res.token));
```
### Bind-Modus
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'bind', action: 'login' })
.bindTo('#submit-button')
.onSuccess(res => submitForm(res.token)); // fires only after challenge passes
```
### Embed-Modus
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'embed', action: 'register' })
.appendTo('#captcha-container')
.onSuccess(res => sendToBackend(res.token));
```
## Allgemeine Optionen
| Parameter | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `appKey` | string | — | Application Key (erforderlich) |
| `product` | string | `popup` | Anzeigemodus: popup | float | embed | bind |
| `action` | string | `default` | Business-Szene (z. B. login, register, pay). Der Server wendet je Szene unterschiedliche Sicherheitsrichtlinien an. |
| `lang` | string | `auto` | BCP-47-Tag (z. B. `en`, `ja`, `pt-BR`) oder `auto`, um `navigator.language` zu folgen. Siehe [Unterstützte Sprachen](/de/supported-languages) — 54 Locales. |
| `serverToken` | string | — | Einmal-Token (sct_xxx), der von Ihrem Server ausgestellt wird. In der Produktion dringend empfohlen — verhindert unbegrenzten Missbrauch durch Challenge-Refresh. |
| `onServerTokenExpired` | `() => Promise` | — | Wird aufgerufen, wenn der serverToken abläuft; geben Sie einen neuen zurück, damit das SDK den Flow unterbrechungsfrei fortsetzen kann. |
| `enableVoice` | boolean | `true` | Zeigt den Einstiegspunkt für das Audio-CAPTCHA an (Barrierefreiheit für sehbehinderte Nutzer). |
## Serverseitige Validierung
Senden Sie nach `onSuccess` den `res.token` (Präfix `pt_`) an Ihr eigenes Backend und validieren Sie ihn serverseitig:
```bash
POST https://apiv1.captcha.la/v1/validate
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/json
{ "pass_token": "" }
```
Siehe die [API-Referenz](/de/api-reference) für den vollständigen Validierungs-Endpoint.