Web3 storage, Web2 simplicity

Add unstoppable file storage to any app in under 2 minutes.

One API call. Your files are stored across the Shelby network with on-chain cryptographic proof. S3-compatible, public gateway, webhooks — no wallet required.

$ npm i shelpin Copy Copied!
Live on Shelbynet
S3 Compatible
15+ API Endpoints
No Wallet Required

Built With

Shelby Decentralised Hot Storage
Aptos Layer 1 Blockchain
Forest Infra Infrastructure

Power Tools for Developers

Shelby Storage

Permanent, decentralised file storage across SP nodes.

shelby://a1b2c3...f6e7
shelby://d4e5f6...a8b9
shelby://c7d8e9...b0c1
Verified Proofs

Every pin includes a cryptographic proof of storage — verifiable onchain.

Public Gateway

Serve files via URL with no auth. Embed images, share links, use as a CDN origin.

S3-Compatible API

Already using AWS S3? Change one URL. Your app now stores files on Shelby — decentralised, verifiable, no vendor lock-in.

Before
endpoint: s3.amazonaws.com
After
endpoint: shelpin.forestinfra.com/s3
Webhooks

Get notified when pins complete or fail. HMAC-signed payloads to your endpoint.

Next-Level Uploads, No Sweat

The hard way
const bucketName = BUCKET_NAME;
const bucketRegion = BUCKET_REGION;
const IdentityPoolId = IDENTITY_POOL_ID;

AWS.config.update({
  region: bucketRegion,
  credentials: new AWS.CognitoIdentityCredentials({
    IdentityPoolId: IdentityPoolId
  })
});

var s3 = new AWS.S3({
  apiVersion: '2006-03-01',
  params: { Bucket: bucketName }
});

function s3upload() {
  var files = document.getElementById('fileUpload').files;
  // ...30 more lines of boilerplate
}
The Shelpin shortcut
const res = await fetch('https://shelpin.forestinfra.com/pins', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${SHELPIN_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    content: btoa('Hello Shelby!'),
    name: 'hello.txt'
  })
});

const pin = await res.json();
console.log(pin.shelbyAddress);
// shelby://a1b2c3d4e5f6...
console.log(pin.shelbyProof);
// 0xdeadbeef... (onchain proof)

Get Started in Under 2 Minutes

Register

Create your account and get an API key instantly.

curl -X POST /auth/register -d '{"email":"..."}'

Pin Content

Pin any blob or file with a single API call.

curl -X POST /pins -d '{"content":"..."}'

Upload Files

Multipart file upload — just POST your file.

curl -X POST /files -F "file=@./my.jpg"

List & Verify

Browse your pins and verify Shelby proofs.

curl /pins -H "Authorization: Bearer ..."

Three steps to decentralised storage

No wallets, no tokens, no blockchain knowledge required.

1

Sign up

Create an account with your email. Get an API key instantly — no credit card, no wallet setup.

curl -X POST /auth/register -d '{"email":"..."}'
2

Upload

Pin any file via API, SDK, CLI, or drag-and-drop in the dashboard. It's stored across the Shelby network with cryptographic proof.

curl -X POST /files -F "file=@photo.jpg"
3

Share

Every file gets a public gateway URL you can embed anywhere. No auth needed to view — like a permanent, verifiable CDN.

https://shelpin.forestinfra.com/g/pin_id/photo.jpg

Simple, transparent pricing

Free on testnet. Pay only when you're ready for mainnet.

Free
£0 /month
Perfect for prototyping and testnet development.
  • 1 GB storage
  • 100 requests / day
  • 1 API key
  • Public gateway
  • On-chain proofs
Get started free
Builder
Coming soon
TBD /month
For developers shipping production apps on Shelby.
  • 10 GB storage
  • 10,000 requests / day
  • 5 API keys
  • Custom gateway domain
  • Presigned uploads
  • Webhooks
  • S3-compatible API
Available on mainnet
Scale
Coming soon
TBD /month
For teams and companies with high-volume storage needs.
  • 100 GB storage
  • Unlimited requests
  • Unlimited API keys
  • 3 custom gateway domains
  • Priority support
  • Analytics + export
  • Team workspaces
  • SLA guarantee
Available on mainnet