---
title: "Rename, move, or restore a file"
method: PATCH
path: "/api/workspaces/{slug}/files/{fileId}"
tags: ["Files"]
---

# Rename, move, or restore a file

`PATCH /api/workspaces/{slug}/files/{fileId}`

## Request

- Base URL: `https://trydock.ai`
- URL: `https://trydock.ai/api/workspaces/{slug}/files/{fileId}`
- Auth: HTTP bearer

Discriminated payload: `{ name }` to rename, `{ parentFolderId }` to move (pass `null` for root, must be in the same surface), `{ restore: true }` to un-archive a soft-deleted file. Rename keeps blobKey stable so deep-links never break. Restore + name in the same body is rejected.

## Path parameters

- `slug` string, required
- `fileId` string, required

## Request body

- object
  - `name` string
  - `parentFolderId` string, nullable
  - `restore` true

## Response `200`

Updated file

- object
  - `id` string, required
  - `name` string, required
  - `parentFolderId` string, nullable, required
  - `size` integer, required: Bytes.
  - `mimeType` string, required
  - `thumbUrl` string, nullable, required: Server-generated 256-px webp URL. Null for non-raster files.
  - `starred` boolean
  - `starredAt` string, date-time, nullable
  - `description` string, nullable
  - `tags` string[]
  - `exif` object, nullable
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400`: Cross-surface move / archived rename / combo rejected
- `404`: File not found

## Changes

- **2026-11-05** `767beae124a8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/trydock/apis/dock-rest-api/changes/api/workspaces/:slug/files/:fileId/patch.md)

---

[API](https://skmtc.dev/trydock/apis/dock-rest-api.md) - [All operations](https://skmtc.dev/trydock/apis/dock-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/trydock/apis/dock-rest-api/revisions/dd96ae96a412?raw)
