Requirements
- The scan was synced, so a cloud report exists.
- You are the owner of that report. Workspace members can read it; only the owner can create, change, or revoke a share link.
- The report has not passed its retention expiry.
Share modes
Optional on any mode: a password, and an expiry.
Per-recipient projections
A share carries a default policy plus zero or more principal rules. Each rule names a principal — a user id, a normalized email, a workspace id, oranonymous — and
the projection policy that principal
gets.
That is what makes one URL render differently per viewer.
Create it over the API
Read a shared report
html, json, markdown, sarif. Browsers open /s/<slug> on whatever origin your deployment serves.
The export route resolves the same projection the page does, so no format is a bypass.
Change or revoke
"password": null clears a password; a non-empty string sets a new one. Setting
"expiresAt": null removes the expiry.
What a viewer cannot do
See content their policy excluded
See content their policy excluded
Filtering happens server-side. Excluded content is absent from the payload, not
hidden in it — in the page, the JSON, and every export. You can check that directly:
Learn anything from a link they may not open
Learn anything from a link they may not open
A viewer with no permission gets no report metadata at all:
SHARE_NOT_AVAILABLE
without disclosing whether the report exists. Signed out on a mode that requires an
account, they are asked to sign in — again with nothing disclosed.Limits
Active share links per report come from the plan: 5 on free, 25 on pro, 100 on team, 1000 on enterprise. Exceeding it returnsFORBIDDEN naming the limit. Revoked links do not
count.