Every attestation returns a risk category — but the full numeric score depends on your plan.Documentation Index
Fetch the complete documentation index at: https://docs.grantiva.io/llms.txt
Use this file to discover all available pages before exploring further.
| Plan | What you get |
|---|---|
| Free | Risk category only: Trusted, Suspicious, or Blocked |
| Pro / Business / Enterprise | Full 0–100 numeric risk score + category |
On the Free plan,
risk_score is null in the attestation JWT. Use risk_category to make access decisions. See Backend Verification for details.Score ranges
On Pro, Business, and Enterprise plans, the numeric score maps to these levels:| Range | Level | Category | Description |
|---|---|---|---|
| 0–20 | Low | Trusted | Stock OS, legitimate app, normal behavior. |
| 21–50 | Medium | Suspicious | Some risk indicators. May warrant additional verification. |
| 51–75 | High | Suspicious | Significant risk. Consider blocking sensitive operations. |
| 76–100 | Critical | Blocked | Likely compromised. Block access or require re-verification. |
Risk factors
The score considers multiple signals:- Jailbreak detection — Is the device jailbroken or rooted?
- Device integrity — Does the attestation pass Apple’s checks?
- Attestation history — Is this device’s behavior consistent?
- Anomaly detection — Unusual patterns (rapid attestations, geographic jumps, etc.)
- Device age — First-time vs. returning devices
- OS version — Known vulnerable OS versions
Using risk data
By category (all plans)
Every plan returns arisk_category in the attestation JWT. Use the numeric score ranges to branch in Swift:
The
risk_category string is also available directly from the decoded JWT on your backend. See Backend JWT Verification.By numeric score (Pro / Business / Enterprise)
If your plan includes the numeric score, you can use finer-grained thresholds:On the Free plan,
riskScore is 0 and risk_score is null in the JWT. Use risk_category from the decoded JWT to make tier-safe access decisions on Free.On your backend
Decode the JWT to read risk data:Webhooks
On Business and Enterprise plans, webhooks fire for risk-related events:device.high_risk— A device exceeds your risk thresholddevice.new— First attestation from a new devicedevice.attestation_failed— A device fails attestationattestation.anomaly— Unusual attestation pattern detected