---
title: "Install a listing"
method: POST
path: "/v1/projects/{project_id}/installs"
tags: ["Installs"]
---

# Install a listing

`POST /v1/projects/{project_id}/installs`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/installs`
- 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`)

Install a listing by its id. A listed entry, a draft and a listing in review all install; a suspended one answers `409 listing_suspended`. Installing again answers the existing install.
After the publisher removed this project's access, installing answers `403 install_blocked`.

## Request body

- InstallCreate
  - `listing_id` string, required

## Response `200`

The project had already installed the listing.

- Install: A listing installed in a project.
  - `id` string, required
  - `project_id` string, required: The installing project.
  - `listing_id` string, required
  - `resource_type` 'tool' | 'agent', required
  - `resource_id` string, required: The id the project names the installed resource by.
  - `state` 'active' | 'suspended' | 'blocked', required: `active` while usable, `suspended` while its listing is, `blocked` after the publisher removed the project's access.
  - `installed_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `201`: Listing installed.
- `400`: The request was malformed or failed validation.
- `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)
