NewS3-compatible API — use any AWS SDK to upload to IPFSRead docs →
Try before you commit — 7-day trial, no credit card

The complete IPFS platform.

Pin files, serve via dedicated gateways, publish mutable IPNS names — all through a simple REST API. Try it free for 7 days with full Bodhi capacity, no credit card required.

Developer experience

Three lines. That's it.

Traditional IPFS
14 linessetup.js
// Install and configure IPFS
const { create } = require('ipfs-http-client');
const client = create({
  host: 'localhost',
  port: 5001,
  protocol: 'http'
});

// Upload file
const { cid } = await client.add(
  Buffer.from(JSON.stringify(data))
);
console.log('CID:', cid.toString());
IPFS Ninja
6 linesupload.js
const res = await fetch("https://api.ipfs.ninja/upload/new", {
  method: "POST",
  headers: { "X-Api-Key": "ninja_..." },
  body: JSON.stringify({ content: data })
});
const { cid } = await res.json();

Features

Everything you need — try it all for 7 days

Try before you commit

Full Bodhi capacity for 7 days — 10 GB storage, 200 files, 1 dedicated gateway, IPNS names, signed upload tokens. No credit card required.

Dedicated gateways

Personal subdomain, gateway tokens, and IP/origin restrictions.

Pin existing CIDs

Fetch any CID from the IPFS network and pin it to your account.

Image optimization

Resize, reformat, and adjust quality on-the-fly via query params.

Signed upload tokens

Let clients upload directly without exposing your API keys.

Usage analytics

Per-key filtering, daily upload charts, storage and bandwidth tracking.

How it works

Ship in minutes, not days

Upload, retrieve, and integrate — all through a simple REST API.

1

Upload an image

Read a file from disk and upload it to IPFS with a single fetch call.

upload.mjs
import { readFileSync } from "fs";

// Read the image file
const image = readFileSync("./photo.png");

// Upload to IPFS
const res = await fetch("https://api.ipfs.ninja/upload/new", {
  method: "POST",
  headers: {
    "X-Api-Key": "ninja_your_api_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    content: image.toString("base64"),
    description: "My photo",
  }),
});

const { cid, uris } = await res.json();
console.log(cid);      // QmXk7VRz...
console.log(uris.url); // https://ipfs.ninja/ipfs/QmXk7...
2

Get your IPFS CID

The API returns a permanent content identifier and a gateway URL.

response.json
{
  "cid": "QmXk7VRz4qoG5Dg8sFL4bYWHpKe4F",
  "sizeMB": 0.042,
  "uris": {
    "ipfs": "ipfs://QmXk7VRz4qoG5Dg8sFL4bYWHpKe4F",
    "url": "https://ipfs.ninja/ipfs/QmXk7VRz4qoG5Dg..."
  }
}
3

Retrieve your files

List uploads or fetch any file by CID — from code or any IPFS gateway.

list.mjs
// List all your uploaded files
const files = await fetch(
  "https://api.ipfs.ninja/upload/list?from=1&to=9999999999999",
  { headers: { "X-Api-Key": "ninja_your_api_key" } }
).then((r) => r.json());

console.log(files);
// [{ cid: "QmXk7...", fileType: "image", sizeMB: 0.042 }]

// Or fetch directly via any IPFS gateway:
// https://ipfs.ninja/ipfs/QmXk7VRz4qoG5Dg8sFL4bYWHpKe4F

Pricing

Start free. Scale when you're ready.

Every new account gets a 7-day trial of the Bodhi plan — full capacity, no credit card.

Start free

Bodhi — 7-day trial

$5/ month

For side projects

  • 10 GB total storage
  • 20 GB bandwidth / month
  • Unlimited files
  • 3 API keys
  • 1 dedicated gateway
  • Public gateway access
See all features
Most popular

Karma

$19/ month

For growing apps

  • 100 GB total storage
  • 100 GB bandwidth / month
  • Unlimited files
  • 10 API keys
  • 1 dedicated gateway
  • Public gateway access
See all features

Nirvana

$59/ month

For production workloads at scale

  • 1 TB total storage
  • 500 GB bandwidth / month
  • Unlimited files
  • 50 API keys
  • 1 dedicated gateway
  • Public gateway access
See all features

Compare

How we stack up

Paid plans start at $5/mo — transparent pricing, hard caps, no hidden fees.

FeatureIPFS NinjaPinata
Try before you pay7 days full-plan trial, no card1 GB free forever (no dedicated features)
Lowest paid plan$5/mo$20/mo
Dedicated gatewayAll paid plansUp to 3
Gateway access modes3 modesToken-gated
Client-side upload tokensPresigned URLs
Per-file analyticsPaid plans
Image optimizationPaid plans
Bandwidth overageHard cap (no surprise bills)$0.08/GB
IPNS mutable namesUp to 10
API styleREST + S3-compatibleREST + JS SDK
MCP Server (AI assistants)
CAR import (DAG import)Paid plans only

Frequently Asked Questions

Everything you need to know about IPFS Ninja.

What is IPFS pinning?
IPFS pinning keeps your files permanently available on the IPFS network. Without pinning, files may be garbage-collected by IPFS nodes. IPFS Ninja pins your files to ensure they stay accessible 24/7.
What file types can I upload?
Any file type. JSON objects are sent natively, while images, PDFs, videos, HTML, and all other formats are base64-encoded. There's no file type restriction.
How does the 7-day trial work?
Every new account starts on a 7-day trial with full Bodhi capacity — 10 GB storage, 20 GB monthly bandwidth, 200 files, 3 API keys, 1 dedicated gateway, and 1 IPNS name. No credit card required. On day 8, pick Bodhi at $5/mo, Karma at $19/mo, or Nirvana at $59/mo to keep uploading. If you don't upgrade, your account transitions to a read-only state for 30 days — pinned CIDs continue to serve through the gateway during that window and you can re-subscribe anytime to resume uploads.
What is a dedicated gateway?
Each account gets a private gateway URL (e.g., https://your-slug.gw.ipfs.ninja) to serve your pinned content over HTTPS. You can configure access modes, token authentication, IP whitelisting, and origin restrictions.
How do signed upload tokens work?
Signed tokens are time-limited credentials you can safely use in client-side code (browsers, mobile apps) without exposing your API key. Create them server-side, pass to the client, upload directly from the browser.
Is my data encrypted?
Files on IPFS are content-addressed and publicly accessible by CID. If you need privacy, encrypt your data before uploading. The restricted gateway mode ensures only you can access files through your gateway, but the CIDs themselves are public on the IPFS network.
Can I pin an existing CID from the network?
Yes. Use the POST /pin endpoint with any valid CID to pin content that already exists on IPFS. This is useful for NFT metadata, content mirroring, or archival. Once pinned to your account the CID is served through the apex gateway just like any other upload.
Does ipfs.ninja/ipfs/<cid> work for any CID on the IPFS network?
No. The apex gateway at https://ipfs.ninja/ipfs/<cid> only serves CIDs that have been uploaded or pinned by a registered IPFS Ninja user. Requests for any other CID return HTTP 410 Gone with a pointer to public IPFS gateways like ipfs.io or dweb.link. To serve a third-party CID through our gateway, start your free 7-day trial and use POST /pin to add it to your account.
Where do I serve my own content from?
Two URL patterns serve your uploads: (1) the shared apex gateway at https://ipfs.ninja/ipfs/<cid> — works for any CID you own or have pinned, and (2) your dedicated gateway at https://<your-slug>.gw.ipfs.ninja/ipfs/<cid> — full SLA, custom access controls, and configurable rate limits. Both serve the same content; dedicated gateways are recommended for production embedding.
How do I cancel or downgrade?
You can manage your subscription from the Profile page. Downgrading preserves your files but applies the lower plan's limits. Cancellation transitions your account to a read-only state for 30 days — pinned CIDs continue serving through the gateway during that window and you can re-subscribe anytime to resume uploads. There are no cancellation fees.

Ready to pin?

Start your 7-day trial and upload to IPFS in under a minute. No credit card required.

Start your 7-day trial