Skip to content

Unarchive a project page ​

POST/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/unarchive/

Restore an archived project page. The call sets the page's archived_at back to null and restores its nested pages with it. After this, Delete a project page refuses the page again until you re-archive it.

This is a bodyless POST. Send no JSON. A successful call returns 204 with no body.

The call is idempotent. Unarchiving a page that isn't archived returns 204 and changes nothing.

A nested page can't come back while its parent is still archived. In that case, the call returns 400 invalid_request with detail The parent page should be restored first. Unarchive the parent instead, and the nested page comes back with it.

Path Parameters ​

slug:requiredstring

The workspace slug. It appears in your Plane URLs. In https://app.plane.so/my-team/projects/, the slug is my-team.

project_id:requiredstring

The project the page belongs to. Accepts the project UUID or its bare identifier, for example ENG.

pk:requiredstring (uuid)

The id of the page to restore.

Body Parameters ​

None. The endpoint takes no request body.

Scopes ​

projects.pages:write

Errors ​

StatusCodeCause
400invalid_requestThe page's parent is still archived.
401unauthorizedMissing or invalid credentials.
402payment_requiredThe feature this endpoint belongs to isn't enabled on your plan, or is switched off.
403forbiddenYour role or token scope can't restore this page.
404not_foundNo such page in this project, or you can't see it.
406not_acceptableThe Accept header asks for a representation the API can't produce.
409conflictAll write endpoints declare this status. This endpoint has no conflict case of its own.
413payload_too_largeThe request body is over the size limit.
415unsupported_media_typeThe Content-Type isn't one this endpoint accepts.
429rate_limitedThrottled. Honor the Retry-After header before retrying.
Unarchive a project page
bash
curl -X POST \
  "https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/pages/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/unarchive/" \
  -H "X-Api-Key: $PLANE_API_KEY"
Response204

No response body.

Response400
json
{
  "type": "invalid_request",
  "code": "invalid_request",
  "detail": "The parent page should be restored first."
}

What unarchiving changes ​

  • archived_at on the page goes back to null.
  • Every nested page under it is restored too, including nested pages that were archived on their own before the parent was. The nested pages are updated in the background, so for a moment after the 204 they can still read as archived.

Unarchiving doesn't undo the other effects of archiving:

  • The page stays unpublished. If you need its public link back, publish it again in the Plane app.
  • Favorites that archiving removed stay removed.

Learn more about restoring pages