POST https://api.tracenow.io/trace
The trace endpoint runs all provided signals (IP, email, phone, device token) in parallel, evaluates your configured policies against the enriched result, tracks velocity counters, and returns a single verdict: allow, challenge, or deny.
The Cloudflare Worker calls this endpoint automatically for every monitored
route. This reference documents the request and response shape for your in-app call (where you
add the real
subject_user_id and confirmed status) and explains how to read the response in
either context.Authentication
All requests require a Bearer token using your secret key:Request
Fields
Send whatever you have: not all fields are required, but the more you provide, the richer the signals.
Examples
Response
Top-level fields
signals.ip
signals.email
signals.phone
signals.device
signals.velocity
signals.decision
Present when a rule matched. Contains the rule that drove the verdict.policy
Present only when a rule matched.Verdicts
allow is the implicit default: it means your policies evaluated and nothing triggered.
At the Cloudflare edge, only
deny blocks. challenge and allow both forward to your origin
because the Worker cannot render your MFA flow. Enforcing challenge requires the in-app call
described in Server-side integration.signals_complete
signals_complete: false means some enrichment group had not fully resolved before the response was returned, typically on the first request for a new IP or email (a cache miss). The verdict was still evaluated against whatever data was available.
For most use cases this is acceptable. If you need complete data for a high-stakes decision, retry with the same payload after ~500 ms to get the warm-cache result.