---
title: Démarrage rapide
---
# Démarrage rapide
Ce guide vous aidera à intégrer le CAPTCHA CaptchaLa en 5 minutes.
::: tip Voyez-le fonctionner en 30 secondes
[demo-v1.captcha.la](https://demo-v1.captcha.la) — HTML + PHP pur, sous licence MIT, code source consultable sur chaque page.
- [popup.html](https://demo-v1.captcha.la/popup.html) — mode popup
- [float.html](https://demo-v1.captcha.la/float.html) — widget flottant
- [bind.html](https://demo-v1.captcha.la/bind.html) — lié à un bouton
- [inline.html](https://demo-v1.captcha.la/inline.html) — intégration en ligne
- [server-token.html](https://demo-v1.captcha.la/server-token.html) — token émis par le serveur (anti-rejeu)
:::
## 1. Créer un compte
Inscrivez-vous gratuitement dans le tableau de bord
[S'inscrire maintenant →](https://dash.captcha.la/register)
## 2. Créer une application
Créez une application dans le tableau de bord pour obtenir votre App Key
## 3. Installer le SDK
Choisissez votre méthode d'installation préférée
```html
```
```bash
# or via npm
npm install captchala
```
## 4. Initialiser le CAPTCHA
Initialisez le composant CAPTCHA dans votre page
```html
```
## 5. Vérification côté serveur
Vérifiez le token sur votre serveur
```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": "" }
```
```json
{
"code": 0,
"data": {
"valid": true,
"action": "login",
"challenge_id": "ch_xxx",
"uid": null,
"risk_score": 12
}
}
```
::: warning
Vérifiez toujours que `data.valid === true` **et** que `data.action` correspond à la scène attendue.
Les pass tokens sont à usage unique ; le même `pt_xxx` ne peut pas être validé deux fois.
:::
## Mode token émis par le serveur (recommandé en production) {#server-token}
Pour les actions sensibles (connexion, inscription, paiement), nous recommandons le flux de token émis par le serveur : votre backend demande d'abord un server_token à durée de vie courte, que le navigateur utilise ensuite pour initialiser le CAPTCHA. Cela empêche les abus liés à une fuite de l'app_key.
### Quand l'utiliser
- Recommandé : inscription, connexion, réinitialisation de mot de passe, paiement, échange de points et tout endpoint qu'un attaquant peut scripter.
- Optionnel : formulaires publics occasionnels, champs de recherche et interactions à faible valeur où la commodité prime.
### 1. Le backend émet le server_token
Appelez /v1/server/challenge/issue depuis votre propre serveur, en utilisant les en-têtes X-App-Key et X-App-Secret. N'exposez jamais ces en-têtes au navigateur.
```bash
# Server-side only — never call this from a browser
curl -X POST https://apiv1.captcha.la/v1/server/challenge/issue \
-H "X-App-Key: YOUR_APP_KEY" \
-H "X-App-Secret: YOUR_APP_SECRET" \
-d "action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4"
# → { "code": 0, "data": { "server_token": "sct_...", "expires_in": 300 } }
```
### 2. Le frontend affiche CaptchaLa avec le server_token
Transmettez le token à votre composant CaptchaLa. Le SDK le transmet à l'initialisation du challenge.
```js
// Browser fetches the token from YOUR backend, not from CaptchaLa directly
const { serverToken } = await fetch('/api/captcha/issue').then(r => r.json());
Captchala.init({
appKey: 'YOUR_APP_KEY',
serverToken, // single-use, short-lived
product: 'popup',
action: 'login',
})
.appendTo('#captcha-container')
.onSuccess(res => submitForm(res.token));
```
### Notes de sécurité
- Ne placez jamais l'app_secret dans le code frontend, les applications mobiles ou les dépôts publics. Il doit rester côté serveur.
- Activez « Exiger un token de challenge émis par le serveur » dans le tableau de bord afin de rejeter tout challenge tenté sans server_token.
- Conservez un ttl court (300 s par défaut, 900 s maximum) et préférez max_uses=1 pour réduire l'impact d'une fuite de token.
## Étapes suivantes
- [SDK Web](./web-sdk)
- [Référence de l'API](./api-reference)