Buckets
ICBucket
ICPay Cloud guide
On-chain encrypted file storage
ICBucket
On-chain encrypted file storage
ICBucket
On-chain encrypted file storage
API Reference
Detailed endpoint reference for uploading, fetching, listing, and managing on-chain bucket assets.
Explore the full list of HTTP endpoints and actor methods supported by ICBucket.
GET /cloud/{bucketName}/{filePath}
Host: cdn.icpay.appReturns the binary file body with original Content-Type and HTTP caching headers.
PUT /api/v1/bucket/{bucketName}/files/{filePath}
Host: cdn.icpay.app
Authorization: Bearer <API_KEY>
Content-Type: <MIME_TYPE>
<binary file content>Payload limit: 2MB. For larger files, use chunked session endpoints below.
POST /api/v1/bucket/{bucketName}/upload/startPUT /api/v1/bucket/{bucketName}/upload/{sessionId}/chunk/{chunkIndex}POST /api/v1/bucket/{bucketName}/upload/{sessionId}/completeGET /api/v1/bucket/{bucketName}/files?prefix=assets/&page=1&pageSize=10
Host: cdn.icpay.app
Authorization: Bearer <API_KEY>import { prepareUploadFile } from "@/lib/bucket/prepareUpload"
import { uploadChunkCount, readFileChunk } from "@/lib/bucket/uploadChunk"
import { storeFile } from "@/services/bucket/store-file"
import { getWalletActor } from "@/services/wallet"
const prepared = await prepareUploadFile(file)
await storeFile(identity, prepared.file, {
bucketId: "icp",
path: prepared.path,
contentType: prepared.contentType,
apiKey: "icp_cloud_…",
})
const actor = await getWalletActor(identity)
const begin = await actor.beginFileUpload(
"icp", "/big.zip", "application/zip", BigInt(file.size), ["icp_cloud_…"]
)
if ("err" in begin) throw new Error(begin.err)
const uploadId = begin.ok
const total = uploadChunkCount(file.size)
for (let i = 0; i < total; i++) {
const bytes = await readFileChunk(file, i, total)
await actor.uploadFileChunkIndexed(uploadId, BigInt(i), bytes)
}
await actor.completeFileUpload(uploadId, ["icp_cloud_…"])
await actor.getUpload(uploadId)
await actor.cancelUpload(uploadId)