ICPayICPay

On-chain cloud storage

ICBucket

|

Sign options via Internet Identity

Google
Apple
Microsoft
ICBucket on mobile

Installation

SDKs for Node.js, Python, Rust, and Go. Install from npm, PyPI, crates.io, or Go modules.

Node.js / TypeScript
Python
Rust
Go

Integration guide

How to Integrate ICBucket?

Create a bucket, upload files with the SDK, and serve public assets over HTTPS — all from your ICPay balance with an S3-compatible API.

The Problem & The Solution

Traditional cloud storage is expensive, centralized, and complex. ICBucket fixes that with on-chain storage, 30-day ICP plans, and an S3-style API.

The ProblemThe Solution

Expensive Monthly Bills

AWS S3, Google Cloud Storage, and Azure Blob charge monthly. Costs compound over years — a 10 GB project can exceed $240 over five years.

Simple 30-Day Plans

Pay from your ICPay balance in ICP — from 0.5 ICP for 1 GB per 30 days. No credit card. Renew anytime and stack unused time.

Centralized Control

Your files live on someone else's servers. Providers can suspend accounts, raise prices, or shut down services without notice.

Decentralized & Censorship-Resistant

Files are stored across Internet Computer replicas. No single point of failure — only you can delete your data.

Complex Setup

Setting up S3 requires an AWS account, IAM roles, bucket policies, and CORS config — just to upload a file.

S3-Compatible API

Drop-in replacement for S3 with familiar methods: createBucket, uploadFile, downloadFile. Migrate existing code in minutes.

Vendor Lock-in

Each provider uses different APIs. Moving from S3 to Azure means rewriting code — no real portability.

On-Chain Verifiability

Every upload is traceable on-chain. Content-addressable via canister URLs — immutable and auditable.

Storage Economics

Pay upfront in ICP from your ICPay balance — no credit card, no surprise monthly bills. Each tier is a 30-day plan; renew anytime and unused time stacks.

Starter

1.0 ICP

0.5 ICP
per 30 days
1 GB capacity
  • 1 GB reserved capacity
  • Public & private buckets
  • API key authentication
  • Chunked uploads
  • Global CDN URLs
  • Encrypted at rest
  • Renew anytime — time stacks
Most Popular
Pro

3.0 ICP

2.5 ICP
per 30 days
5 GB capacity
  • 5 GB reserved capacity
  • Multiple API keys
  • File metadata & tags
  • Search & folder listing
  • Bulk copy / move / delete
  • TypeScript, Python & Go SDKs
  • Renew anytime — time stacks
Business

5.5 ICP

4.5 ICP
per 30 days
10 GB capacity
  • 10 GB reserved capacity
  • Multiple buckets
  • Team API keys
  • Bulk operations
  • On-chain audit trail
  • HTTPS file delivery
  • Renew anytime — time stacks
Scale

25.5 ICP

20.5 ICP
per 30 days
50 GB capacity
  • 50 GB reserved capacity
  • All Business features
  • Higher throughput uploads
  • Production workloads
  • dApp & NFT asset hosting
  • Static site assets
  • Renew anytime — time stacks

Live prices come from the canister: IC storage cycle cost plus a 20% margin, rounded to 0.5 ICP steps. Strikethrough shows the previous list price. Tiers up to 500 GB are available in the app.

Latest from ICPay

Follow our journey building on-chain storage for the Internet Computer

Everything You Need for On-Chain Storage

ICBucket provides enterprise-grade cloud storage features without the enterprise complexity or monthly bills.

Flexible Capacity Tiers

Choose from 1GB to 100GB. Start small, scale as needed. Renew anytime to extend storage duration.

Chunked Uploads

Upload large files in chunks (up to 2MB per chunk). Parallel uploads for faster transfer. Resume on connection drop.

API Key Management

Create multiple API keys per bucket with granular permissions (read/write/delete). Revoke and regenerate anytime.

Public & Private Buckets

Public buckets serve files via HTTPS. Private buckets require auth. Perfect for both static sites and secure backups.

S3-Compatible API

Drop-in replacement for AWS S3. Familiar methods: createBucket, uploadFile, listFiles. Migrate existing code in minutes.

On-Chain Security

Files stored across IC replicas. Canister-level access control. No server breaches, no data leaks.

File Metadata & Search

Tag files, add custom metadata. Search by name, tag, or prefix. List folders, filter by date or size.

Fast Content Delivery

Files served directly from IC canisters. No CDN setup needed. Global distribution via IC boundary nodes.

How Storage Works

Files live inside the ICPay wallet canister on Internet Computer — not on a traditional cloud VM. Your app talks to the canister; the subnet stores encrypted data.

Canister ID · 6vbhm-nqaaa-aaaan-q6muq-cai

Write path

  1. Create a bucket once (pay ICP for capacity).
  2. beginFileUpload → send 2 MB chunks → completeFileUpload.
  3. Canister encrypts each file and writes to stable memory.

Read path

  1. Private files: signed downloadFile update from your app.
  2. Public files: plain HTTPS GET on the canister gateway URL.
  3. No AWS bucket, no separate storage server — one on-chain canister.

How ICBucket Compares

ICBucket vs. traditional cloud storage providers. See what makes us different.

FeatureICBucketAWS S3Google CloudAzure Blob
30-Day ICP Plans
Pay with ICP (no credit card)
Decentralized
Censorship-Resistant
On-Chain Verifiable
No Account Suspension Risk
S3-Compatible API
Public HTTPS URLs
API Key Auth
Chunked Uploads

SDK & API Reference

S3-compatible API with SDKs for Node.js, Python, Rust, and Go. Drop-in replacement for AWS S3.

Code Examples

Installation

npm install icpay-bucket

Create & Initialize

import { ICBucket } from 'icpay-bucket';

// Initialize client
const bucket = new ICBucket({
  bucketId: 'your-bucket-id',
  apiKey: 'your-api-key'
});

// Create bucket (one-time)
const result = await bucket.create({
  name: 'my-storage',
  capacityGB: 5,
  visibility: 'public'
});

Upload Files

// Upload single file (<2MB)
await bucket.uploadFile('logo.png', fileBuffer, {
  contentType: 'image/png',
  metadata: { version: '1.0' }
});

// Upload large file (chunked, >2MB)
const uploadId = await bucket.beginUpload({
  path: 'video.mp4',
  contentType: 'video/mp4',
  totalSize: 50 * 1024 * 1024 // 50MB
});

// Upload chunks (2MB each)
for (let i = 0; i < chunks.length; i++) {
  await bucket.uploadChunk(uploadId, i, chunks[i]);
}

// Complete upload
await bucket.completeUpload(uploadId);

Download & Access

// Download file
const file = await bucket.downloadFile('logo.png');

// Get public URL
const url = await bucket.getPublicUrl('logo.png');
// Returns: https://6vbhm-...-cai.icp0.io/bucket/logo.png

// List files
const files = await bucket.listFiles({
  page: 1,
  pageSize: 20
});

File Management

// Delete file
await bucket.deleteFile('old-logo.png');

// Move file
await bucket.moveFile('temp/logo.png', 'assets/logo.png');

// Copy file
await bucket.copyFile('logo.png', 'logo-backup.png');

// Add tags
await bucket.addTags('logo.png', ['branding', 'v1']);

// Search files
const results = await bucket.searchFiles('logo');
API Key Management

Create multiple API keys per bucket with granular permissions:

  • read - Download files
  • write - Upload files
  • delete - Delete files

Revoke and regenerate keys anytime via the web UI.

Rate Limits

Fair usage limits to ensure canister stability:

  • Upload: 100 requests/minute per API key
  • Download: 1000 requests/minute (public files)
  • List/Search: 50 requests/minute
  • Chunk size: Max 2MB per chunk

Contact us for higher limits or enterprise plans.

Frequently Asked Questions

Everything you need to know about ICBucket. Can't find an answer? Contact us.