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.

  • Private by default

    Files stay private unless you make them public. Share any file with a signed, time-limited link.

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 who can open it: private, public, or through a signed link.

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