Skip to content

API-Referenz

CaptchaLa stellt eine RESTful API für alle serverseitigen Integrationen bereit.

Basis-URL

https://apiv1.captcha.la

Authentifizierung

Alle API-Anfragen erfordern Authentifizierungs-Header:

X-App-Key:    YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET

WARNING

X-App-Secret ist ausschließlich serverseitig. Geben Sie es niemals an Browser, mobile Apps oder öffentliche Repositories weiter.

Serverseitige Validierungs-API

💡 Verwenden Sie ein Server-SDK, um sich den Boilerplate-Code zu sparen. Es kapselt den Endpoint, kümmert sich um Retries und liefert typisierte Fehler:

Nachdem der Nutzer das Frontend-CAPTCHA bestanden hat, muss Ihr Server den vom SDK zurückgegebenen Token validieren. Nachfolgend die serverseitigen Validierungs-Endpoints.

Serverseitige Token-Validierung

Validieren Sie den pass_token aus dem Frontend-SDK (mit pt_-Präfix). Erfordert die Header X-App-Key und X-App-Secret.

bash
POST /v1/validate
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/json

{ "pass_token": "pt_xxx", "client_ip": "1.2.3.4" }
json
{
  "code": 0,
  "data": {
    "valid": true,
    "challenge_id": "ch_xxx",
    "action": "login",
    "uid": null,
    "client_ip": "1.2.3.4",
    "risk_score": 12
  }
}

TIP

Prüfen Sie data.valid === true und dass data.action mit der erwarteten Szene übereinstimmt (weisen Sie einen Token aus einem pay-Flow zurück, wenn er an /login präsentiert wird). Tokens sind Einmal-Tokens.

Servergenerierter Challenge-Token

Stellen Sie einen kurzlebigen server_token aus Ihrem Backend heraus aus. Der Browser übergibt diesen Token anschließend bei der Initialisierung einer Challenge und beweist damit, dass die Anfrage von Ihrem vertrauenswürdigen Server stammt.

Server-Token ausstellen

Rufen Sie diesen Endpoint ausschließlich von Ihrem eigenen Server aus auf. Erfordert X-App-Key + X-App-Secret. Die Antwort enthält einen server_token (sct_-Präfix), den das Frontend an die Challenge-Initialisierung weiterreicht.

bash
POST /v1/server/challenge/issue
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/x-www-form-urlencoded

action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4
json
{
  "code": 0,
  "data": {
    "server_token": "sct_xxxxxxxxxxxx",
    "expires_in": 300,
    "issued_at": 1713600000
  }
}

Body-Parameter (form-urlencoded)

FeldBeschreibung
actionBusiness-Szene, z. B. login, register, pay. Muss mit der bei der Challenge-Initialisierung verwendeten action übereinstimmen.
ttlToken-Lebensdauer in Sekunden. Standard 300, Maximum 900.
max_usesMaximale Anzahl an Einlösungen des Tokens. Standard 10.
bind_ipBindet den Token an eine Client-IP. Eine Initialisierung von einer anderen IP wird abgewiesen.
bind_device_idBindet den Token an eine bestimmte Geräte-ID.
bind_fingerprintBindet den Token an einen bestimmten Browser-Fingerprint.

Challenge initialisieren

Wird vom SDK aufgerufen, um eine CAPTCHA-Challenge zu starten. Akzeptiert einen optionalen, von /v1/server/challenge/issue ausgestellten server_token.

FeldBeschreibung
app_keyIhr öffentlicher App Key.
actionBusiness-Szene. Muss mit der beim Ausstellen des server_token verwendeten action übereinstimmen.
server_tokenOptional; erforderlich, wenn für die Anwendung server_token_required = true gesetzt ist.

INFO

Ist server_token_required für diese Anwendung im Dashboard aktiviert, weist die Challenge-Initialisierung Anfragen ohne gültigen server_token zurück.

Fehlercodes

CodeBeschreibung
invalid_app_keyUngültiger App Key
invalid_app_secretUngültiges App Secret
challenge_expiredChallenge abgelaufen
challenge_not_foundChallenge nicht gefunden
invalid_answerUngültige Antwort
token_expiredToken abgelaufen
token_already_usedToken bereits verwendet
token_not_foundToken nicht gefunden
quota_exceededKontingent überschritten
rate_limitedRate Limit erreicht
rate_limit_exceededZu viele Ausstellungs-Anfragen für diese Anwendung. Bitte zurückfahren und erneut versuchen.

MIT-licensed examples · CaptchaLa is operated independently