Preview Rule Impact (Blast Radius)
Replay the endpoint's recently-captured traffic through a proposed, unsaved rule and get its blast radius before you commit it: how many requests would be newly blocked / throttled / redirected, how many previously-successful requests would break, the distinct client IPs affected, and a verdict. Read-only — no rule is created and no traffic is affected.
It runs the same matcher the live data plane uses, so the preview can't drift from what the rule would actually do. The account and endpoint are resolved from your session and the endpoint's ownership is verified — you can only ever replay your own account's traffic.
Requires request capture to be enabled on the endpoint. Endpoints with capture off, or with no traffic in the window, return an insufficient_data verdict (never a scary number).
Path parameters
uuid from /endpoints.Request body
traffic_policy, firewall, rate_limit.add (default), modify, or remove. remove reports the traffic a rule was blocking that would be re-admitted.traffic_policy: {"rule_type": "...", "phase": "...", "config": {...}} (same shape as create). Only deterministic, replayable rule types are simulated: restrict-ips, rate-limit, redirect, force-https, custom-response, url-rewrite, add-headers, remove-headers; others return an unsimulated count.estimated: true).Response (200 OK)
A DryRunImpact object:
safe (tightens only a tiny abuse-only share, or a pure relax), review (nothing alarming, worth a human glance), risky (would cut real successful traffic), low_confidence (too few samples to trust) or insufficient_data (capture off, or no traffic in the window).full, metadata, or off (capture disabled — nothing to replay, verdict insufficient_data).op: "remove") re-admitted.challenge (whether a visitor passes depends on their browser). Never guessed.estimated is true when scaled from a sample.{"key": "...", "count": N}. Each is omitted when empty.Errors
rule_json, unsupported rule_kind, or an invalid rule config.