Overview
Synapse SDK provides comprehensive storage operations for Filecoin Onchain Cloud. This guide covers uploading files, downloading data, and managing storage contexts.Upload Flow
The SDK uses a store → pull → commit pipeline for multi-copy durability:import { Synapse } from '@filoz/synapse-sdk'
import { http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { calibration } from '@filoz/synapse-core/chains'
const account = privateKeyToAccount('0x...')
const synapse = Synapse.create({
chain: calibration,
transport: http(),
account,
})
import fs from 'fs'
import { Readable } from 'stream'
const fileStream = Readable.toWeb(fs.createReadStream('photo.jpg'))
const result = await synapse.storage.upload(fileStream, {
callbacks: {
onProviderSelected: (provider) => {
console.log(`Selected SP ${provider.id}`)
},
onProgress: (bytesUploaded) => {
console.log(`Uploaded: ${bytesUploaded} bytes`)
},
onStored: (providerId, pieceCid) => {
console.log(`Stored on SP ${providerId}: ${pieceCid}`)
},
onPiecesConfirmed: (dataSetId, providerId, pieces) => {
console.log(`Confirmed on SP ${providerId}`)
},
},
})
console.log(`PieceCID: ${result.pieceCid}`)
console.log(`Copies: ${result.copies.length}`)
Upload Options
Multi-Copy Storage
By default, files are replicated to 2 providers for redundancy:Specify Providers
Use specific storage providers:Enable CDN
Enable FilBeam CDN for faster retrieval:Preflight Checks
Check costs and allowances before uploading:Storage Context
For advanced control, use storage contexts:Metadata
Attach metadata to uploads:- Maximum 5 metadata keys per piece
- Keys: max 32 characters
- Values: max 128 characters
Download Options
Download from Specific Provider
Download with CDN
Error Handling
Size Limits
Files exceeding the maximum size should be split into multiple uploads.
Best Practices
Use Streaming
Stream large files to minimize memory usage
Check Preflight
Always run preflight checks for cost estimates
Multi-Copy
Use at least 2 copies for data redundancy
Handle Failures
Check result.failures for partial upload issues
Next Steps
Multi-Copy Storage
Learn advanced multi-provider upload patterns
Split Operations
Use store/pull/commit for batch uploads