Build with
your own tools.

A native CLI, a small SDK and the S3 API.

A small SDK. A clear API.

Install the SIS3 JavaScript SDK in your server application. Keep credentials on the server; never bundle secret keys into browser code.

npm / server-side JavaScript
npm install @sis3/sdk

Give every object a key.

Use a bucket for your project and a stable object key for each file. Environment variables supply the account credentials.

JavaScript / Node.js
import { SIS3 } from '@sis3/sdk';
import { readFile } from 'node:fs/promises';

const storage = new SIS3({
  endpoint: 'https://s3.sis3.si',
  accessKeyId: process.env.SIS3_ACCESS_KEY_ID,
  secretAccessKey: process.env.SIS3_SECRET_ACCESS_KEY,
});

await storage.objects.put({
  bucket: 'my-project',
  key: 'images/original.jpg',
  body: await readFile('./original.jpg'),
  contentType: 'image/jpeg',
});

Share a file, not your credentials.

Generate a short-lived URL on your server. Return the URL to an authorised client and keep the signing credentials private. Treat the URL itself as a temporary credential.

JavaScript / five-minute download URL
const url = await storage.objects.presign({
  bucket: 'my-project',
  key: 'images/original.jpg',
  method: 'GET',
  expiresIn: 300,
});

Handle the edges.

For 429 and transient 5xx responses, retry with bounded exponential backoff. Do not retry an authentication error unchanged. Log request IDs and operation names; redact keys, tokens and private object paths.

Your data deserves
a good home.

Find your fit

Early access, by invitation.
hello@sis3.si