Tanstack Start

Projects

Group uploads by app, environment, customer, or agent workflow.

Projects are lightweight containers for files. Use them when one API key needs to serve multiple apps, environments, customers, or AI-agent workflows without mixing their file lists together.

Every account gets a default project. Existing files without a project are shown there, and new SDK calls that omit projectId keep working by using that default.

Create a project

import { S3Delivery } from "s3delivery";

const s3 = new S3Delivery();
const project = await s3.createProject({ name: "Production app" });

Upload into a project

const file = await s3.upload(blob, {
  name: "report.pdf",
  visibility: "private",
  projectId: project.id,
});

The bytes still go directly to your bucket through presigned URLs. The project only changes the metadata grouping and the organized bucket key prefix for new uploads.

List project files

const { projects } = await s3.listProjects();
const { files } = await s3.list({ projectId: projects[0].id });

REST API

curl https://api.s3.delivery/v1/projects \
  -H "x-api-key: $S3DELIVERY_TOKEN"

curl https://api.s3.delivery/v1/files?projectId=proj_xxx \
  -H "x-api-key: $S3DELIVERY_TOKEN"

On this page