SA Storage

Cloudflare R2 control panel

Every file in your bucket.
One precise interface.

Browse, upload, and share R2 objects from the dashboard. Give each app its own service and least-privilege API token, then watch exactly how they use it.

Built for the people who actually ship files.

  • Browse like a file system

    Folders from key prefixes, breadcrumbs, search, previews for images, video, PDFs and text.

  • Drop anything, anywhere

    Drag files or whole folders onto the page. Parallel uploads with live progress and retry.

  • Services keep things apart

    Every app gets its own key prefix, so a blog CDN and a backup job never collide.

  • Least-privilege tokens

    Read-only, upload-only, or full access — scoped to one service. Rotate without downtime.

  • Usage you can read

    Requests and transfer over time, broken down by service, token, and route.

  • Public URLs, cached

    Every object is served at /files/<key> with ETags and cache headers out of the box.

One request to upload.

Tokens carry their service and prefix, so integrations send just the file. The response tells you exactly where it landed — and it's live at a public URL.

External API guide
upload.sh
curl -X POST "$SA_URL/api/files" \
  -H "Authorization: Bearer $SA_TOKEN" \
  -F "file=@./hero.png" \
  -F "key=images/hero.png"

# → { "object": { "key": "blog/images/hero.png", ... } }
# → served at $SA_URL/files/blog/images/hero.png