Repozit Documentation v1

The Developer Asset Platform

Introduction

Repozit is a developer-first asset platform for storing, organizing, and accessing files and project assets through APIs, SDKs, and the CLI.

Whether you're building AI applications, SaaS products, data pipelines, or internal tools, Repozit provides a single place to keep the files your applications depend on and a typed SDK to work with them from code.

What you can do today

  • Upload files and stream large uploads
  • Organize assets into folders
  • List, retrieve, download, rename, and delete files
  • Create, rename, and delete folders
  • Read a complete folder and file tree
  • Authenticate with API keys
  • Verify the account behind an API key

Store any file your application needs

Datasets, model artifacts, builds, documents, media, archives, and project files — anything your application needs to persist and access from code.

Media

Images, video, and audio assets

Documents

PDFs, office documents, text files

Build Artifacts

Binaries, bundles, release archives

Developer Assets

Model weights, datasets, project files

Quickstart

Get connected in three steps. The SDK is published on npm as @repozit/sdk.

1. Install

npm install @repozit/sdk

2. Configure your credentials

Create an API key from your Repozit dashboard, then set the environment variables:

REPOZIT_BASE_URL=https://your-repozit-url
REPOZIT_API_KEY=rp_live_your_api_key

3. Connect

import "dotenv/config";
import { RepozitClient } from "@repozit/sdk";

const client = new RepozitClient(
  process.env.REPOZIT_BASE_URL!,
  process.env.REPOZIT_API_KEY!
);

const user = await client.whoAmI();

console.log(user);

Run it and you're connected. That's the whole flow.

Authentication

The SDK authenticates requests using a Repozit API key, sent as a standard Bearer token:

Authorization: Bearer rp_live_your_api_key

The SDK handles this automatically. Every request made through RepozitClient is signed with your API key.

Never expose API keys in client-side code.

Use environment variables in local development and your platform's secret store in production.

API Keys

API keys are created from your Repozit dashboard and are scoped to your account.

rp_live_89fae28a...

Treat them like passwords: store them in environment variables, never commit them, and rotate them if they leak.

SDK

The official Repozit SDK for JavaScript and TypeScript.

Install

npm install @repozit/sdk

Initialize the client

import { RepozitClient } from "@repozit/sdk";

const client = new RepozitClient(
  process.env.REPOZIT_BASE_URL!,
  process.env.REPOZIT_API_KEY!
);

Other languages

Additional SDKs are planned. JavaScript and TypeScript are available today.

Files

Work with files stored in Repozit.

List files

const result = await client.listFiles({
  page: 1,
  limit: 50,
  search: "model"
});

console.log(result.files);
console.log(result.total);

Get file information

const file = await client.getFileInfo(fileId);

console.log(file);

Download a file

const downloaded = await client.downloadFile(fileId);

console.log(downloaded.name);
console.log(downloaded.buffer);

Rename a file

await client.renameFile(fileId, "new-name.zip");

Delete a file

await client.deleteFile(fileId);

Folders

Organize your assets into folders.

Create a folder

const folder = await client.createFolder("datasets");

console.log(folder);

Optionally nest a folder inside another:

const folder = await client.createFolder(
  "training",
  parentFolderId
);

List folders

const folders = await client.listFolders();

for (const folder of folders) {
  console.log(folder.name);
}

Get folder information

const folder = await client.getFolderInfo(folderId);

console.log(folder);

Rename a folder

await client.renameFolder(folderId, "training-data");

Delete a folder

await client.deleteFolder(folderId);

Uploads

Uploads use an upload-session flow. First request a session, then stream the file to the returned upload URL.

1. Request an upload session

const session = await client.requestUpload({
  fileName: "model.zip",
  fileSize: 1024,
  mimeType: "application/zip",
  folderId
});

console.log(session.uploadId);
console.log(session.assetId);
console.log(session.uploadUrl);

2. Stream the file

import { createReadStream, statSync } from "node:fs";

const filePath = "./model.zip";
const fileSize = statSync(filePath).size;

const session = await client.requestUpload({
  fileName: "model.zip",
  fileSize,
  mimeType: "application/zip"
});

const result = await client.uploadFile(
  session.uploadUrl,
  createReadStream(filePath),
  fileSize
);

console.log(result);

Upload progress

Streaming uploads accept a progress callback, useful for CLIs and interactive tools:

const result = await client.uploadFile(
  session.uploadUrl,
  createReadStream(filePath),
  fileSize,
  {
    onProgress(uploaded, total) {
      const percentage = (uploaded / total) * 100;
      console.log(`${percentage.toFixed(1)}%`);
    }
  }
);

Folder Tree

Retrieve the complete folder and file tree in a single request.

const tree = await client.getTree();

console.log(tree.folders);
console.log(tree.files);

Useful for building file browsers, dashboards, and any interface that needs to display the full asset structure.

Account

Verify the account associated with an API key.

const user = await client.whoAmI();

console.log(user);

Useful for verifying credentials before running an operation, and for displaying the authenticated account in CLI tools and dashboards.

CLI

The Repozit CLI is built on the same API infrastructure as the SDK.

$repozit login
$repozit upload ./model.zip
$repozit deploy

CLI installation and published package details are coming soon.

Guides

Upload your first file

import "dotenv/config";
import { createReadStream, statSync } from "node:fs";
import { RepozitClient } from "@repozit/sdk";

const client = new RepozitClient(
  process.env.REPOZIT_BASE_URL!,
  process.env.REPOZIT_API_KEY!
);

const filePath = "./hero.png";
const fileSize = statSync(filePath).size;

const session = await client.requestUpload({
  fileName: "hero.png",
  fileSize,
  mimeType: "image/png"
});

const result = await client.uploadFile(
  session.uploadUrl,
  createReadStream(filePath),
  fileSize
);

console.log(result);

Organize files with folders

const folder = await client.createFolder("datasets");

const session = await client.requestUpload({
  fileName: "dataset.csv",
  fileSize,
  mimeType: "text/csv",
  folderId: folder.id
});

Build with Repozit

Use the SDK anywhere you need a durable place for files:

  • CI/CD asset storage
  • Dataset and model artifact pipelines
  • Build artifact storage
  • Internal tooling
  • Automation and scripts

Error Handling

SDK requests throw errors when an API request fails.

try {
  const file = await client.getFileInfo(fileId);

  console.log(file);
} catch (error) {
  console.error("Repozit request failed:", error);
}

Authentication failures, missing resources, permission errors, and invalid requests are all surfaced as thrown errors so applications can handle them explicitly.

Security

Repozit uses:

  • API key authentication with Bearer tokens
  • HTTPS for all API traffic
  • Signed URLs for asset access
  • Server-side access to Repozit resources

Additional controls — scoped keys, IP restrictions, and advanced audit logs — are planned.

Best Practices

  • Keep API keys server-side.
  • Use environment variables in development and a secret store in production.
  • Use folders to organize files by project or purpose.
  • Use the SDK instead of manually constructing API requests.
  • Use upload sessions for file uploads.
  • Never log API keys.

Roadmap

Capabilities planned for future versions of Repozit.

Coming soon

  • Additional language SDKs
  • Webhooks
  • Asset versioning
  • Bulk uploads
  • Scoped API keys

Planned

  • Asset transformations
  • Advanced metadata
  • Search
  • Team features
  • Audit logs

Future

  • Edge delivery network
  • Asset pipelines
  • VS Code extension
  • MCP server
  • CLI plugins

Product Vision

Repozit isn't just cloud storage. It's a Developer Asset Platform — a single place for the files, datasets, builds, and artifacts that power modern software.

Mission: Give developers a place where project assets are first-class — store them, organize them, version them, and access them from code.