---
title: SDK Web
---
# SDK Web
O SDK Web é compatível com todos os navegadores modernos e oferece vários métodos de integração.
::: tip Veja funcionar em 30 segundos
[demo-v1.captcha.la](https://demo-v1.captcha.la) — HTML + PHP puro, licença MIT, com view-source em todas as páginas.
- [popup.html](https://demo-v1.captcha.la/popup.html) — modo popup
- [float.html](https://demo-v1.captcha.la/float.html) — widget flutuante
- [bind.html](https://demo-v1.captcha.la/bind.html) — vinculado a botão
- [inline.html](https://demo-v1.captcha.la/inline.html) — incorporado inline
- [server-token.html](https://demo-v1.captcha.la/server-token.html) — token emitido pelo servidor (anti-replay)
:::
## Início rápido
```html
```
## Instalação
### 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';
```
## Modos
### Modo Popup
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'popup', action: 'login' })
.bindTo('#login-btn')
.onSuccess(res => sendToBackend(res.token));
```
### Modo Float
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'float', action: 'browse' })
.appendTo('#captcha-container')
.onSuccess(res => sendToBackend(res.token));
```
### Modo Bind
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'bind', action: 'login' })
.bindTo('#submit-button')
.onSuccess(res => submitForm(res.token)); // fires only after challenge passes
```
### Modo Embed
```js
Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'embed', action: 'register' })
.appendTo('#captcha-container')
.onSuccess(res => sendToBackend(res.token));
```
## Opções comuns
| Parâmetro | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `appKey` | string | — | Application Key (obrigatório) |
| `product` | string | `popup` | Modo de exibição: popup | float | embed | bind |
| `action` | string | `default` | Cenário de negócio (ex.: login, register, pay). O servidor aplica políticas de segurança diferentes por cenário. |
| `lang` | string | `auto` | Tag BCP-47 (ex.: `en`, `ja`, `pt-BR`) ou `auto` para seguir `navigator.language`. Veja [Idiomas suportados](/pt-BR/supported-languages) — 54 locales. |
| `serverToken` | string | — | Token de uso único (sct_xxx) emitido pelo seu servidor. Fortemente recomendado em produção — impede o abuso de atualização ilimitada de desafios. |
| `onServerTokenExpired` | `() => Promise` | — | Chamado quando o serverToken expira; retorne um novo para que o SDK continue sem interromper o fluxo. |
| `enableVoice` | boolean | `true` | Mostra o ponto de entrada do CAPTCHA por áudio (suporte de acessibilidade para usuários com deficiência visual). |
## Validação no servidor
Após `onSuccess`, envie `res.token` (prefixo `pt_`) para o seu próprio backend e valide-o no servidor:
```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": "" }
```
Veja a [Referência da API](/pt-BR/api-reference) para o endpoint completo de validação.