The response — status, score and recommendation
201 (new assessment) and 200 (repeat of the same operation) carry the same shape:
event-assessment.v1.1 for a v1.1 request, event-assessment.v1 for a v1 request. The two are
identical except for one field: v1.1 carries your tag where v1 carries journey. Always check
that the response’s external_event_id and tag (or journey) are the ones you sent. Validate a
v1.1 response against the exact
v1.1 response schema and a v1
response against the exact
v1 response schema.
Store the response as received; do not reconstruct fields.
Assessment status
Section titled “Assessment status”assessment_status |
trust_score |
recommendation_basis |
When |
|---|---|---|---|
COMPLETED |
Integer from 0 to 100 | EVALUATION |
Web SDK evidence was present, all required evidence was fresh and a policy was available |
INCONCLUSIVE |
null |
INSUFFICIENT_EVIDENCE |
The effective policy could not evaluate sufficient evidence |
UNSCORABLE |
null |
OUT_OF_POLICY_SCOPE |
The event is outside the policy’s scope |
FAILED |
null |
TECHNICAL_FAILURE |
Technical failure |
A stored assessment always has retryable: false, including INCONCLUSIVE, UNSCORABLE and
FAILED. Repeating the call does not produce a new score.
{ "schema_version": "event-assessment.v1.1", "assessment_id": "01996f2a-0000-7000-8000-000000000101", "assessment_version": 1, "supersedes_assessment_id": null, "business_event_id": "01996f2a-0000-7000-8000-000000000102", "external_event_id": "login_20260904_000001", "tag": "login", "assessment_status": "COMPLETED", "retryable": false, "trust_score": 100, "device_intelligence_snapshot_id": "01996f2a-0000-7000-8000-000000000103", "device_intelligence_snapshot_version": 2, "device_id": "dev_AZlvKYwefUqy8GqePF17GA", "device_match_confidence": null, "evidence_coverage": 100, "data_freshness": { "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "oldest_required_observed_at": "2026-09-04T11:59:57.318Z", "maximum_required_age_ms": 300000, "all_required_fresh": true }, "signals": [ { "signal_code": "ANTI_FINGERPRINTING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-anti-fingerprinting.v2", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BOT_AUTOMATION", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-bot-automation.probe.v3", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_BRAVE", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-brave.v1", "detector_confidence": 0.8, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAFARI", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-safari.v1", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-samsung-internet.v1", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_SPOOFING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "browser-spoofing-coherence.v2", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "DEVICE_MULTI_USER", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SERVER_CONTEXT", "detector_version": "ftid-device-multi-user.v1", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "EMULATED_ENVIRONMENT", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "emulated-environment-coherence.v2", "detector_confidence": 0.3, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_HOSTING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-hosting.v1", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_PROXY", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-proxy.v1", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_TOR", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-tor.v1", "detector_confidence": 0.9, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_VPN", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-vpn.v1", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "PRIVATE_BROWSING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-private-browsing.storage-mode.v2", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null } ], "limitation_codes": [], "reason_codes": [ "NO_ADVERSE_INDICATOR_MATCH" ], "recommended_action": "MONITOR", "recommendation_basis": "EVALUATION", "policy_version": "production-detectors-01996f29-4d2c-7b18-9e6a-3f0c8d1b5a72-login", "fallback_policy_version": "production-observation-fallback-v2", "ruleset_version": "d95-detectors.v1", "signal_catalog_version": "web-detectors-v3", "feature_schema_version": "configured-assessment-features.v1", "resolver_version": "first-party-installation-v1", "sdk_version": "0.2.1", "provider_versions": [ "asn-reputation.v1", "cloud-ranges.v1", "icloud-private-relay.v1", "ip2proxy-lite-px2.v1", "tor-exit.v1", "x4b-vpn.v1" ], "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "expires_at": "2026-09-04T12:01:00.143Z", "correlation_id": "01996f2a-1111-7000-8000-000000000105"}{ "schema_version": "event-assessment.v1.1", "assessment_id": "01996f2a-0000-7000-8000-000000000401", "assessment_version": 1, "supersedes_assessment_id": null, "business_event_id": "01996f2a-0000-7000-8000-000000000402", "external_event_id": "login_20260904_000002", "tag": "login", "assessment_status": "INCONCLUSIVE", "retryable": false, "trust_score": null, "device_intelligence_snapshot_id": null, "device_intelligence_snapshot_version": null, "device_id": null, "device_match_confidence": null, "evidence_coverage": 0, "data_freshness": { "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "oldest_required_observed_at": null, "maximum_required_age_ms": 300000, "all_required_fresh": false }, "signals": [ { "signal_code": "ANTI_FINGERPRINTING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BOT_AUTOMATION", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_BRAVE", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAFARI", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_SPOOFING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "DEVICE_MULTI_USER", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "EMULATED_ENVIRONMENT", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_HOSTING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_PROXY", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_TOR", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_VPN", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "PRIVATE_BROWSING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null } ], "limitation_codes": [ "COLLECTOR_NOT_LOADED", "REQUIRED_EVIDENCE_MISSING" ], "reason_codes": [ "REQUIRED_EVIDENCE_MISSING" ], "recommended_action": "MONITOR", "recommendation_basis": "INSUFFICIENT_EVIDENCE", "policy_version": "production-detectors-01996f29-4d2c-7b18-9e6a-3f0c8d1b5a72-login", "fallback_policy_version": "production-observation-fallback-v2", "ruleset_version": "d95-detectors.v1", "signal_catalog_version": "web-detectors-v3", "feature_schema_version": "configured-assessment-features.v1", "resolver_version": "first-party-installation-v1", "sdk_version": null, "provider_versions": [], "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "expires_at": "2026-09-04T12:01:00.143Z", "correlation_id": "01996f2a-1111-7000-8000-000000000405"}{ "schema_version": "event-assessment.v1.1", "assessment_id": "01996f2a-0000-7000-8000-000000000701", "assessment_version": 1, "supersedes_assessment_id": null, "business_event_id": "01996f2a-0000-7000-8000-000000000702", "external_event_id": "pix_20260904_000001", "tag": "pix_transfer", "assessment_status": "FAILED", "retryable": false, "trust_score": null, "device_intelligence_snapshot_id": "01996f2a-0000-7000-8000-000000000703", "device_intelligence_snapshot_version": 2, "device_id": "dev_AZlvKYwefUqy8GqePF17GA", "device_match_confidence": null, "evidence_coverage": 100, "data_freshness": { "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "oldest_required_observed_at": "2026-09-04T11:59:57.318Z", "maximum_required_age_ms": 300000, "all_required_fresh": false }, "signals": [ { "signal_code": "ANTI_FINGERPRINTING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-anti-fingerprinting.v2", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BOT_AUTOMATION", "channel": "WEB", "signal_state": "DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-bot-automation.probe.v3", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_BRAVE", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-brave.v1", "detector_confidence": 0.8, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAFARI", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-safari.v1", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-browser-privacy-samsung-internet.v1", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "BROWSER_SPOOFING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "browser-spoofing-coherence.v2", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "DEVICE_MULTI_USER", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SERVER_CONTEXT", "detector_version": "ftid-device-multi-user.v1", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "EMULATED_ENVIRONMENT", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "emulated-environment-coherence.v2", "detector_confidence": 0.3, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_HOSTING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-hosting.v1", "detector_confidence": 0.6, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_PROXY", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-proxy.v1", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_TOR", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-tor.v1", "detector_confidence": 0.9, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "NETWORK_VPN", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "PROVIDER", "detector_version": "ftid-network-vpn.v1", "detector_confidence": 0.4, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null }, { "signal_code": "PRIVATE_BROWSING", "channel": "WEB", "signal_state": "NOT_DETECTED", "applicability": "APPLICABLE", "source": "SDK", "detector_version": "ftid-private-browsing.storage-mode.v2", "detector_confidence": 0.5, "observed_at": "2026-09-04T11:59:57.318Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": 2825, "not_evaluated_reason_code": null, "applicability_reason_code": null } ], "limitation_codes": [ "UNSUPPORTED_RUNTIME" ], "reason_codes": [ "POLICY_EVALUATION_UNAVAILABLE" ], "recommended_action": "MONITOR", "recommendation_basis": "TECHNICAL_FAILURE", "policy_version": "risk-login-v3", "fallback_policy_version": "production-observation-fallback-v2", "ruleset_version": "risk-login-rules.v3", "signal_catalog_version": "web-detectors-v3", "feature_schema_version": "configured-assessment-features.v1", "resolver_version": "first-party-installation-v1", "sdk_version": "0.2.1", "provider_versions": [ "asn-reputation.v1", "cloud-ranges.v1", "icloud-private-relay.v1", "ip2proxy-lite-px2.v1", "tor-exit.v1", "x4b-vpn.v1" ], "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "expires_at": "2026-09-04T12:01:00.143Z", "correlation_id": "01996f2a-1111-7000-8000-000000000705"}Synthetic examples from the published v1.1 examples.
trust_score
Section titled “trust_score”- Ranges from 0 to 100, and higher is better: more confidence in this access.
- Exists only in
COMPLETED. In the other states it isnull— andnullis not 0, not 100 and not “all good”. - It is not a probability: 90 does not mean “90% chance of being legitimate”.
- It is not a reputation of the person or the account, and it is not reused for another event.
expires_atsays until when the result is valid.
recommended_action
Section titled “recommended_action”| Value | Reading | Your action that counts as aligned |
|---|---|---|
ALLOW |
Proceed | ALLOWED |
MONITOR |
Proceed and watch | ALLOWED |
STEP_UP |
Ask for additional verification | CHALLENGED |
REVIEW |
Human review before concluding | REVIEWED or HELD |
BLOCK_RECOMMENDED |
FingerTrackID recommends blocking; it did not block | BLOCKED |
FingerTrackID recommends; your system decides and acts. During shadow validation, use the
recommendation to observe and compare with your current decision, not as a blocking trigger.
Under FingerTrackID’s managed policy, privacy, Tor, proxy/VPN, hosting or shared-device signals,
on their own, never produce BLOCK_RECOMMENDED, and every recommendation is MONITOR.
The exception is your company’s own risk rules: your administrator can make indicators
active in Configuração de risco, each with a
weight you choose. Any rule can be published as active directly, but only your company can
activate it. Besides the 13 indicators, the rules cover the 54 items of Contexto do acesso, computed
during the assessment: each item fires on a ruler your company adjusts (Incomum or Muito
incomum, each with its own points). The score starts at 100, each active rule that fires
deducts its points, and the final score falls into the bands you set; a score inside your
blocking band returns BLOCK_RECOMMENDED, even when a single rule caused it. In a scored
(COMPLETED) response, an active context rule that fires is listed in reason_codes under the
item’s code (for example VELOCITY_ACCOUNT); a response without a score carries no rule codes,
even when a rule fired. It is still a recommendation: your backend executes the block, and
FingerTrackID never blocks anything. Missing evidence, a timeout or a failure never produce
BLOCK_RECOMMENDED: an active indicator without usable evidence leaves the assessment without a
score. An active context item without data never deducts; if the score then falls into your allow
band, the assessment stays without a score (INCONCLUSIVE, MONITOR). If the context step does
not run inside the assessment, every context item counts as without data for it, even when the
console later shows the items computed after it. Rules in ghost mode
are measured but never change the response (availability).
Your company’s block and allow lists also decide the recommendation of a scored access. When an
active entry of Listas names the access’s device, account
reference or IP, a COMPLETED response carries the entry’s action whatever the score:
Bloquear returns BLOCK_RECOMMENDED, Revisar returns REVIEW and Liberar returns
ALLOW. With several entries, block wins over review, which wins over allow. The score stays the
policy’s, and reason_codes starts with one code per deciding entry,
CUSTOMER_LIST_<action>_<kind> (for example CUSTOMER_LIST_BLOCK_DEVICE,
CUSTOMER_LIST_REVIEW_ACCOUNT or CUSTOMER_LIST_ALLOW_IP). An access without a score keeps the
policy’s recommendation: a list never turns an access FingerTrackID could not score into a block.
The device and the IP come from the collection the event_context_token names: the IP is the
address the collection edge recorded (still kept at the time of the access), not necessarily the
one your backend sees. Without the token, an access can match by its account reference only.
Indicators (signals)
Section titled “Indicators (signals)”The response always carries the 13 Web indicators, each one DETECTED, NOT_DETECTED or
NOT_EVALUATED:
ANTI_FINGERPRINTING, BOT_AUTOMATION, BROWSER_SPOOFING, EMULATED_ENVIRONMENT,
PRIVATE_BROWSING, BROWSER_PRIVACY_BRAVE, BROWSER_PRIVACY_SAFARI,
BROWSER_PRIVACY_SAMSUNG_INTERNET, NETWORK_PROXY, NETWORK_VPN, NETWORK_HOSTING,
NETWORK_TOR and DEVICE_MULTI_USER.
NOT_EVALUATED is not NOT_DETECTED: a missing, stale or failing detector never becomes
“not detected”. Being on the list does not mean the indicator is evaluated today.
Indicators without an active applicable detector come back NOT_EVALUATED;
limitation_codes explains why.
Why an indicator was not evaluated
Section titled “Why an indicator was not evaluated”Each entry of signals carries its own reason. DETECTED and NOT_DETECTED come with
not_evaluated_reason_code: null, a detector_confidence, observed_at and freshness_ms;
NOT_EVALUATED comes with those three null and not_evaluated_reason_code set to one of the
limitation codes, which says why that indicator, and only it, was not
evaluated. Every code found on an indicator is also listed in limitation_codes, the
assessment-level list; the opposite does not hold (see below). Read the per-indicator code to know
which indicator a limitation affected. Every indicator is APPLICABLE today, with
applicability_reason_code: null.
Without an event_context_token, all 13 indicators carry COLLECTOR_NOT_LOADED.
DEVICE_MULTI_USER counts the distinct people (subject_ref) seen on the same browser
installation in the 30 days before the collection; account_ref does not change it. It needs the
first-party installation cookie, and it counts only the people FingerTrackID has already linked to
that installation, a link recorded asynchronously after an assessment is stored. The first login
on a new installation, and a login whose collection comes before the earlier link is recorded,
therefore return it NOT_EVALUATED with REQUIRED_EVIDENCE_MISSING; later logins evaluate it.
The account reference feeds the account items of Contexto do acesso. The 13 indicators and
evidence_coverage are the same with or without account_ref. The account items of
Contexto do acesso need it; they change
trust_score and the recommendation only when your company made a context rule on them active
(person and account references).
The person reference (subject_ref) feeds DEVICE_MULTI_USER for later collections. An
assessment stored without it links no person to the installation. While no assessment on a
browser carried one in the last 30 days, later logins there count no one and return
DEVICE_MULTI_USER NOT_EVALUATED with REQUIRED_EVIDENCE_MISSING, which lowers their
evidence_coverage. When your company’s own rules make DEVICE_MULTI_USER active, sending
subject_ref also changes the trust_score and recommendation of those later logins: an active
indicator without usable evidence leaves the assessment without a score
(recommended_action).
Other fields
Section titled “Other fields”| Field | Purpose |
|---|---|
assessment_id |
UUIDv7 of the assessment; it is the resource for feedback |
business_event_id |
UUIDv7 of the event in FingerTrackID |
assessment_version, supersedes_assessment_id |
1 and null in the synchronous response |
evidence_coverage |
0 to 100: how much of the expected checks was actually evaluated |
data_freshness |
Evidence cutoff, oldest required evidence and whether everything was fresh |
limitation_codes |
Why something was not evaluated (e.g. COLLECTOR_NOT_LOADED); see limitation codes. Empty ([]) when all 13 indicators were evaluated, even with a null device_match_confidence |
reason_codes |
Reasons for the assessment |
device_id, device_match_confidence |
Device continuity. device_id is an opaque alias (dev_…) when the browser installation was linked, otherwise null; it does not identify a physical device. device_match_confidence is always null today: no detector calibrates it yet, so do not wait for a value |
policy_version, fallback_policy_version and the other *_version fields |
Versions that produced the result |
evidence_cutoff_at, evaluated_at, expires_at |
Timeline of the result |
correlation_id |
For support |
Limitation codes
Section titled “Limitation codes”limitation_codes lists why some evidence was missing or some indicator was not evaluated. They
are never risk: no limitation code is a reason against the access, and none lowers the
trust_score. Most describe evidence quality: a missing indicator only lowers
evidence_coverage, and the assessment is INCONCLUSIVE when the policy’s minimum coverage or a
required indicator is not met. POLICY_UNAVAILABLE marks a single indicator whose configuration
was unusable: it only leaves that indicator unevaluated, and the assessment follows the coverage
rule above. When no active, intact policy can be selected, no assessment is stored: the call
answers 503 assessment-unavailable, an operational problem
on FingerTrackID’s side, and you repeat the same logical operation. A FAILED assessment means the
policy evaluation itself did not complete: it carries POLICY_EVALUATION_UNAVAILABLE in
reason_codes and UNSUPPORTED_RUNTIME in limitation_codes, keeps the policy version that was
selected, and recommends MONITOR.
limitation_codes can therefore list a code that no indicator carries: every INCONCLUSIVE
assessment lists REQUIRED_EVIDENCE_MISSING, and a FAILED one lists UNSUPPORTED_RUNTIME. The
last column below says which indicators can carry each code under the current managed setup; a
code marked as not sent today is part of the contract and may appear later, so keep handling it.
| Code | Meaning | Carried today by |
|---|---|---|
NO_FIRST_PARTY_COOKIE |
The first-party installation anchor was not available (for example, the browser blocked or cleared the collection domain’s cookie) | DEVICE_MULTI_USER |
INSTALLATION_COOKIE_REJECTED |
The installation cookie was invalid, expired, revoked or from another application, so it was not used | DEVICE_MULTI_USER |
NO_EDGE_SIGNALS |
The network facts expected from FingerTrackID’s edge did not arrive from a trusted source | The four network indicators and BROWSER_PRIVACY_SAFARI |
STALE_DEVICE_PROFILE |
The evidence was older than the freshness its version allows: the browser evidence beyond your application’s evidence window, or a server-side evidence source (such as a network list) older than its maximum age. Recollecting in the browser does not fix the second case | Any indicator |
PROVIDER_UNAVAILABLE |
A required evidence source was not usable: missing or of another version, refused, not loaded after its retries, or built after the observation. A source that runs out of time is DETECTOR_TIMEOUT instead |
The four network indicators and BROWSER_PRIVACY_SAFARI |
PROVIDER_BUDGET_EXCEEDED |
A required data source call was skipped by its budget | None: not sent today |
COLLECTOR_NOT_LOADED |
The browser SDK did not produce the observation the indicator needs (for example, no event_context_token) |
All 13 without a token; with a token, the eight browser indicators whose part of the collection did not arrive |
UNSUPPORTED_RUNTIME |
The indicator does not evaluate this browser, engine or operating system in its current version. On a FAILED assessment it also marks the policy evaluation that did not complete |
ANTI_FINGERPRINTING, BROWSER_SPOOFING, EMULATED_ENVIRONMENT, PRIVATE_BROWSING and the three browser privacy indicators; never BOT_AUTOMATION, the network indicators or DEVICE_MULTI_USER |
REQUIRED_EVIDENCE_MISSING |
The indicator had no usable evidence to decide: a field it needs was missing or invalid, or the evidence it received was inconclusive (for example, no person linked to this browser installation yet, or a network address its source does not cover) | Any indicator; also every INCONCLUSIVE assessment, at the assessment level |
DETECTOR_TIMEOUT |
The indicator, or an evidence lookup it needed, did not finish in time | Every indicator except the browser privacy indicators for Brave and Samsung Internet and DEVICE_MULTI_USER |
DETECTOR_ERROR |
The indicator failed without a conclusive result | Every indicator except the browser privacy indicators for Brave and Samsung Internet |
NETWORK_TYPE_AMBIGUOUS |
The network could not be honestly classified as VPN, proxy or hosting: a source flagged one of them without telling which, or the access came through a known privacy relay or shared egress (such as iCloud Private Relay or unclassified Cloudflare egress) | NETWORK_PROXY, NETWORK_VPN and NETWORK_HOSTING; never NETWORK_TOR |
CLIENT_CLOCK_SKEW |
The browser’s clock disagreed beyond the allowed limit; server-side times remain authoritative | None: not sent today |
POLICY_UNAVAILABLE |
On a single indicator, its detector configuration was unusable (only that indicator is unevaluated). A missing policy is a 503 assessment-unavailable, never an assessment |
None under the managed setup today |
UNSUPPORTED_RUNTIME on a current browser. The private browsing indicator evaluates Chrome,
Edge and other Chromium browsers (version 83 and later), Safari (WebKit) and Firefox (Gecko). The
browser privacy and private browsing indicators report UNSUPPORTED_RUNTIME
when the SDK runs outside the top-level page (for example, inside an iframe), when the browser
engine cannot be identified consistently, or in an in-app browser. On Chromium, the private
browsing indicator also reports it when the browser refused or failed its storage probe (for
example, IndexedDB disabled or blocked). If you see it on an ordinary top-level Chrome tab with
storage enabled, send us the assessment_id. Anti-fingerprinting is not held back the same way:
it can still be DETECTED from replaced browser functions when the engine is unknown.
This is not the SDK error of the same name, which initializeSdk throws when the browser lacks a
required feature (failure reasons).
Size: every response — success or error — is at most 65536 bytes. Read the body by
counting the bytes as they arrive, not by Content-Length, and treat a larger response as an
indeterminate send (see retry).
There is no GET to fetch an assessment. Recovery is the same POST, with the same body.
Example: inconclusive assessment without the SDK
Section titled “Example: inconclusive assessment without the SDK”A synthetic example; the values illustrate the shape only:
{ "schema_version": "event-assessment.v1", "assessment_id": "01996f2a-0000-7000-8000-000000000401", "assessment_version": 1, "supersedes_assessment_id": null, "business_event_id": "01996f2a-0000-7000-8000-000000000402", "external_event_id": "login_20260904_000002", "journey": "LOGIN", "assessment_status": "INCONCLUSIVE", "retryable": false, "trust_score": null, "device_intelligence_snapshot_id": null, "device_intelligence_snapshot_version": null, "device_id": null, "device_match_confidence": null, "evidence_coverage": 0, "data_freshness": { "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "oldest_required_observed_at": null, "maximum_required_age_ms": 300000, "all_required_fresh": false }, "signals": [ { "signal_code": "ANTI_FINGERPRINTING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BOT_AUTOMATION", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_BRAVE", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAFARI", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "BROWSER_SPOOFING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "DEVICE_MULTI_USER", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "EMULATED_ENVIRONMENT", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_HOSTING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_PROXY", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_TOR", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "NETWORK_VPN", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null }, { "signal_code": "PRIVATE_BROWSING", "channel": "WEB", "signal_state": "NOT_EVALUATED", "applicability": "APPLICABLE", "source": "DERIVED", "detector_version": "unavailable-web-detectors.v1", "detector_confidence": null, "observed_at": null, "evaluated_at": "2026-09-04T12:00:00.143Z", "freshness_ms": null, "not_evaluated_reason_code": "COLLECTOR_NOT_LOADED", "applicability_reason_code": null } ], "limitation_codes": [ "COLLECTOR_NOT_LOADED", "REQUIRED_EVIDENCE_MISSING" ], "reason_codes": [ "REQUIRED_EVIDENCE_MISSING" ], "recommended_action": "MONITOR", "recommendation_basis": "INSUFFICIENT_EVIDENCE", "policy_version": "production-detectors-01996f29-4d2c-7b18-9e6a-3f0c8d1b5a72-login", "fallback_policy_version": "production-observation-fallback-v2", "ruleset_version": "d95-detectors.v1", "signal_catalog_version": "web-detectors-v3", "feature_schema_version": "configured-assessment-features.v1", "resolver_version": "first-party-installation-v1", "sdk_version": null, "provider_versions": [], "evidence_cutoff_at": "2026-09-04T12:00:00.105Z", "evaluated_at": "2026-09-04T12:00:00.143Z", "expires_at": "2026-09-04T12:01:00.143Z", "correlation_id": "01996f2a-1111-7000-8000-000000000405"}