Documentation

Ship in five minutes.

Sign up, grab your keys, paste the snippet. Web app or mobile app — if you can make an HTTP call, you already know enough.

Get set up

Pick your track

Web or mobile — the first two steps are the same, then choose the SDK that fits your app.

Step 1 — Sign up

Create your account

An email address and you're in — first seat is $1, no credit card to start. Your backend is provisioned automatically the moment your account exists.

Step 2 — API keys

Grab your keys

Open your project dashboard and copy the API keys. Each project gets its own isolated keys — rotate them any time from the dashboard. Keys are scoped to your data and nothing else.

Track A — Web apps

Drop it into your frontend

Any framework — React, Next.js, Vue, or plain JavaScript. Auth, data, and realtime subscriptions over HTTPS:

// npm i invisibledb
import { InvisibleDB } from 'invisibledb';

const db = new InvisibleDB({
  baseUrl: 'https://your-app.invisibledb.app',
  apiKey: 'YOUR_API_KEY',
});

// Auth + realtime
await db.auth.signIn('you@example.com', 'password');
const messages = await db.collection('messages').getList();
db.collection('messages').subscribe((e) => {
  console.log('live update:', e.action);
});
Track B — Mobile apps

Built for the mobile situation

Mobile lives on flaky connections and backgrounded processes. The Dart SDK is first-class — offline-tolerant realtime, auth that survives app restarts, and the same one-call vector search for on-device AI features. React Native, Swift, and Kotlin go through plain REST below:

// pubspec.yaml
dependencies:
  invisibledb: ^1.0.0

// main.dart
import 'package:invisibledb/invisibledb.dart';

final db = InvisibleDB(
  baseUrl: 'https://your-app.invisibledb.app',
  apiKey: 'YOUR_API_KEY',
);

// Auth
await db.auth.signIn('you@example.com', 'password');

// Realtime collection
final messages = await db.collection('messages').getList();
db.collection('messages').subscribe((e) {
  print('live update: ${e.action}');
});
Universal — REST API

Plain HTTP when you need it

Every SDK call maps to a REST endpoint. Anything that speaks HTTP — Swift, Kotlin, curl, your CI — can talk to your backend:

# List records
curl https://your-app.invisibledb.app/api/collections/messages/records \
  -H "Authorization: Bearer YOUR_API_KEY"

# Create a record
curl -X POST https://your-app.invisibledb.app/api/collections/messages/records \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "hello from curl"}'
Universal — Vector search

AI search without a second bill

Semantic search and RAG are built into every seat. Embed your documents once, then query with one authenticated call — no Pinecone account, no separate infrastructure:

# Semantic search over your collection
curl -X POST https://your-app.invisibledb.app/api/vector/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "collection": "docs",
    "vector": [0.12, -0.44, 0.91],
    "limit": 5
  }'

Vectors live alongside your data in the same SQLite files — which means they leave with you, too.

Want to touch it before you sign up? Fire real requests at a live backend in the API playground, or watch semantic search work in the vector search demo.

Ready to build?

First seat is $1. The docs are short because the product is simple.

Get started