Every client SDK computes verdicts on the device, before and independently of the server. They arrive with the identify result as verdicts.
result.verdicts.automation
// { value: true, confidence: 'high', reasons: [ … ] }
Verdict
valuebooleanWhether the verdict matched.confidencestringlow,mediumorhigh.reasonsstring[]Short, stable tokens for the evidence, strongest first. Useful for logging.
Verdicts by platform
| Platform | Verdicts |
|---|---|
| Web | incognito, shields, tor, emulator, automation, farm |
| iOS | jailbreak, simulator, instrumentation, mitm, automation, tampering, farm |
| Android | root, emulator, appCloner, instrumentation, mitm, automation, tampering, farm |
shields means anti-fingerprinting protections are active. It describes a privacy choice, and on its own is never a reason to challenge anyone.
What they are for
- Adapting the interface immediately, such as showing a second-factor step before the form is submitted.
- Collecting without sending, with
submit: false, to test or to debug. - Logging what the device looked like alongside your own events.
What they are not for
const result = await fingerly.identify({ tag: 'login' })
if (result.verdicts.automation.value) showSecondFactorStep()
In framework SDKs
The framework SDKs read one verdict with a confidence floor through useVerdict, injectVerdict and their equivalents, and offer isSuspicious, which is true when any verdict matched at medium or above.