Project Teardown Plan

Beta
What deleting this project would do, in either mode, without doing it: whether a purge is available right now (`archived` and `purge_available`), every row holding the project open and which delete modes it refuses, what a purge would remove (a count per kind and a bounded sample of names), and the operational records a purge keeps. Nothing is mutated. Takes the same permission as the delete. Returns 404 for missing or foreign-workspace projects.

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Path parameters

project_idstringRequiredformat: "^proj_[0-9a-hjkmnp-tv-z]{26}$"

Project id (prefixed external id, proj_...).

Headers

Speechify-VersionstringOptional

Response headers

Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends a `Speechify-Request-Id` request header the server echoes it back (sanitized and length-capped) so one logical request can be traced end-to-end; otherwise the server generates a fresh value. Log it on every response and quote it in support requests - it is the stable handle that ties your observation to Speechify's server-side logs, and it matches the `request_id` field in the error envelope. The legacy alias `X-Request-ID` carries the same value and is still accepted on requests, until 2027-07-24. Prefer the un-prefixed name (RFC 6648).

Response

The teardown plan.
idstringformat: "^proj_[0-9a-hjkmnp-tv-z]{26}$"
namestring
archivedboolean
Whether the project is archived. A purge is only available from the archived state, so this is the precondition to check before offering a teardown.
purge_availableboolean

Whether mode: purge would be accepted right now: the project is archived and nothing blocks a purge. A courtesy read for the UI, never the authority - the delete re-decides both halves under the project’s row lock, so a stale true still answers 409.

blocker_countinteger

How many rows hold this project open in total. blockers lists at most 50 of them, so a project with more says so here; a delete is refused on this number, never on the length of the list.

blockerslist of objects
removeslist of objects
retainslist of objects

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error