Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Quickstart

Get started with Pinner in 5 minutes. But first, a quick overview...

What is Pinner?

Pinner is a content pinning service and aggregator for decentralized storage networks. We help you ensure your content remains available on decentralized networks by managing pinning operations across multiple networks.

Currently, Pinner supports IPFS (InterPlanetary File System) with plans to expand to additional storage networks.

What Pinner IS

  • Pinning Service - We store and serve your content identifiers (CIDs) on our infrastructure
  • Privacy-Focused - Your data stays yours; we don't mine or analyze your content for commercial purposes. We scan content we can access (like public IPFS) for abuse and legal compliance. Zero-knowledge services (coming soon) won't be scannable by design.
  • Competitive Pricing - We offer straightforward, fair pricing without hidden subsidies
  • Developer-Friendly - SDKs for JavaScript/TypeScript, CLI tools, and REST APIs

What Pinner IS NOT

  • IPFS Gateway - We don't provide public HTTP gateways for content retrieval
  • Content Delivery Network (CDN) - We don't optimize for low-latency content delivery
  • File Hosting - We don't serve files directly to end users over HTTP (we do serve via the IPFS swarm)

Prerequisites

Getting Your API Token

  1. Sign up at account.pinner.info
  2. Navigate to your account settings
  3. Generate a new API token

Environment Variables

Set the PINNER_API_KEY environment variable:

export PINNER_API_KEY="your-api-token"

Or use PINNER_AUTH_TOKEN for CLI operations:

export PINNER_AUTH_TOKEN="your-api-token"

Step 2: Install the SDK

SDK Installation

pnpm

pnpm add @lumeweb/pinner

npm

npm install @lumeweb/pinner

yarn

yarn add @lumeweb/pinner

Step 3: Upload Your First File

import { Pinner } from "@lumeweb/pinner";
 
const pinner = new Pinner({ jwt: "YOUR_API_TOKEN" });
 
// Upload and pin a simple message
const operation = await pinner.upload.json({ message: "Hello, Pinner!" }).pin();
console.log("CID:", operation.result.cid);
What just happened?
  1. You created content (a JSON object)
  2. Pinner generated a CID (Content Identifier) - a unique address for your content
  3. Pinner pinned your content, ensuring it stays available on the decentralized network

Understanding the Result

The CID (Content Identifier) is a unique fingerprint for your content. You can use it to:

  • Retrieve your content from any IPFS gateway
  • Share it with others
  • Pin it again in the future

What Next?

Accessing Your Content

Since Pinner doesn't provide a gateway, you have options:

  1. Public Gateways - The IPFS Public Gateway Checker maintains a list of available public gateways. The IPFS Foundation operates these "public good gateways": ipfs.io, dweb.link, and trustless-gateway.link. Additional options include:
    • eth.limo - ENS-powered gateway supporting multiple decentralized storage protocols
    • ipfs.io - IPFS Foundation gateway
    • dweb.link - IPFS Foundation trustless gateway
  2. Local IPFS - Use IPFS Desktop, IPFS Companion, or ipfs-cli
  3. Build Your Own - Run a private gateway for your needs
  4. Paid Gateway - Contact us for custom gateway solutions with dedicated infrastructure and support