---
title: "Restore deleted app"
method: POST
path: "/api/apps-trash/{app_id}/restore"
---

# Restore deleted app

`POST /api/apps-trash/{app_id}/restore`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps-trash/{app_id}/restore`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Takes an app out of the trash, up to 30 days after [Delete app](/api-reference/delete-app) put it there.

You can restore an app you own, and a workspace admin can restore any app in the workspace. You must still be a member of the app's workspace, and the workspace must have room under its plan's app limit.

The app comes back with its entity records. If its owner left the workspace while it was in the trash, the workspace owner becomes its owner, and collaborators who left don't get their access back. If another app took its slug, it moves to a free one, returned as `new_slug`. Its backend functions are deployed again, and an app that was published goes live again.

<Warning>Restoring doesn't reconnect the resources the delete released, such as custom domains and OAuth connections. Read `reconnect_needed` to see what to set up again.</Warning>

The whole restore runs before you get a response, so the call takes longer on an app with many backend functions. A restore can't be repeated: once the app is out of the trash, calling this again returns a `409`.

This is limited to 10 requests per minute. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key. A read-only key is refused, and workspace API keys are not accepted.</Note>

## Path parameters

- `app_id` string, required: ID of the app to restore, as returned by [Delete app](/api-reference/delete-app).

## Response `200`

The app is back, and what still needs reconnecting.

- RestoreResult
  - `app_id` string, required: ID of the restored app.
  - `entities_undeleted` integer: Number of entity records brought back with the app.
  - `new_slug` string, nullable: The app's new slug when another app took its old one while it was in the trash, or `null` when the app kept its slug.
  - `functions_redeployed` boolean: Whether the app's backend functions were deployed again. When `false`, `reconnect_needed` includes `functions`. `true` for an app with no functions.
  - `reconnect_needed` string[]: What you still need to do. It has the `deleted_resources` values from [Delete app](/api-reference/delete-app), which the restore doesn't rebuild, plus `functions` when the backend functions didn't deploy, `republish` when the published app needs a new [deploy](/api-reference/deploy-an-app) to run its functions, and `runtime` when the published app isn't reachable yet. Base44 retries that last one in the background.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: You neither own the app nor administer its workspace, you're no longer a member of its workspace, or your API key is read-only.
- `404`: App not found, or it's outside the workspace or the apps your credential is allowed to reach.
- `409`: The app can't be restored right now. It isn't in the trash, it was deleted more than 30 days ago or before restoring was available, the workspace is at its app limit, no free slug was found, or another restore or deploy of the app is in progress. The error message says which. Only the last case is worth retrying.
- `429`: Rate limit exceeded. The base limit is 10 requests per minute. Wait the number of seconds in the `Retry-After` header before you retry.

## Changes

- **2026-10-11** `80287813ab84`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-10** `fc604cdcc3a2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps-trash/:app_id/restore/post.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) - [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/idealspot/apis/base44-app-management-api/revisions/b5b4ebd82a1e?raw)
