Restore Project
Walk back a purge. A purged project is recoverable for 30 days: its row and its contents are kept, hidden from every list and read, and permanently deleted only once the window expires.
What comes back: the project and exactly the resources the purge removed. A resource you had deleted yourself before the purge stays deleted.
What does NOT come back, on purpose: every credential the purge
revoked stays revoked, and every grant it cleared stays cleared. API
keys and service accounts pinned to the project are not re-issued,
vault credentials and webhook endpoints scoped to it are not
undeleted, and member grants and pending-invite scopes are not
restored. Bringing a credential or a grant back would re-grant
access somebody deliberately ended, so the restore reports them
under still_revoked instead. Re-create the credentials and
re-grant the members the project still needs.
The project returns ARCHIVED, the state it was purged from, so nothing dispatches or bills inside it until you unarchive it.
Refused with 409 project_not_purged when the project was never
purged, 409 project_restore_window_expired once the 30 days have
passed, and 409 project_name_taken when another project has taken
this one’s name since the purge (a purge frees the name immediately
- rename the project holding it, then restore).
Authentication
Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.
Path parameters
Project id (prefixed external id, proj_...).
Headers
Response headers
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_idfield 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
When the project was archived. Always set on a restore: a project comes back suspended, never live.
What the restore deliberately left revoked: the credentials the purge killed. Every field is a real count, including zero.
A plain-language statement of what a restore does not bring back.
Constant text, meant to be shown to a person; branch on
still_revoked rather than parsing it.