Auth model
Client: Site key for widget bootstrap.
Server: Secret key for token exchange.
Webhook: HMAC signature via X-ANIMA-Signature.
ANIMA Verify Docs
Using the other product? See ANIMA Identity docs. OpenAPI spec: /openapi.yaml.
<script src="https://animaid.to/sdk/verify/v3/anima-verify.js"
integrity="sha384-Hp8Pgi92yV4XxaHhz1ytMBhj9qYc6/nBMqFV7AtAnFPY1SWJX6VjcHYUtYTNalY2"
crossorigin="anonymous"></script>
Latest alias: /sdk/verify/latest/anima-verify.js (served with Cache-Control: no-cache).
Client: Site key for widget bootstrap.
Server: Secret key for token exchange.
Webhook: HMAC signature via X-ANIMA-Signature.
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetRetry-After (on 429)sequenceDiagram participant Browser participant VerifySDK participant AppServer participant ANIMA Browser->>VerifySDK: Render widget + collect 7 signals VerifySDK->>ANIMA: POST /api/verify/generate ANIMA-->>VerifySDK: signed token VerifySDK-->>Browser: token in hidden input Browser->>AppServer: submit form + token AppServer->>ANIMA: POST /api/verify/token (siteKey + secretKey) ANIMA-->>AppServer: human=true|false + confidence
POST /api/verify/token
const response = await fetch("https://animaid.to/api/verify/token", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
token: req.body.anima_token,
siteKey: process.env.ANIMA_SITE_KEY,
secretKey: process.env.ANIMA_SECRET_KEY
})
});
const result = await response.json();
import requests
payload = {
"token": anima_token,
"siteKey": ANIMA_SITE_KEY,
"secretKey": ANIMA_SECRET_KEY
}
result = requests.post(
"https://animaid.to/api/verify/token",
json=payload,
timeout=10
).json()
$payload = json_encode([
"token" => $animaToken,
"siteKey" => getenv("ANIMA_SITE_KEY"),
"secretKey" => getenv("ANIMA_SECRET_KEY")
]);
$ch = curl_init("https://animaid.to/api/verify/token");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
Machine-readable API contract: /openapi.yaml