---
title: "Install plugin"
method: POST
path: "/api/plugin"
tags: ["plugin"]
---

# Install plugin

`POST /api/plugin`

Install a new plugin. The request body is a `pluginInfo.json` structure with `branch` and `sha` fields added to specify which branch and commit to install.

`privacyAccepted` (optional, null allowed) is the privacy block the caller showed the operator, the same field `POST /plugin/{RepoName}/upgrade` takes. When it matches the block in the cloned copy (sends, collects, sensors, remoteAccess, systemChanges, closedCode) that block is recorded as accepted in config/pluginPrivacyAccepted.json; when it does not -- the listing is behind the repository, or the selected version pins an older commit -- the install still goes ahead and nothing is recorded, so the next update check reports `privacyChanged` and the Plugins page shows the installed block. A body without the field records nothing.

## Request body

- object — A pluginInfo.json structure plus `branch`, `sha` and optionally `privacyAccepted`.
  - `repoName` string
  - `srcURL` string
  - `branch` string
  - `sha` string
  - `privacyAccepted` object, nullable — The privacy block the caller showed the operator (the `privacy` object of pluginInfo.json), or null when the dialog said "no disclosure". Recorded as accepted only if it matches the cloned copy's block in the material keys (sends, collects, sensors, remoteAccess, systemChanges, closedCode). Omit to record nothing.
  - `dependencyPrivacyAccepted` object — repoName -> the privacy block the dialog showed for each dependency plugin this install pulls in (null = no disclosure). Each is recorded the same way as `privacyAccepted` when that plugin is installed as a dependency.

## Response `200`

Plugin installed

- object

## Changes

- **2026-09-13** `cce5c6b943c8` — 6 info
  - added the new optional request property `branch`
  - added the new optional request property `dependencyPrivacyAccepted`
  - added the new optional request property `privacyAccepted`
  - added the new optional request property `repoName`
  - …2 more

[Change history](https://skmtc.dev/falconchristmas/apis/fpp-api/changes/api/plugin/post.md)

---

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