---
title: "Uninstall a listing"
method: DELETE
path: "/v1/projects/{project_id}/installs/{install_id}"
tags: ["Installs"]
---

# Uninstall a listing

`DELETE /v1/projects/{project_id}/installs/{install_id}`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/installs/{install_id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Remove the install. While the project's agents, ingestion rules or other resources still name the installed resource, this answers `409 install_in_use` with them in `details.references`; `force=true` uninstalls anyway and those resources stop reaching it.
A `blocked` install, and the install managed conversion uses, answer `403`.

## Query parameters

- `force` boolean

## Response `204`

Uninstalled.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: The credential is scoped to a different project, or the caller's role in the project does not carry this action.
- `404`: The resource does not exist (existence is not leaked).
- `409`: `listing_suspended` (the listing cannot be installed while suspended) or `install_in_use` (resources still name the installed resource; `details.references` lists them).

---

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