Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Pinata IPFS API for file storage, groups, gateways, signatures, x402 payments, and file vectorization.
Pinata IPFS API for file storage, groups, gateways, signatures, x402 payments, and file vectorization.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Access the Pinata IPFS storage API. Upload files, manage groups, create gateways, add signatures, set up x402 payments, and perform AI-powered vector search. Repo: https://github.com/PinataCloud/pinata-api-skill
All requests require the header: Authorization: Bearer $PINATA_JWT Environment Variables: PINATA_JWT (required) - Your Pinata API JWT token. Get one at app.pinata.cloud/developers/api-keys PINATA_GATEWAY_URL (required) - Your Pinata gateway domain (e.g., your-gateway.mypinata.cloud). Find yours at app.pinata.cloud/gateway PINATA_GATEWAY_KEY (optional) - Gateway key for accessing public IPFS content not tied to your Pinata account. See Gateway Access Controls
GET https://api.pinata.cloud/data/testAuthentication
API: https://api.pinata.cloud Uploads: https://uploads.pinata.cloud
{network} - IPFS network: public (default) or private Pagination uses limit and pageToken query parameters
GET https://api.pinata.cloud/v3/files/{network} Query parameters (all optional): name, cid, mimeType, limit, pageToken
GET https://api.pinata.cloud/v3/files/{network}/{id}
PUT https://api.pinata.cloud/v3/files/{network}/{id} Content-Type: application/json Body: { "name": "new-name", "keyvalues": {"key": "value"} } Both fields are optional.
DELETE https://api.pinata.cloud/v3/files/{network}/{id}
POST https://uploads.pinata.cloud/v3/files Content-Type: multipart/form-data Form fields: file (required) - The file to upload network (optional) - public or private group_id (optional) - Group to add the file to keyvalues (optional) - JSON string of key-value metadata
GET https://api.pinata.cloud/v3/groups/{network} Query parameters (all optional): name, limit, pageToken
POST https://api.pinata.cloud/v3/groups/{network} Content-Type: application/json Body: { "name": "my-group" }
GET https://api.pinata.cloud/v3/groups/{network}/{id}
PUT https://api.pinata.cloud/v3/groups/{network}/{id} Content-Type: application/json Body: { "name": "updated-name" }
DELETE https://api.pinata.cloud/v3/groups/{network}/{id}
PUT https://api.pinata.cloud/v3/groups/{network}/{groupId}/ids/{fileId}
DELETE https://api.pinata.cloud/v3/groups/{network}/{groupId}/ids/{fileId}
POST https://api.pinata.cloud/v3/files/private/download_link Content-Type: application/json Creates a temporary signed URL for accessing private files. Body: { "url": "https://{PINATA_GATEWAY_URL}/files/{cid}", "expires": 600, "date": 1700000000, "method": "GET" } url (required) - Full gateway URL using your PINATA_GATEWAY_URL and the file's CID expires (optional) - Seconds until expiry (default: 600) date (required) - Current Unix timestamp in seconds method (required) - HTTP method, typically GET
POST https://uploads.pinata.cloud/v3/files/sign Content-Type: application/json Creates a pre-signed URL for client-side uploads (no JWT needed on the client). Body: { "date": 1700000000, "expires": 3600 } Optional fields: max_file_size (bytes), allow_mime_types (array), group_id, filename, keyvalues
EIP-712 signatures for verifying content authenticity.
POST https://api.pinata.cloud/v3/files/{network}/signature/{cid} Content-Type: application/json Body: { "signature": "0x...", "address": "0x..." }
GET https://api.pinata.cloud/v3/files/{network}/signature/{cid}
DELETE https://api.pinata.cloud/v3/files/{network}/signature/{cid}
Pin existing IPFS content by its CID (public network only).
POST https://api.pinata.cloud/v3/files/public/pin_by_cid Content-Type: application/json Body: { "cid": "bafybeig..." } Optional fields: name, group_id, keyvalues, host_nodes (array of multiaddrs)
GET https://api.pinata.cloud/v3/files/public/pin_by_cid Query parameters (all optional): order (ASC/DESC), status, cid, limit, pageToken
DELETE https://api.pinata.cloud/v3/files/public/pin_by_cid/{id}
Create payment instructions for monetizing IPFS content using the x402 protocol with USDC on Base. USDC Contract Addresses: Base mainnet: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 Base Sepolia (testnet): 0x036CbD53842c5426634e7929541eC2318f3dCF7e Important: The amount field uses the smallest USDC unit (6 decimals). For example, $1.50 = "1500000".
POST https://api.pinata.cloud/v3/x402/payment_instructions Content-Type: application/json Body: { "name": "My Payment", "description": "Pay to access this content", "payment_requirements": [ { "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "pay_to": "0xWALLET_ADDRESS", "network": "base", "amount": "1500000" } ] } name (required) - Display name description (optional) - Description payment_requirements (required) - Array with asset (USDC contract address), pay_to (wallet address), network (base or base-sepolia), amount (smallest unit as string)
GET https://api.pinata.cloud/v3/x402/payment_instructions Query parameters (all optional): limit, pageToken, cid, name, id
GET https://api.pinata.cloud/v3/x402/payment_instructions/{id}
DELETE https://api.pinata.cloud/v3/x402/payment_instructions/{id}
PUT https://api.pinata.cloud/v3/x402/payment_instructions/{id}/cids/{cid}
DELETE https://api.pinata.cloud/v3/x402/payment_instructions/{id}/cids/{cid}
Generate vector embeddings for files and perform semantic search across groups.
POST https://uploads.pinata.cloud/v3/vectorize/files/{file_id}
DELETE https://uploads.pinata.cloud/v3/vectorize/files/{file_id}
POST https://uploads.pinata.cloud/v3/vectorize/groups/{group_id}/query Content-Type: application/json Body: { "text": "search query here" }
All JSON endpoints require Content-Type: application/json File uploads use multipart/form-data โ do not set Content-Type manually Pagination: use pageToken from the previous response to get the next page Network defaults to public if not specified Gateway URLs follow the pattern https://{PINATA_GATEWAY_URL}/files/{cid}
Pinata Documentation API Keys Gateway Setup x402 Protocol Source (GitHub)
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.