Documents

Restore a document

Takes a document back out of the trash.

POST /v1/documents/:id/restore

Permission

The key must be granted docs.documents.write

A key without it gets 403 insufficient_scope, with the missing permission named in details.

Takes no body. Restoring a document that was never trashed changes nothing and still answers with it.

Path parameters

Field Type Description
id required string The trashed document to restore.

Request

curl https://api.veruapis.com/v1/documents/:id/restore \
  -X POST \
  -H "Authorization: Bearer vak_live_..." \
  -H "Idempotency-Key: $(uuidgen)"

Idempotency-Key is required on every write. Retrying with the same key returns the original response rather than repeating the operation, so a timeout is something you retry rather than something you investigate.

Response

Field Type Description
id string
type string documentspreadsheet
title string
state string activetrashed
owner_id string The workspace user who owns it, which is not necessarily the key's owner.
folder_id string Empty for a document in the root.
metadata object Whatever you stored on it.
created_at RFC 3339
updated_at RFC 3339
{
  "data": { "id": "0192a1c2-6f3e-7a41-b8d2-5e9f0c3a7b41", "type": "spreadsheet", "title": "Q3 plan", "state": "active", "updated_at": "2026-09-10T09:10:00Z" },
  "meta": { "request_id": "req_01j8z9...", "timestamp": "2026-09-02T10:00:00Z" }
}
Worth knowing

Takes no body. Restoring something that was never trashed changes nothing and still answers with it, so a retry is safe.

Errors

Every failure uses the same shape, with a stable string code you can branch on. See the error reference.

Related

POST /v1/documents/:id/restore

id
Sends this body to your own workspace, for real. Edit it before running.