---
title: "Update Plugin"
method: PUT
path: "/claude-code/plugins/{plugin_name}"
tags: ["claude_code_marketplace"]
---

# Update Plugin

`PUT /claude-code/plugins/{plugin_name}`

Update an existing plugin in the LiteLLM marketplace.

The plugin is identified by its name in the path, which is the resource
identity and cannot be changed here. This is a full replace, not a merge:
the manifest is rebuilt from the request body, so any optional field left
out is reset to its default (e.g. an omitted version is cleared, not kept).
Send the full desired state.

Returns 404 if no plugin with the given name exists; use
POST /claude-code/plugins to create a new plugin.

Requires a proxy admin API key.

Parameters:
    - plugin_name: Name of the plugin to update (path parameter)
    - source: Git source reference (github, url, or git-subdir format)
    - version: Semantic version (optional)
    - description: Plugin description (optional)
    - author: Author information (optional)
    - homepage: Plugin homepage URL (optional)
    - keywords: Search keywords (optional)
    - category: Plugin category (optional)

Returns:
    Update status (action is always "updated") and plugin information.

Example:
    ```bash
    curl -X PUT http://localhost:4000/claude-code/plugins/my-plugin \
      -H "Authorization: Bearer sk-..." \
      -H "Content-Type: application/json" \
      -d '{
        "source": {"source": "github", "repo": "org/my-plugin"},
        "version": "2.0.0",
        "description": "My awesome plugin"
      }'
    ```

## Path parameters

- `plugin_name` string, required

## Request body

- UpdatePluginRequest — Request body for replacing an existing plugin. The plugin name is the resource identity and is supplied as the path parameter, so it cannot be changed here. This is a full replace: omitted fields reset to their defaults, so version is cleared rather than defaulting to the create-time "1.0.0".
  - `author` PluginAuthor — Plugin author information.
    - `email` string, nullable — Author email
    - `name` string, required — Author name
  - `category` string, nullable — Plugin category
  - `description` string, nullable — Plugin description
  - `domain` string, nullable — Skill domain (e.g., 'Productivity')
  - `homepage` string, nullable — Plugin homepage URL
  - `keywords` string[], nullable — Search keywords
  - `namespace` string, nullable — Skill namespace within domain (e.g., 'workflows')
  - `source` object, required — Git source reference. Supported formats: - GitHub: {'source': 'github', 'repo': 'org/repo'} - Git URL: {'source': 'url', 'url': 'https://github.com/org/repo.git'} - Git Subdir: {'source': 'git-subdir', 'url': 'https://github.com/org/repo.git', 'path': 'plugins/plugin-name'}
  - `version` string, nullable — Semantic version; cleared if omitted

## Response `200`

Successful Response

- RegisterPluginResponse — Response from plugin registration.
  - `action` string, required — Action taken (created/updated)
  - `plugin` PluginResponse, required — Plugin information in API responses.
    - `description` string, nullable — Plugin description
    - `enabled` boolean, required — Whether plugin is enabled
    - `id` string, required — Plugin unique ID
    - `name` string, required — Plugin name
    - `source` object, required — Git source reference
    - `version` string, nullable — Plugin version
  - `status` string, required — Operation status

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-19** `c357baf422ab` — 2 info
  - api tag `claude_code_marketplace` added
  - api tag `Claude Code Marketplace` removed
- **2026-09-18** `082b5fabd909` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/flock/apis/litellm-api/changes/claude-code/plugins/:plugin_name/put.md)

---

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