Claude Platform Docs

Plugin Marketplaces

List Plugin Marketplaces
$client->beta->organization->pluginMarketplaces->list(?int limit, ?string organizationID, ?OwnerType ownerType, ?string page, ?Source source, ?list<AnthropicBeta> betas): PageCursor<PluginMarketplace>
GET/v1/organizations/plugin_marketplaces

List the plugin marketplaces Plugins live in, newest first: the organization's own and its members' personal ones.

Get Plugin Marketplace
$client->beta->organization->pluginMarketplaces->retrieve(string marketplaceID, ?string organizationID, ?list<AnthropicBeta> betas): PluginMarketplace
GET/v1/organizations/plugin_marketplaces/{marketplace_id}

Retrieve a plugin marketplace by ID.

Update Plugin Marketplace
$client->beta->organization->pluginMarketplaces->update(string marketplaceID, DefaultInstallationPreference defaultInstallationPreference, ?list<AnthropicBeta> betas): PluginMarketplace
POST/v1/organizations/plugin_marketplaces/{marketplace_id}

Set the default installation setting of one of the organization's own plugin marketplaces. Every Plugin in it without a setting of its own gets this default as its organization-wide setting, including Plugins added later.

Validate Plugin Marketplace Repository
$client->beta->organization->pluginMarketplaces->validateRepository(string repositoryURL, ?string ref, ?list<AnthropicBeta> betas): PluginMarketplaceValidationReport
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.

Validate Plugin Marketplace Archive
$client->beta->organization->pluginMarketplaces->validateArchive(string archive, ?list<AnthropicBeta> betas): PluginMarketplaceValidationReport
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.

Models
class PluginMarketplace { $type = 'plugin_marketplace'; $id; $createdAt; /* 7 more */ }
"plugin_marketplace" type

Always plugin_marketplace.

string id

The plugin marketplace's ID, prefixed marketplace_.

\Datetime createdAt

RFC 3339.

?DefaultInstallationPreference defaultInstallationPreference

Organization plugin marketplace: the organization-wide setting every Plugin in it with no setting of its own gets. Null for a member's personal plugin marketplace. One of required, auto_install, available, not_available; a value this API does not yet name is returned as stored.

?\Datetime lastSyncEndedAt

RFC 3339. When the most recent synchronization attempt to finish did so, whatever its outcome; for a repository plugin marketplace no synchronization has run on yet, when it was created. Null for a plugin marketplace that is not synchronized from a repository.

?string lastSyncReadSha

The commit the last synchronization attempt that reached the repository read, whether or not its content was then accepted (see sync_status); an attempt that ends failed_auth or failed_transient leaves it unchanged. Null until an attempt has first read the repository, and for a plugin marketplace that is not synchronized from a repository.

string name

Fixed for the plugin marketplace's lifetime.

Owner owner

The organization, or the member whose personal plugin marketplace it is.

Source source

Where the plugin marketplace's Plugins come from: manual when they are uploaded; github, gitlab or public_git when they are synchronized from the Git repository the owner connected, into which nothing can be uploaded; directory is Anthropic's own catalog, which this API does not list. A value this API does not yet name is returned as stored.

?SyncStatus syncStatus

Outcome of the plugin marketplace's most recent synchronization: one of success, in_progress, failed_content, failed_transient, failed_auth, failed_limits; a value this API does not yet name is returned as stored. Null until a synchronization is first attempted — so always for a manual plugin marketplace.

class PluginMarketplaceValidationPluginError { $error; $errorCode; $name; }
string error

Why the plugin would be skipped by a synchronization.

string errorCode

A stable identifier for the reason — the value to branch on.

string name

The plugin's name, as its entry in marketplace.json declares it.

class PluginMarketplaceValidationPluginWarning { $errorCode; $message; }
string errorCode

A stable identifier for the kind of warning.

string message

What would be left out, and why.

class PluginMarketplaceValidationPluginWarnings { $name; $warnings; }
string name

The plugin's name, as its entry in marketplace.json declares it.

The parts of the plugin a synchronization would leave out.

class PluginMarketplaceValidationReport { $type = 'plugin_marketplace_validation_report'; $commitSha; $manifestError; /* 6 more */ }
"plugin_marketplace_validation_report" type

Always plugin_marketplace_validation_report.

?string commitSha

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.

?string manifestError

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.

?string manifestErrorCode

A stable identifier for manifest_error; null when that is.

One entry per plugin a synchronization would skip entirely, keyed by the plugin's name in marketplace.json.

One entry per plugin that would synchronize with some of its contents left out, keyed by the plugin's name in marketplace.json.

?string ref

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.

int totalPluginCount

How many plugins marketplace.json declares; 0 when it could not be read.

bool valid

True when marketplace.json is well-formed and no plugin would be skipped; warnings never make it false.