Install from ClawHub
Get this skill from the ClawHub registry
Installation
From ClawHub (Recommended)
Manual Installation
- Clone or download the repository
- Copy the
srcfolder to your OpenClaw skills directory:- Workspace-specific:
<workspace>/skills/pinata-api/ - Shared across agents:
~/.openclaw/skills/pinata-api/
- Workspace-specific:
- Configure environment variables as shown below
Setup
Set the following environment variables in your OpenClaw configuration (~/.openclaw/openclaw.json):
| Variable | Required | Description |
|---|---|---|
PINATA_JWT | Yes | Your Pinata API JWT token from app.pinata.cloud/developers/api-keys |
GATEWAY_URL | Yes | Your Pinata gateway domain (e.g., your-gateway.mypinata.cloud) from app.pinata.cloud/gateway |
GATEWAY_KEY | No | Gateway key for accessing public IPFS content not tied to your account. See Gateway Access Controls |
Available Functions
Authentication
testAuthentication()- Verify your Pinata JWT is valid and working
File Management
searchFiles({ network?, name?, cid?, mimeType?, limit?, pageToken? })- Search through your files with filtersgetFileById({ network?, id })- Retrieve a specific file by its IDupdateFile({ network?, id, name?, keyvalues? })- Update file metadata and custom key-value pairsdeleteFile({ network?, id })- Delete a file from your accountuploadFile({ file, fileName, network?, group_id?, keyvalues? })- Upload a new file to IPFS
Group Management
listGroups({ network?, name?, limit?, pageToken? })- List all your groups with optional filteringcreateGroup({ network?, name })- Create a new group for organizing filesgetGroup({ network?, id })- Get details about a specific groupupdateGroup({ network?, id, name })- Rename or modify a groupdeleteGroup({ network?, id })- Delete a group (files remain)addFileToGroup({ network?, groupId, fileId })- Add a file to a groupremoveFileFromGroup({ network?, groupId, fileId })- Remove a file from a group
Gateway & Downloads
createPrivateDownloadLink({ cid, expires? })- Create a temporary signed download link for private contentcreateSignedUploadUrl({ expires, max_file_size?, allow_mime_types?, group_id?, filename?, keyvalues? })- Generate a signed URL for client-side file uploads
Content Signatures
addSignature({ network?, cid, signature, address })- Add an EIP-712 signature to verify content authenticitygetSignature({ network?, cid })- Retrieve the signature for a specific CIDdeleteSignature({ network?, cid })- Remove a signature from content
Pin By CID
pinByCid({ cid, name?, group_id?, keyvalues?, host_nodes? })- Pin existing IPFS content to your accountqueryPinRequests({ order?, status?, cid?, limit?, pageToken? })- Check the status of pin requestscancelPinRequest({ id })- Cancel a pending pin request
x402 Payment Instructions
Create payment requirements for content access using the x402 protocol:createPaymentInstruction({ name, pay_to, amount_usdc, network?, description? })- Set up payment requirementslistPaymentInstructions({ limit?, pageToken?, cid?, name?, id? })- List all payment instructionsgetPaymentInstruction({ id })- Get details about a specific payment instructiondeletePaymentInstruction({ id })- Remove a payment instructionaddCidToPaymentInstruction({ id, cid })- Associate content with a payment requirementremoveCidFromPaymentInstruction({ id, cid })- Remove content from payment requirements
Vectorize (AI Search)
Enable semantic search across your files using AI embeddings:vectorizeFile({ file_id })- Generate vector embeddings for a file to enable semantic searchdeleteFileVectors({ file_id })- Remove vector embeddings for a filequeryVectors({ group_id, text })- Perform semantic search within a group using natural language
Parameters
| Parameter | Description |
|---|---|
network | IPFS network: "public" (default) or "private" |
amount_usdc | USD amount as string (e.g., "1.50" for $1.50) |
blockchain network | For payments: "base" (default) or "base-sepolia" |
Example Usage
Once the skill is installed and configured, you can ask your AI agent in natural language:“Upload my profile-photo.jpg to Pinata”
“Create a group called ‘Project Assets’”
“Search for all JSON files in my account”
“Generate a temporary download link for CID bafkreixxx that expires in 1 hour”
“Vectorize all files in the ‘Documents’ group so I can search them”
“Find files about ‘authentication’ in my Documentation group”
“Create a payment instruction requiring $5 USDC to access this content”Your AI agent will automatically use the Pinata API skill to handle these operations.