Layers

Delete a Project

Project deletion is immediate and irreversible. Runs via streaming SSE from the purge endpoint.

View as Markdown

Delete is available under Project settings → General in the Delete Project danger-zone card.

Flow

  1. Click Delete project. A confirmation dialog opens.
  2. Click Delete project again. The dialog switches to a progress state and streams server-sent events from POST /api/projects/{projectId}/purge.
  3. When the done event fires, the page navigates to the Org's projects list.

Deletion is immediate and irreversible. There is no archive state, no "scheduled for deletion in 30 days" grace period, no cancel window.

What the purge endpoint does

The purge endpoint connects directly to the project's backing database, sets statement_timeout = 0, and removes the project's data in batched DELETEs. Progress is streamed back as SSE events (progress, done, error).

Retry behavior

If the request hits a 429, the UI waits for Retry-After seconds and retries up to 5 times. Long deletions can take a minute or more.

Pre-flight

The UI shows a simple warning about permanence before you confirm but does not run pre-flight checks for connected ad accounts, open SideShift briefs, or unpaid wallet balances in the current code. Anything that needs to be revoked at a platform (e.g. Business Center partnerships) must be handled separately.

What persists after delete

The purge deletes rows tied to the project across many tables. Audit log retention and invoice history are controlled at the Org / billing layer, not by this route.

On this page