html.surf
Sign in
Docs /Uploading Products Dashboard →

Uploading Products

Best practices for organising, uploading, and managing your digital products on Continuata.

Preparing Your Files

Proper file organisation before upload ensures your customers have the best experience.

Recommended Folder Structure

epic-drum-kit-v1/
├── README.txt
├── samples/
│   ├── kicks/
│   │   ├── kick_01.wav
│   │   └── kick_02.wav
│   └── snares/
│       ├── snare_01.wav
│       └── snare_02.wav
├── loops/
│   └── full_beat.wav
└── license.txt

✓ Best Practices

  • Logical folder hierarchy
  • Descriptive file names
  • Include README files
  • Add license information
  • Consistent naming conventions

✗ Avoid

  • Special characters in names
  • Very deep folder nesting
  • Empty folders
  • Hidden system files
  • Temporary files (.tmp, .cache)

Upload Methods

Dashboard Upload (Recommended)

  1. Go to your Continuata dashboard and open your product
  2. Click the Versions tab
  3. Click Select Folder to Upload and choose your product folder
  4. Wait for hashing, packing, uploading, and verification to complete. You can pause and resume at any point — speed and ETA are shown throughout.
  5. Click Set Active on the version to make it available for download

API Upload

For automated workflows, use the upload API:

// 1. Check which packs already exist (skip re-uploading unchanged content)
POST /api/pack-check
{
  "vendorId": "audio-company",
  "packHashes": ["sha256_pack1", "sha256_pack2", ...]
}
// Response: { "existing": ["sha256_pack1"] }

// 2. Upload each new pack (raw bytes, ~8MB each)
PUT /api/blob/{vendorId}/packs/pack-{sha256}
Content-Type: application/octet-stream
[raw pack bytes]

// 3. Upload the manifest (describes all files, packs, and segments)
POST /api/manifest
{
  "vendorId": "audio-company",
  "productId": "epic-drums-v1",
  "productHash": "abc123...",
  "manifest": { "v": 3, "packs": [...], "files": [...] }
}

Version Management

Each product can have multiple versions with different activation states:

Version States

Processing

Files being uploaded/verified

Ready

Available for activation

Active

Currently served to users

Setting a Version Active: Only one version per product can be active at a time. Clicking Set Active on a version immediately makes it available for new download tokens.

File Processing

The upload flow runs five stages in order. Each one shows live progress in the dashboard.

1

Scanning

Your folder is walked and each file is enumerated. Hidden files and system folders (__MACOSX, .DS_Store, etc.) are filtered out.

2

Hashing

Every file is SHA-256-fingerprinted in the browser and grouped into ~8MB packs. No file is ever split across two packs, preventing write corruption. Each pack is itself hashed with SHA-256 to enable deduplication across versions.

3

Uploading

Packs are stored at vendorId/packs/pack-{sha256}. Before transferring, the server is queried for which packs already exist — only new packs are uploaded.

4

Verifying

All packs (including ones reused from previous versions) are confirmed present in storage before the version is finalised.

5

Finalizing

The signed manifest is written with all file metadata, segment offsets, and pack references. The version then appears in the Version History list, ready to be activated.

Storage Optimization

Automatic Deduplication

Packs are deduplicated across versions. Before uploading, Continuata checks which packs already exist in storage — only packs containing changed or new files need to be transferred:

  • Version 1.0 upload → 150 packs stored
  • Version 1.1 upload → 12 files changed → 3 new packs uploaded
  • ✓ 147 unchanged packs are skipped entirely

Storage Efficiency Tips

  • Use consistent sample rates and bit depths across your library
  • Normalise audio levels before uploading to maximise deduplication
  • Keep common files (READMEs, licenses) identical across products
  • Use lossless formats for master files when possible

Pause & Resume

Uploads can be paused and resumed at any point during the uploading stage. Use the Pause button that appears once the upload begins. Current speed (MB/s) and estimated time remaining are shown throughout.

Because packs are content-addressed, a resumed upload picks up exactly where it left off — any packs already confirmed in storage are not re-transferred.

Troubleshooting Uploads

Upload fails or gets stuck

  • Check your internet connection stability
  • Ensure you haven't exceeded storage limits
  • Try uploading smaller batches of files
  • Clear browser cache and try again

Files missing after upload

  • Check that version status shows "Ready" not "Processing"
  • Verify files weren't filtered out (system files, temp files)
  • Ensure files don't exceed individual size limits
  • Check upload logs in the dashboard

Version won't activate

  • Ensure all files uploaded successfully
  • Check that manifest generation completed
  • Verify product is in "published" status
  • Review any error messages in upload logs

Next Steps: Once your product is uploaded and activated, learn how to create download tokens or set up automated delivery.