Validate Plugin Marketplace Archive changedapi/beta/organization/plugin_marketplaces/validate_archive
Nearest release: v2.1.286, published 6 hours before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+259added
Lines−0removed
From line
—
no hunk to open at
First seen
30 Sep 2026
this site's first read of the page
Recorded edits2to this page, all time
# Validate Plugin Marketplace Archive ## Headers ## Body parameters (form-data) ## Returns ## Example ### Response (200)
The whole hunk
259 lines, new page
/
lines
A whole new page. There's nothing to diff it against, so here is what it says.
---
title: Validate Plugin Marketplace Archive
url: https://platform.claude.com/docs/en/api/beta/organization/plugin_marketplaces/validate_archive
---
# Validate Plugin Marketplace Archive
**POST** `/v1/organizations/plugin_marketplaces/validate_archive`
Check whether a plugin marketplace, uploaded as a `.zip` of the marketplace
directory, would synchronize into claude.ai, without connecting or storing it.
To check a public GitHub repository instead, use Validate Plugin Marketplace Repository.
The report says whether `marketplace.json` is well-formed, which plugins a
synchronization would skip and why, and which plugins would synchronize only in
part, with some files left out. An archive that cannot be read as a marketplace is reported, not refused: the response is a report with `valid: false`. Plugin sources outside the marketplace
are fetched anonymously from GitHub, so a private one is reported as not found; a
source on any other host is not fetched here, and the report notes that it will be
checked when the marketplace actually synchronizes.
Nothing is recorded on the Compliance API activity feed.
For a worked example, see [Validate marketplace content](/docs/en/manage-claude/plugins-api#validate-marketplace-content)
in the Plugins API guide.
**Accepted credentials:** an Admin API key with the `read:plugins` or `write:plugins` scope; `read:org_audit` and `read:compliance_org_data` do not grant it.
Every request must include the beta header `anthropic-beta: ce-plugins-2026-09-01`. A request without it returns `404`, exactly as if the endpoint did not exist. The Plugins API is in beta and is available to Claude Enterprise organizations only. It is not available to Claude Platform (Claude Console) organizations, or to organizations with HIPAA readiness enabled.
## Headers
- `"anthropic-beta": optional array of AnthropicBeta`
This endpoint is in beta: requests must send `ce-plugins-2026-09-01` in this header.
- `string`
- `"message-batches-2024-09-24"`
- `"prompt-caching-2024-07-31"`
- `"computer-use-2024-10-22"`
- `"computer-use-2025-01-24"`
- `"pdfs-2024-09-25"`
- `"token-counting-2024-11-01"`
- `"token-efficient-tools-2025-02-19"`
- `"output-128k-2025-02-19"`
- `"files-api-2025-04-14"`
- `"mcp-client-2025-04-04"`
- `"mcp-client-2025-11-20"`
- `"dev-full-thinking-2025-05-14"`
- `"interleaved-thinking-2025-05-14"`
- `"code-execution-2025-05-22"`
- `"extended-cache-ttl-2025-04-11"`
- `"context-1m-2025-08-07"`
- `"context-management-2025-06-27"`
- `"model-context-window-exceeded-2025-08-26"`
- `"skills-2025-10-02"`
- `"fast-mode-2026-02-01"`
- `"output-300k-2026-03-24"`
- `"user-profiles-2026-03-24"`
- `"user-profiles-2026-08-18"`
- `"user-profiles-2026-09-04"`
- `"advisor-tool-2026-03-01"`
- `"managed-agents-2026-04-01"`
- `"cache-diagnosis-2026-04-07"`
- `"dreaming-2026-04-21"`
- `"thinking-token-count-2026-05-13"`
- `"server-side-fallback-2026-06-01"`
- `"server-side-fallback-2026-07-01"`
- `"fallback-credit-2026-06-01"`
- `"fallback-credit-2026-07-01"`
- `"agent-memory-2026-07-22"`
- `"mid-conversation-tool-changes-2026-07-01"`
- `"compact-2026-01-12"`
- `"computer-use-2025-11-24"`
- `"mcp-tunnels-2026-06-22"`
- `"structured-outputs-2025-11-13"`
- `"task-budgets-2026-03-13"`
- `"thinking-display-updates-2026-08-18"`
- `"ce-user-management-2026-07-13"`
- `"mid-conversation-output-config-2026-07-01"`
- `"thinking-binding-controls-2026-08-01"`
- `"mid-conversation-system-clear-at-2026-08-21"`
- `"compact-2026-09-04"`
- `"inline-tools-2026-09-15"`
- `"mcp-client-2026-09-15"`
- `"ce-plugins-2026-09-01"`
## Body parameters (form-data)
- `archive: string`
A .zip of the marketplace directory (its contents at the root, or wrapped in one folder as a Git host's download produces), sent as a file part with a filename; DEFLATE- or STORE-compressed, at most 32 MB. A part sent without a filename, a second archive part, or any other form field is a 400; a larger archive is a 413.
format: binary
## Returns
- `BetaPluginMarketplaceValidationReport object`
The outcome of validating plugin marketplace content: a report, not a
stored object, so nothing in it can be retrieved afterwards.
- `type: "plugin_marketplace_validation_report"`
Always `plugin_marketplace_validation_report`.
default: plugin_marketplace_validation_report
- `commit_sha: string or null`
The full SHA of the commit that was validated: for a repository, the commit that was read; for an uploaded archive, the commit recorded in the archive's comment (as a Git host's download writes it; not verified), else null.
- `manifest_error: string or null`
Set when nothing could be validated: the repository or archive could not be read, or marketplace.json is missing, malformed or over a limit. Null otherwise.
- `manifest_error_code: string or null`
A stable identifier for `manifest_error`; null when that is.
- `plugin_errors: array of BetaPluginMarketplaceValidationPluginError`
One entry per plugin a synchronization would skip entirely, keyed by the plugin's name in marketplace.json.
- `error: string`
Why the plugin would be skipped by a synchronization.
- `error_code: string`
A stable identifier for the reason — the value to branch on.
- `name: string`
The plugin's name, as its entry in marketplace.json declares it.
- `plugin_warnings: array of BetaPluginMarketplaceValidationPluginWarnings`
One entry per plugin that would synchronize with some of its contents left out, keyed by the plugin's name in marketplace.json.
- `name: string`
The plugin's name, as its entry in marketplace.json declares it.
- `warnings: array of BetaPluginMarketplaceValidationPluginWarning`
The parts of the plugin a synchronization would leave out.
- `error_code: string`
A stable identifier for the kind of warning.
- `message: string`
What would be left out, and why.
- `ref: string or null`
For a repository, the branch that was read by name: the one requested, or else the branch a synchronization of this repository is set to read. Null when no branch is named or set and the repository's default branch was read, for a request by commit SHA, and for an uploaded archive.
- `total_plugin_count: number`
How many plugins marketplace.json declares; 0 when it could not be read.
- `valid: boolean`
True when marketplace.json is well-formed and no plugin would be skipped; warnings never make it false.
## Example
```bash
curl https://api.anthropic.com/v1/organizations/plugin_marketplaces/validate_archive \
-H 'Content-Type: multipart/form-data' \
-H 'anthropic-version: 2023-06-01' \
-H 'anthropic-beta: ce-plugins-2026-09-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY" \
-F 'archive=@/path/to/archive'
```
### Response (200)
```json
{
"commit_sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
"manifest_error": "manifest_error",
"manifest_error_code": "marketplace_sync_manifest_not_found",
"plugin_errors": [
{
"error": "error",
"error_code": "marketplace_sync_plugin_missing_manifest",
"name": "name"
}
],
"plugin_warnings": [
{
"name": "name",
"warnings": [
{
"error_code": "marketplace_sync_zipball_symlink_dangling",
"message": "message"
}
]
}
],
"ref": "main",
"total_plugin_count": 0,
"type": "plugin_marketplace_validation_report",
"valid": false
}
```
No line in this hunk matches that.