Revoke Download Link
Kill a persistent download link immediately. This is the containment action for a link that has been shared too widely or leaked.
Revocation takes effect at once for every new use of the link: following it, opening the dashboard_url minted with it, and requesting file URLs or imagery for it all fail. Storage URLs already handed out cannot be recalled. A dashboard that is already open stops receiving fresh file URLs, so it loses access within 15 minutes; imagery tile grants it already holds last up to 12 hours. It is permanent: a revoked link cannot be restored or retuned. Mint a fresh link if access is needed again.
The call is idempotent. Revoking a link that is already revoked (or has already expired) still returns 200, and the original revoked_at is preserved rather than being overwritten — so a retry after a timeout is always safe.
Revoking a link does not delete the artifact or affect any other link. Each link is independent; revoke each one you want to kill.
▶Use cases
- A link was forwarded outside the intended audience, or posted somewhere public.
- An engagement ended and outstanding links should stop working.
- Routine hygiene — revoke links you know are finished with rather than waiting out their expiry.
▶Path parameters
| Param | Type | Description |
|---|---|---|
id | uuid | Artifact ID. Must be visible to your organization. |
token | string | The token from the link's URL — the segment after /redirect/. Returned only when the link was minted. |
▶Request body
None.
▶Response schema (data)
data)| Field | Type | Description |
|---|---|---|
type | "artifact_download_link" | Always "artifact_download_link". |
id | uuid | Download link ID. Distinct from the token, and safe to log. |
▶attributes
attributes| Field | Type | Description |
|---|---|---|
artifact_id | uuid | Artifact this link resolved to. |
expires_at | ISO 8601 | The expiry it carried. Left as-is — revoked_at is what stops the link. |
revoked_at | ISO 8601 | When it was revoked. On a repeat call this is the first revocation time, not the retry's. |
last_accessed_at | ISO 8601 | null | Last successful download before revocation, or null if never used. |
access_count | int | Successful downloads recorded against this link. Useful for judging exposure after a leak. |
created_at | ISO 8601 | When the link was minted. |
▶Status codes
200— Revoked, or already revoked. The link no longer works.400— Invalidid(not a UUID).401— Missing or invalid API key.403— Caller lacks theartifacts:writescope.404— Unknown token, the token belongs to a different artifact, or the artifact is not visible to your organization.
Required scope:
artifacts:writeKeep the token if you may need to revoke. Revocation is by token, and Epoch stores only a hash of it — so a link whose token you no longer hold cannot be revoked through the API and will stay live until
expires_at. List Signed URL Audit shows which links are outstanding and when each one lapses.