---
title: "Put a deleted table or field back"
description: "Restore tables with rows and links, fields with values, converted columns with previous values, and their grants, using the same IDs."
canonical: "https://grid82.com/docs/builder-api/trash/restore"
updated: "2026-11-13"
---

# Put a deleted table or field back

`POST https://studio.grid82.app/v1/apps/{appId}/trash/{trashId}/restore`

Restore tables with rows and links, fields with values, converted columns with previous values, and their grants, using the same IDs.

Records created since keep their values. Restore values only to existing records and links only when both records exist. Refused if an ID is now in use; restore the table before its fields.

Requires the `schema:write` scope. Operation `trash.restore`. MCP tool `trash_restore`. CLI: `grid82 trash restore` (`npx grid82`).

## Path parameters

| Name      | Type   | Required | Description |
| --------- | ------ | -------- | ----------- |
| `appId`   | string | yes      |             |
| `trashId` | string | yes      |             |

## Headers

| Name              | Type   | Required | Description                                                                                                                                                                                                                                                        |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Idempotency-Key` | string | no       | Any unique string. Sending the same key with the same request again returns the first response (marked `Idempotency-Replayed: true`) instead of running it twice. Reusing it for a different request is refused with 409. Kept for 24 hours. Up to 255 characters. |

**Authorizations**

- `Authorization` (bearer, in header, required)

## Response

**200**: Success

- `data` (`object`, required)
- `data.id` (`string`, required)
- `data.kind` (`string`, required)
- `data.label` (`string`, required)

```json
{
  "data": {
    "id": "<string>",
    "kind": "<string>",
    "label": "<string>"
  }
}
```

**4XX**: Refused

- `error` (`object`, required)
- `error.code` (`enum<string>`, required, one of: `not_found, forbidden, unauthenticated, validation_failed, conflict, rate_limited, payment_required, not_implemented, internal`)
- `error.message` (`string`, required)
- `error.details` (`Record<string, unknown>`)

```json
{
  "error": {
    "code": "not_found",
    "message": "<string>",
    "details": {}
  }
}
```

**Example request**

```bash
curl --request POST \
  --url 'https://studio.grid82.app/v1/apps/<appId>/trash/<trashId>/restore' \
  --header 'Authorization: Bearer <token>'
```
