Skip to content

Qrati SDK

Your UI. The Qrati platform underneath — headless, starting with uploads.

import { Card, CardGrid } from ‘@astrojs/starlight/components’;

Qrati Connect embeds a complete, ready-made gallery UI in minutes. @qratilabs/qrati-sdk is the same platform without the widget — the same operations, called directly, so you own the UI end to end: a custom drop zone, your own design system, a gallery that looks nothing like Connect’s, or an upload triggered from a flow the widget doesn’t cover.

It’s headless in the same sense any API-first product is: the platform does the work (storage, processing, ownership, moderation), your code does the rendering. Uploads are live today; the rest of Connect’s surface — gallery browsing, curation, reactions, leaderboards — is being built out the same way, one piece at a time. See the Roadmap for the full picture.

@qratilabs/qrati-sdk is TypeScript, but Qrati isn’t a TypeScript-only platform — underneath every SDK is the same REST API, which any language can already call directly. TypeScript is just the first official, ergonomic wrapper; more languages are planned, not a TypeScript-forever decision.

Direct-to-S3 upload is really create → PUT → complete. `upload()` hides all three behind a single `await`, with progress. Plain async functions — call it from React, Solid, Svelte, vanilla JS, or Node. Identical either way. One key per organization, safe to ship in your frontend bundle. Security comes from your domain allowlist. Every request and response is a typed interface — see the full [API Reference](/docs/reference/). One isomorphic package, no `/server` entry point. The same call runs client-side or in a backend job — see [Browser & server](/docs/guides/environments/).
import { createQrati } from '@qratilabs/qrati-sdk';
const qrati = createQrati(API_KEY, { uid, fname, lname });
const { contentId } = await qrati.upload({
eventId,
file,
onProgress: ({ percent }) => setProgress(percent),
});

Continue with Getting started, or see the Roadmap for what’s shipped versus what’s next.