Build on ipfs.family.

Pin, fetch and renew files from code. Agents get an MCP server; everyone else gets plain HTTP and the IPFS Pinning Service API.

Base URLhttps://api.ipfs.family
MCP serverhttps://api.ipfs.family/mcp
Remote pinningipfs pin remote service add ipfsfamily https://api.ipfs.family/psa ipfs_sk_...

Pin a file

Make an order with each file's name and size (and its CID if you hashed it), upload the bytes, then send the payment tx the order returns. Inside your free 100 MB there is nothing to pay. Our node hashes with the same settings as ipfs add --cid-version 1, so the CID you saw is the CID we pin.

ipfs.familypin.sh
# 1. what it costs (owner= applies your free 100 MB)curl "https://api.ipfs.family/quote?bytes=500000000&months=12&token=USDG"# 2. an order, signed or with an API keycurl -X POST https://api.ipfs.family/orders \  -H "Authorization: Bearer $IPFS_KEY" \  -d '{"items":[{"name":"notes.pdf","bytes":2412883}],"months":12,"token":"USDG"}'# 3. the bytes, then send order.pay from any walletcurl -X PUT https://api.ipfs.family/orders/$ORDER/files/$PIN \  --data-binary @notes.pdf
{  "bytes": 500000000,  "months": 12,  "tier": "paid",  "usd": 0.24,  "dueUsd": 0.24,  "pay": {    "sym": "USDG",    "decimals": 6,    "amount": "0.24"  }}

Endpoints

curl "https://api.ipfs.family/quote?bytes=2412883&months=12&token=USDG"

Also speaks the IPFS Pinning Service API at /psa: run ipfs pin remote service add ipfsfamily https://api.ipfs.family/psa ipfs_sk_..., then ipfs pin remote add --service=ipfsfamily <cid>. The full list lives in llms.txt and openapi.json.

MCP tools

Streamable HTTP at https://api.ipfs.family/mcp. Read tools are open; tools that act for a wallet need Authorization: Bearer ipfs_sk_... from POST /keys.

get_quoteWhat a pin would costbytes, months, token, owner
pin_urlPin a public file by linkurl, name, months, token, private
pin_cidPin a CID already on IPFScid, name, months
get_orderAn order and the tx to sendorder
submit_paymentReport your payment txorder, tx
get_pinEverything about one CIDcid
list_my_pinsYour files, allowance, credit
list_public_pinsPublic files people sharedsort, kind, q, limit
renew_pinKeep a file longercid, months, token
unpinLet a file gocid
top_upAdd credit to your walletusd, token
list_tokensCoins you can pay withq
get_statsFiles, bytes, wallets, peers
list_contractsOn-chain addresses we use

Signing

Wallet actions send {owner, ts, sig, ...args}. The signature is a personal_sign of ipfs.family\n<action>\n<canonical args>\nts:<ts>, where canonical args is JSON with keys sorted and ts is the time in ms (valid 10 minutes, each signature works once). Actions: pin.order, pin.renew, pin.unpin, credit.topup, order.quote, key.create, read. Agents sign once for a key and send it as a Bearer token instead.

Private files

IPFS is public by default: anyone with a CID can fetch it. The site encrypts private files in your browser with AES-GCM before upload, using a key your wallet signature unlocks. The gateway only ever sees ciphertext, which gets its own CID. Over the API, encrypt before you upload; private: true also hides the name from public lists.

Pricing

$0.04per GB per month, paid up front, $0.01 minimum
100 MBfree for every wallet, kept up to 12 months, renewed free
10 GBfree while you hold $15 of $IPFS

Pay in ETH, USDG or any Robinhood Chain token with a live price. Unpin and the unused paid time comes back as credit; credit pays your next order first.

Contracts

There is no storage contract. Every payment is a plain transfer on Robinhood Chain (chain 4663) to the ipfs.family wallet, with the order tag in its calldata: that tx is your receipt. Files live on our IPFS node and the public IPFS network, not on chain.

$IPFSThe site token. Hold $15 to store 10 GB free.An ordinary token; holding it is the only thing that counts.
0xec6a…5E3aBlockscout

Agents can read this list too: GET https://api.ipfs.family/contracts or the list_contracts tool.