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 assetsDocuments
PDFs, office documents, text filesBuild Artifacts
Binaries, bundles, release archivesDeveloper Assets
Model weights, datasets, project filesQuickstart
Get connected in three steps. The SDK is published on npm as @repozit/sdk.
1. Install
npm install @repozit/sdk2. 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_keyThe 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/sdkInitialize 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 loginrepozit upload ./model.ziprepozit deployCLI 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.
Repozit