Overview

Pinata provides infrastructure for developers to interact with the InterPlanetary File System (IPFS), a peer-to-peer network for storing and sharing data. The service focuses on simplifying the process of "pinning" content to IPFS, which ensures that data remains available and persistent on the network. Without pinning services, content on IPFS can become unavailable if no nodes choose to host it, which is a critical consideration for web3 applications and NFTs where content availability is paramount.

The platform is designed for a range of users, from individual NFT creators to larger web3 decentralized application (dApp) development teams. It addresses common challenges associated with IPFS, such as ensuring content persistence, managing large datasets, and delivering content efficiently to end-users. Pinata accomplishes this through its core offerings, including IPFS Pinning, Dedicated Gateways, and IPFS Submarine.

IPFS Pinning allows users to upload files and directories, guaranteeing their presence on the IPFS network. This is crucial for NFTs, where the metadata and associated media files need to be immutable and accessible over time. Dedicated Gateways enhance the retrieval speed and reliability of IPFS content by providing direct access points that are optimized for performance, bypassing potential bottlenecks in the public IPFS network. This improves the user experience for dApps that rely on fast content delivery. IPFS Submarine introduces a layer of access control and encryption for IPFS content, enabling creators to manage who can view their files directly through the Pinata platform, which is useful for premium content or private data sets. The Pinata platform offers a REST API and a JavaScript SDK for programmatic interaction, making it accessible for developers to integrate IPFS functionalities into their applications using standard programming practices.

Pinata's services are particularly beneficial for projects that require verifiable, decentralized storage without managing their own IPFS nodes. This includes NFT marketplaces, blockchain gaming platforms, and decentralized social media applications. Its free tier allows developers to experiment with the platform, while paid plans scale to support larger storage and bandwidth needs, offering custom enterprise solutions for high-demand scenarios. The developer experience is noted for clear documentation and practical examples, which aid in rapid integration and deployment of decentralized storage solutions for Web3 projects.

Key features

  • IPFS Pinning: Guarantees content availability and persistence on the IPFS network by hosting files on Pinata's infrastructure. This is essential for ensuring that decentralized content, such as NFT media or dApp assets, remains accessible.
  • Dedicated Gateways: Provides high-speed, reliable access to IPFS content by offering private gateways optimized for performance, reducing retrieval times for users of dApps and other web3 applications.
  • IPFS Submarine: Enables creators to manage access to their IPFS content with encryption and token-gating features, allowing for controlled distribution of assets and premium content.
  • REST API: Allows programmatic interaction with the Pinata platform for uploading, pinning, and managing IPFS content, facilitating integration into custom applications. The API reference provides comprehensive details for developers.
  • JavaScript SDK: Simplifies development for web-based applications, offering a client library to interact with Pinata's services.
  • Pin Explorer: A web-based interface for managing and monitoring pinned content, providing visibility into IPFS files and usage statistics.
  • Submarine Batches: Enables the creation and management of multiple encrypted files for controlled distribution through Submarine links.

Pricing

Pinata offers a free tier and various paid plans with scaling storage and bandwidth. Enterprise options are available for custom requirements. Pricing details are current as of May 2026.

Plan Monthly Cost Storage Bandwidth Features
Starter Free 1 GB 100 GB Core IPFS pinning, public gateways
Picasso $10 50 GB 250 GB Starter features + dedicated gateway, API access
Miro $25 250 GB 500 GB Picasso features + increased limits, priority support
Dali $75 1 TB 1 TB Miro features + additional dedicated gateway, advanced analytics
Enterprise Custom Custom Custom Dedicated infrastructure, custom SLAs, advanced security, 24/7 support

For the most up-to-date pricing information and detailed plan comparisons, refer to the official Pinata pricing page.

Common integrations

  • Ethereum / EVM Chains: Developers often integrate Pinata with smart contracts on Ethereum, Polygon, or Avalanche to store NFT metadata and media files on IPFS, linking the content hash (CID) within the smart contract. Refer to Polygon's guide on creating IPFS NFTs for an example.
  • NFT Marketplaces: Platforms such as OpenSea or Rarible rely on IPFS for decentralized storage of NFT assets, which can be managed and pinned via Pinata.
  • Web3 Frameworks (e.g., Hardhat, Truffle): Pinata's API can be used within development workflows to upload and pin content as part of smart contract deployment or dApp build processes.
  • Client-Side JavaScript Applications: Pinata's JavaScript SDK allows direct interaction from web browsers or Node.js environments to upload and retrieve IPFS content for dApps. Refer to the Pinata JavaScript SDK documentation for usage examples.
  • Cloudflare Workers: For edge-based content delivery of IPFS assets, developers can integrate Pinata with Cloudflare Workers to serve content reliably and quickly from dedicated gateways. The Cloudflare Workers tutorial on fetching from private IPFS gateways provides further context.

Alternatives

  • Filebase: Offers S3-compatible object storage across multiple decentralized networks, including IPFS, Sia, and Arweave.
  • Web3.storage: Provides free decentralized storage for developers, backed by Filecoin and IPFS, with client libraries and an API.
  • Infura: A suite of blockchain development tools, including an IPFS API and gateway services, alongside Ethereum and other blockchain node access.

Getting started

To get started with Pinata, you typically generate an API key and secret from your Pinata account. Below is a basic JavaScript example demonstrating how to upload a file to IPFS using the Pinata API. This example uses the axios library for HTTP requests and assumes you have Node.js installed.

First, install axios:

npm install axios

Then, create a file (e.g., upload.js) with the following content:

const axios = require('axios');
const fs = require('fs');
const FormData = require('form-data');

// Replace with your actual API Key and Secret
const API_KEY = 'YOUR_PINATA_API_KEY';
const API_SECRET = 'YOUR_PINATA_API_SECRET';

async function uploadFileToPinata() {
  const filePath = './my-image.png'; // Path to the file you want to upload
  const pinataUrl = 'https://api.pinata.cloud/pinning/pinFileToIPFS';

  const formData = new FormData();
  formData.append('file', fs.createReadStream(filePath));

  const metadata = JSON.stringify({
    name: 'My Test Image',
    keyvalues: {
      company: 'apispine',
      purpose: 'example'
    }
  });
  formData.append('pinataMetadata', metadata);

  try {
    const response = await axios.post(pinataUrl, formData, {
      maxBodyLength: 'Infinity', // This is important to allow large file uploads
      headers: {
        'Content-Type': `multipart/form-data; boundary=${formData._boundary}`,
        'pinata_api_key': API_KEY,
        'pinata_secret_api_key': API_SECRET
      }
    });

    console.log('File uploaded successfully!');
    console.log('IPFS Hash (CID):', response.data.IpfsHash);
    console.log('Gateway URL:', `https://gateway.pinata.cloud/ipfs/${response.data.IpfsHash}`);
  } catch (error) {
    if (error.response) {
      console.error('Pinata API Error:', error.response.data);
    } else {
      console.error('Error uploading file:', error.message);
    }
  }
}

uploadFileToPinata();

Before running, create a sample file named my-image.png in the same directory. Replace YOUR_PINATA_API_KEY and YOUR_PINATA_API_SECRET with your actual credentials from your Pinata account settings. Then, execute the script:

node upload.js

Upon successful execution, the script will output the IPFS hash (CID) of your uploaded file and a gateway URL where the content can be accessed. This demonstrates the fundamental process of pinning content to IPFS using Pinata's API, making it available on the decentralized network.