Validate Plugin Marketplace Repository changedapi/beta/organization/plugin_marketplaces/validate_repository
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+268added
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 Repository ## Headers ## Body parameters ## Returns ## Example ### Response (200)
The whole hunk
268 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 Repository
url: https://platform.claude.com/docs/en/api/beta/organization/plugin_marketplaces/validate_repository
---
# Validate Plugin Marketplace Repository
**POST** `/v1/organizations/plugin_marketplaces/validate_repository`
Check whether a plugin marketplace held in a public GitHub repository would
synchronize into claude.ai, without connecting or storing it.
To check a `.zip` of the marketplace directory instead, use Validate Plugin Marketplace Archive.
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. A repository that is missing, private, or has no such branch or commit 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
- `repository_url: string`
The `https://` URL of a public repository on github.com that holds the marketplace. Any other host, a URL with credentials in it, or one that does not name a repository is a 400.
minLength: 1
- `ref: optional string or null`
The branch to validate the tip of, or the full 40-character SHA of the commit to validate. When omitted, the branch a synchronization would read (usually the repository's default branch); if that is not the default branch, the report's `ref` says which branch was read. An empty string, or a value that is neither a branch name nor a 40-character SHA, is a 400.
minLength: 1
## 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_repository \
-H 'Content-Type: application/json' \
-H 'anthropic-version: 2023-06-01' \
-H 'anthropic-beta: ce-plugins-2026-09-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY" \
-d '{
"repository_url": "https://github.com/example-org/example-marketplace",
"ref": "main"
}'
```
### 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.