Dedicated Gateways are crucial for retrieving and delivering content on IPFS, but there are times you may need additonal functionality. Gateway Plugins serve that purpose, anything from hot swapping CIDs to delivering signatures and more!

Installing Plugins

You can install plugins either through the Pinata App or the Pinata API.

Pinata App

To install a plugin navigate to the Plugins Marketplace tab on the right side.

Once there you can find the plugin you want to install and click “Install.” This will bring up a drop down of your Dedicated Gateways to choose which the plugin is installed to.

Once installed you can confirm its there by going to the “My Plugins” tab.

Pinata API

With the Pinata API you can list all available plugins using the /ipfs/plugins_marketplace endpoint.

To install one you can make a request to /ipfs/gateway_plugins/:gateway_id by using the gateway_id as a path parameter and the plugin_id as body of the request.

You can confirm the plugin is installed by using /ipfs/gateway_plugins/:gateway_id

Using Plugins

Each plugin has its own unique use case and usage, please see the appropriate links for each one to see how they are used.

Content Addressable Plugin

Uninstalling Plugins

Just like installing, removing a plugin can be done through the Pinata App or the Pinata API.

Pinata App

To unintall a plugin first navigate to the Plugin Marketplace tab and then select the “My Plugins” tab.

Then locate the target gateway and plugin, then click the action item on the right hand side and select “Uninstall” from the dropdown menu.

Pinata API

To uninstall a plug from the API you can use the /ipfs/gateway_plugins/:gateway_id/plugin/:plugin_id endpoint, where the gateway_id is the target gateway and the plugin_id is the target plugin to uninstall.

Install Plugin
const gatewayId = "8673cd80-bf53-4bca-b684-bec1d6bdf004"
const pluginId = 1
const uninstallPlugin = await fetch(`https://api.pinata.cloud/v3/ipfs/gateway_plugins/${gatewayId}/plugin/${pluginId}`, {
  method: "DELETE",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${PINATA_JWT}`
  }
})