✓ Verified 🌐 Web Scrapers ✓ Enhanced Data

Pinata Api

Pinata IPFS API for file storage, groups, gateways, signatures, x402 payments, and file vectorizatio

Rating
4.1 (125 reviews)
Downloads
12,253 downloads
Version
1.0.0

Overview

Pinata IPFS API for file storage, groups, gateways, signatures, x402 payments, and file vectorization.

Complete Documentation

View Source →

Pinata API

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

Authentication

All requests require the header:

text
Authorization: Bearer $PINATA_JWT

Environment Variables:

Test Authentication

text
GET https://api.pinata.cloud/data/testAuthentication

Base URLs

  • API: https://api.pinata.cloud
  • Uploads: https://uploads.pinata.cloud

Common Parameters

  • {network} - IPFS network: public (default) or private
  • Pagination uses limit and pageToken query parameters

Files

Search Files

text
GET https://api.pinata.cloud/v3/files/{network}

Query parameters (all optional): name, cid, mimeType, limit, pageToken

Get File by ID

text
GET https://api.pinata.cloud/v3/files/{network}/{id}

Update File Metadata

text
PUT https://api.pinata.cloud/v3/files/{network}/{id}
Content-Type: application/json

Body:

json
{
  "name": "new-name",
  "keyvalues": {"key": "value"}
}

Both fields are optional.

Delete File

text
DELETE https://api.pinata.cloud/v3/files/{network}/{id}

Upload File

text
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

Groups

List Groups

text
GET https://api.pinata.cloud/v3/groups/{network}

Query parameters (all optional): name, limit, pageToken

Create Group

text
POST https://api.pinata.cloud/v3/groups/{network}
Content-Type: application/json

Body:

json
{
  "name": "my-group"
}

Get Group

text
GET https://api.pinata.cloud/v3/groups/{network}/{id}

Update Group

text
PUT https://api.pinata.cloud/v3/groups/{network}/{id}
Content-Type: application/json

Body:

json
{
  "name": "updated-name"
}

Delete Group

text
DELETE https://api.pinata.cloud/v3/groups/{network}/{id}

Add File to Group

text
PUT https://api.pinata.cloud/v3/groups/{network}/{groupId}/ids/{fileId}

Remove File from Group

text
DELETE https://api.pinata.cloud/v3/groups/{network}/{groupId}/ids/{fileId}

Gateway & Downloads

Create Private Download Link

text
POST https://api.pinata.cloud/v3/files/private/download_link
Content-Type: application/json

Creates a temporary signed URL for accessing private files.

Body:

json
{
  "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

Create Signed Upload URL

text
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:

json
{
  "date": 1700000000,
  "expires": 3600
}

Optional fields: max_file_size (bytes), allow_mime_types (array), group_id, filename, keyvalues

Signatures

EIP-712 signatures for verifying content authenticity.

Add Signature

text
POST https://api.pinata.cloud/v3/files/{network}/signature/{cid}
Content-Type: application/json

Body:

json
{
  "signature": "0x...",
  "address": "0x..."
}

Get Signature

text
GET https://api.pinata.cloud/v3/files/{network}/signature/{cid}

Delete Signature

text
DELETE https://api.pinata.cloud/v3/files/{network}/signature/{cid}

Pin By CID

Pin existing IPFS content by its CID (public network only).

Pin a CID

text
POST https://api.pinata.cloud/v3/files/public/pin_by_cid
Content-Type: application/json

Body:

json
{
  "cid": "bafybeig..."
}

Optional fields: name, group_id, keyvalues, host_nodes (array of multiaddrs)

Query Pin Requests

text
GET https://api.pinata.cloud/v3/files/public/pin_by_cid

Query parameters (all optional): order (ASC/DESC), status, cid, limit, pageToken

Cancel Pin Request

text
DELETE https://api.pinata.cloud/v3/files/public/pin_by_cid/{id}

x402 Payment Instructions

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".

Create Payment Instruction

text
POST https://api.pinata.cloud/v3/x402/payment_instructions
Content-Type: application/json

Body:

json
{
  "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)

List Payment Instructions

text
GET https://api.pinata.cloud/v3/x402/payment_instructions

Query parameters (all optional): limit, pageToken, cid, name, id

Get Payment Instruction

text
GET https://api.pinata.cloud/v3/x402/payment_instructions/{id}

Delete Payment Instruction

text
DELETE https://api.pinata.cloud/v3/x402/payment_instructions/{id}

Associate CID with Payment

text
PUT https://api.pinata.cloud/v3/x402/payment_instructions/{id}/cids/{cid}

Remove CID from Payment

text
DELETE https://api.pinata.cloud/v3/x402/payment_instructions/{id}/cids/{cid}

Vectorize (AI Search)

Generate vector embeddings for files and perform semantic search across groups.

Vectorize a File

text
POST https://uploads.pinata.cloud/v3/vectorize/files/{file_id}

Delete File Vectors

text
DELETE https://uploads.pinata.cloud/v3/vectorize/files/{file_id}

Query Vectors (Semantic Search)

text
POST https://uploads.pinata.cloud/v3/vectorize/groups/{group_id}/query
Content-Type: application/json

Body:

json
{
  "text": "search query here"
}

Notes

  • 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}

Resources

Installation

Terminal bash

openclaw install pinata-api
    
Copied!

💻Code Examples

Authorization: Bearer $PINATA_JWT

authorization-bearer-pinatajwt.txt
**Environment Variables:**

- `PINATA_JWT` (required) - Your Pinata API JWT token. Get one at [app.pinata.cloud/developers/api-keys](https://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](https://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](https://docs.pinata.cloud/gateways/gateway-access-controls#gateway-keys)

### Test Authentication

GET https://api.pinata.cloud/data/testAuthentication

get-httpsapipinataclouddatatestauthentication.txt
## Base URLs

- **API:** `https://api.pinata.cloud`
- **Uploads:** `https://uploads.pinata.cloud`

## Common Parameters

- `{network}` - IPFS network: `public` (default) or `private`
- Pagination uses `limit` and `pageToken` query parameters

## Files

### Search Files

GET https://api.pinata.cloud/v3/files/{network}

get-httpsapipinatacloudv3filesnetwork.txt
Query parameters (all optional): `name`, `cid`, `mimeType`, `limit`, `pageToken`

### Get File by ID

}

.txt
Both fields are optional.

### Delete File

Content-Type: multipart/form-data

content-type-multipartform-data.txt
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

## Groups

### List Groups

GET https://api.pinata.cloud/v3/groups/{network}

get-httpsapipinatacloudv3groupsnetwork.txt
Query parameters (all optional): `name`, `limit`, `pageToken`

### Create Group

DELETE https://api.pinata.cloud/v3/groups/{network}/{groupId}/ids/{fileId}

delete-httpsapipinatacloudv3groupsnetworkgroupididsfileid.txt
## Gateway & Downloads

### Create Private Download Link

Content-Type: application/json

content-type-applicationjson.txt
Creates a temporary signed URL for accessing private files.

Body:

}

.txt
- `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`

### Create Signed Upload URL

Content-Type: application/json

content-type-applicationjson.txt
Creates a pre-signed URL for client-side uploads (no JWT needed on the client).

Body:

Tags

#search_and-research #api

Quick Info

Category Web Scrapers
Model Claude 3.5
Complexity One-Click
Author iammatthias
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install pinata-api