Built on Cloudflare

Object storage with a developer-first DX.

One API key, a typed SDK, signed-URL uploads, resumable multipart, and webhooks — backed by Cloudflare R2.

API Reference →

Every endpoint, generated from the OpenAPI spec.

Dashboard →

Manage buckets, API keys, and usage.

Quickstart

import { Storage } from "@product/storage";

const storage = new Storage({ apiKey: "sk_live_…" });

await storage.buckets.create({ name: "avatars", visibility: "public" });

await storage.objects.upload({
  bucket: "avatars",
  key: "users/42.png",
  body: bytes,
  contentType: "image/png",
});

// browser direct upload — no bytes through your server
const { url } = await storage.objects.createSignedUrl({
  bucket: "avatars", key: "users/42.png", method: "PUT", expiresIn: "15m",
});