Getting started
DevStorage is file upload infrastructure backed by Cloudflare R2. Your server (or ours) issues short-lived presigned URLs, the file bytes go straight from the client to storage, and DevStorage verifies and records the result — zero egress fees, zero bandwidth through your servers.
1. Create a project
2. Get an API key
Open your project → API Keys and create a key. Keys look like dsk_live_… and are shown once, so store yours in your environment:
DEVSTORAGE_API_KEY=dsk_live_xxxxxxxxxxxxxxxxDEVSTORAGE_API_KEY automatically; the Node SDK takes it as a constructor option. Both keep it server-side.3. Pick an integration
Next.js
Typed upload routes, prebuilt UploadButton / UploadDropzone components, and React hooks. The fastest path for web apps.
Node.js SDK
Upload, list, and delete files from any Node.js backend — queues, cron jobs, or servers that already hold the file bytes.
REST API
The raw HTTP endpoints behind both SDKs, for every other language and platform.
How uploads work
Every integration uses the same three-step flow:
- Presign — your server asks DevStorage for a presigned URL, after checking whatever you like (auth, file type, size).
- Upload — the client
PUTs the file bytes directly to Cloudflare R2. Your server never touches them. - Complete — DevStorage verifies the object, records the file, meters usage, and fires your webhook.
Files of 100 MiB or more are automatically chunked and uploaded through the multipart API, so large uploads don't time out and parts can transfer in parallel.