Upload & Download¶
Transfer files between your local system and cloud storage.
Downloading Files¶
Single File Download¶
- Navigate to the file in the File Browser
- Click the Download button next to the file
- The file downloads directly to your browser's download location
Download via CLI¶
For larger files or batch downloads, use the CLI:
# Download a single file
iflow files download -p PROJECT_ID path/to/file.txt ./local/
# Download a directory
iflow files download -p PROJECT_ID path/to/folder/ ./local/ --recursive
Uploading Files¶
Upload Permissions
Upload requires credentials with write access (Storage Object Admin for GCS).
Browser Upload¶
- Navigate to the target folder
- Click Upload button
- Select files from your system
- Wait for upload to complete
Upload via CLI¶
For larger files or batch uploads:
# Upload a single file
iflow files upload -p PROJECT_ID ./local/file.txt path/to/
# Upload a directory
iflow files upload -p PROJECT_ID ./local/folder/ path/to/ --recursive
REST API (Signed URLs)¶
All file transfers use a two-step signed URL flow: first request a signed URL from iFlow, then transfer directly with cloud storage. Signed URLs are valid for 15 minutes.
Download via API¶
# Step 1: Get signed download URL
curl -s "https://files.iflow.intelliseq.com/api/v1/files/download-url?project_id=$PROJECT_ID&path=results/report.pdf" \
-H "Authorization: Bearer $TOKEN" | jq .
# Returns: {"url": "https://storage.googleapis.com/...", "expires_in_seconds": 900}
# Step 2: Download from signed URL (no auth needed)
SIGNED_URL=$(curl -s "https://files.iflow.intelliseq.com/api/v1/files/download-url?project_id=$PROJECT_ID&path=results/report.pdf" \
-H "Authorization: Bearer $TOKEN" | jq -r .url)
curl -o report.pdf "$SIGNED_URL"
Upload via API¶
# Step 1: Get signed upload URL
curl -s -X POST "https://files.iflow.intelliseq.com/api/v1/files/upload-url?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"path": "samples/S1/uploads/sample.vcf.gz", "content_type": "application/gzip"}' | jq .
# Returns: {"url": "https://storage.googleapis.com/...", "expires_in_seconds": 900}
# Step 2: Upload to signed URL (no auth needed)
curl -X PUT "$SIGNED_URL" \
-H "Content-Type: application/gzip" \
--data-binary @sample.vcf.gz
Benefits¶
- Faster transfers (direct to/from cloud storage)
- Supports resume for large files
- Time-limited access (15 minutes)
CLI with Signed URLs¶
# Generate a download URL (valid for 1 hour)
iflow files url -p PROJECT_ID path/to/file.txt --expires 3600
Best Practices¶
- Use CLI for large files - Browser uploads have size limits
- Organize in folders - Keep data structured by project/experiment
- Check permissions - Ensure credentials have appropriate access level
Next Steps¶
- CLI Commands - Full CLI reference
- Browsing Files - Navigate your storage