Skip to content Skip to content

Plugins API

The plugins API is the REST surface behind the Plugin Manager UI and the plugin runtime bridge. It covers installation, lifecycle (enable/disable/upgrade), config, jobs, webhooks, local-folder mounts, dashboard data, and the worker-side bridge calls plugins make back to the host.

For the authoring SDK see Reference → Plugins → Plugin SDK.

All routes are mounted under /api. Most are instance-admin operations; the company-scoped routes are explicit in the path.


EndpointPurpose
GET /api/pluginsList installed plugins on this instance.
GET /api/plugins/examplesList bundled example plugins available to install.
GET /api/plugins/ui-contributionsAggregate of UI slots and launchers contributed by enabled plugins. The Paperclip UI consumes this on page load.
GET /api/plugins/toolsTools declared by enabled plugins.
POST /api/plugins/tools/executeExecute a plugin-declared tool by key.
EndpointPurpose
POST /api/plugins/installInstall a plugin package.
GET /api/plugins/:pluginIdRead the installed plugin record.
DELETE /api/plugins/:pluginIdUninstall the plugin.
POST /api/plugins/:pluginId/enableEnable the plugin; starts its worker.
POST /api/plugins/:pluginId/disableDisable the plugin; stops its worker and hides UI contributions.
POST /api/plugins/:pluginId/upgradeRun the upgrade flow against the plugin’s source.
GET /api/plugins/:pluginId/healthRead the current health diagnostics reported by the plugin worker.
GET /api/plugins/:pluginId/logsRead the plugin’s recent worker logs.
EndpointPurpose
GET /api/plugins/:pluginId/configRead the resolved instance config.
POST /api/plugins/:pluginId/configWrite a new instance config.
POST /api/plugins/:pluginId/config/testValidate a candidate config without persisting it - invokes the plugin’s validateConfig RPC.
EndpointPurpose
GET /api/plugins/:pluginId/jobsList the plugin’s declared jobs.
GET /api/plugins/:pluginId/jobs/:jobId/runsList recent runs for a job.
POST /api/plugins/:pluginId/jobs/:jobId/triggerManually trigger a job run.
POST /api/plugins/:pluginId/webhooks/:endpointKeyInbound webhook delivery to the plugin worker’s handleWebhook.

Plugins can declare local-folder mounts; the UI and CLI use these endpoints to inspect and configure them per company.

EndpointPurpose
GET /api/plugins/:pluginId/companies/:companyId/local-foldersList configured local-folder mounts for the plugin/company pair.
GET /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKey/statusStatus of one mount (configured / problems / listing summary).
POST /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKey/validateValidate a candidate folder path without persisting.
PUT /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKeyPersist a folder configuration for that mount.
EndpointPurpose
GET /api/plugins/:pluginId/dashboardRead the dashboard payload the plugin exposes to the UI.

These endpoints back the worker-to-host bridge - the calls a plugin worker makes when it asks the host for data, performs an action, or opens a stream. They are typically consumed by the runtime itself, but they are valid REST endpoints for tests and replay.

EndpointPurpose
POST /api/plugins/:pluginId/bridge/dataResolve a data request the worker initiated.
POST /api/plugins/:pluginId/bridge/actionResolve an action request the worker initiated.
GET /api/plugins/:pluginId/bridge/stream/:channelOpen a stream channel from the worker.
POST /api/plugins/:pluginId/data/:keyUI-facing entry to read a plugin’s registered data feed by key.
POST /api/plugins/:pluginId/actions/:keyUI-facing entry to invoke a plugin’s registered action by key.

Stability. The plugin runtime ships in alpha. Endpoint shapes here may change between Paperclip releases - pin your plugin and Paperclip versions in lockstep.