Delete for good every run, case, suite and company whose six months have passed
const url = 'https://beta-api.plune.ai/v1/admin/purge';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://beta-api.plune.ai/v1/admin/purge \ --header 'Authorization: Bearer <token>'The second half of the run delete: DELETE /v1/runs/{id} hides a run and keeps it, this removes what has aged out. Irreversible — nothing brings these rows back, which is why they wait six months first. Restricted to the owner of the deployment; everyone else gets 404. Called by a schedule, not by a person: 0 everywhere is the normal answer.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”What the sweep removed
object
Deleted cases whose six months have passed, removed with their results (D21).
Deleted suites whose six months have passed and nothing live points at.
Projects a company took into the bin whose six months have passed, emptied (ADR 0038) — what was in them is counted above; the project row stays, because its audit feed names it.
Deleted companies whose six months have passed, removed with their people and invitations (ADR 0038).
Example generated
{ "ranAt": "2026-04-15T12:00:00Z", "runs": 1, "reviewItems": 1, "results": 1, "testCases": 1, "suites": 1, "projects": 1, "companies": 1}No / invalid token or session
The caller does not own the application
object
Example generated
{ "error": "example"}Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.
object
Example generated
{ "error": "example"}Headers
Section titled “Headers ”Seconds until the window rolls over