store permanently on base  ·  get a link you can embed anywhere
base mainnet
chain id 8453
20 KB
micro
200 KB
small
2 MB
medium
6 MB
large
drop a file to see exact price · dynamic · live eth/usd rate · pay once, stored forever
base mainnet
drop any file here
get a permanent onchain link + an embed url that works anywhere
svg · png · gif · mp4 · pdf · html · json · anything
✗ file too large — upload blocked
Maximum file size is 6 MB. No payment was requested and no funds were moved. Please select a smaller file.
storage key
display name (optional)
🪙 store first — mint as nft option appears after upload
01payment
02verifying
03uploading
04done
uploading to blockchain...
0%
⚠  writing to blockchain — please don't close this window
⚠  payment confirmed — upload failed
Your payment was received and confirmed onchain. Copy and save the transaction hash above — it proves your payment. Please contact support with this hash to arrange a retry or refund.
paste into any website, cast, post, or app  ·  no servers  ·  never goes down
connect wallet to view your files

no api keys. no accounts. payment is the auth. any agent with eth can store files permanently onchain and get an embed url back.

npm install @bankr/cli # ethers bundled — no separate install
const { NetStore } = require('./netstore-sdk');
const { ethers } = require('ethers');

// any ethers.js signer works — wallet, Bankr, etc.
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
const store = new NetStore({ signer: wallet });

const result = await store.upload('./myfile.png', { name: 'My File' });
console.log(result.embedUrl); // https://netstoreapp.net/file/...
console.log(result.onchainUrl); // https://storedon.net/net/8453/...
const { createWithBankr } = require('./netstore-sdk');

const store = createWithBankr(process.env.BANKR_API_KEY, process.env.BANKR_WALLET);
const result = await store.upload('./myfile.png', { name: 'My File', netLibrary: true });
console.log(result.embedUrl);
{
  embedUrl: 'https://netstoreapp.net/file/:key', // for iframes, X, Discord
  onchainUrl: 'https://storedon.net/net/8453/...', // permanent onchain address
  key: 'my-file-mn7abc',
  txHash: '0x...'
}
01  sdk calls /validate to get the price for your file size
02  sdk sends eth payment to operator address
03  sdk posts file + txhash to /upload
04  sdk polls /status/:jobId until stored
05  returns permanent embed url + onchain url
⬇ download sdk
embed url
onchain url