---
title: "Update plugin"
method: POST
path: "/api/plugin/{RepoName}/upgrade"
tags: ["plugin"]
---

# Update plugin

`POST /api/plugin/{RepoName}/upgrade`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/api/plugin/{RepoName}/upgrade`
- Auth: none declared

Pull in git updates for plugin {RepoName}: the checked-out branch's tip, or, when the versions[] entry for this FPP pins a sha the clone has not passed, that sha and no further. Before the plugin's own fpp_upgrade.sh (or fpp_install.sh) runs, its declared dependencies are reconciled against the new version: newly declared apt, Python and script dependencies are installed, and package claims the new version no longer declares are released (apt-removed once nothing else needs them). A newly declared dependency plugin is reported, not installed -- the operator has to see its privacy disclosure on the Plugins page. Supports ?stream=true. When the privacy block the update would land differs materially from the one accepted for this plugin, the update is refused unless the POST body is `{"privacyAccepted": <block>}` with that block. Only the FPP Plugins page may send `privacyAccepted`, and only with a block it actually showed the operator (GET /plugin/{RepoName}/privacy; its Update and Update All both do). Scripts and other API clients POST no body -- not even by echoing `pending` back from a refusal: on `Code: "PrivacyMismatch"` they stop and send the operator to the Plugins page. The server cannot tell callers apart, so this is a rule for clients, not something it enforces. Refused on privacy grounds (the same shape as POST /api/plugin): `{"Status": "Error", "Code": "PrivacyMismatch", "reason": "mismatch", "Message": "…", "privacyChanged": true, "plugin": "fpp-matrixtools", "pending": {"sends": [], "remoteAccess": "none"}}`.

## Request body

- object

## Response `200`

Plugin upgraded

- object

## Changes

- **2026-10-02** `16514508a38f`: 1 info
  - endpoint added
- **2026-09-15** `a923e87eff94`: 1 breaking
  - api removed without deprecation
- **2026-09-14** `b6816e82545e`: 6 info
  - added the optional property `Code` to the response with the `200` status
  - added the optional property `Message` to the response with the `200` status
  - added the optional property `Status` to the response with the `200` status
  - added the optional property `pending` to the response with the `200` status
  - …2 more
- **2026-09-13** `cce5c6b943c8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/falconchristmas/apis/fpp-api/changes/api/plugin/:RepoName/upgrade/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/1b633540718c?raw)
