---
title: "Restore a form"
method: POST
path: "/forms/{formId}/restore"
tags: ["Forms"]
---

# Restore a form

`POST /forms/{formId}/restore`

## Request

- Base URL: `https://api.clipform.io/v1`
- URL: `https://api.clipform.io/v1/forms/{formId}/restore`
- Auth: HTTP bearer

Restores a trashed form as a draft without republishing it.

## Path parameters

- `formId` string, uuid, required

## Response `200`

Form restored

- FormSummary
  - `id` string, uuid
  - `title` string
  - `share_id` string
  - `is_live` boolean
  - `has_unpublished_changes` boolean: True when the working copy has drifted from the published snapshot.
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `deleted_at` string, date-time, nullable: When the form was moved to the trash. Null for an active form.
  - `tags` object[]: Only present when `?include=tags` is passed.
    - `id` string, uuid
    - `name` string
    - `color` string, nullable
  - `builder_url` string, uri: Dashboard Build tab for this form. Absent for an anonymous caller.
  - `viewer_url` string, uri: Live respondent link. Present only for a published (is_live) form, and absent for an anonymous caller.

## Other responses

- `403`: Restoring would exceed the workspace's plan form limit
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/clipform/apis/clipform-api.md) · [All operations](https://skmtc.dev/clipform/apis/clipform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/clipform/apis/clipform-api/revisions/490de83af482?raw)
