API reference

Tenants

A tenant owns namespaces, keys, usage and a bill.

Kept in this tab only and sent only to api.skimmerdb.com. Requests run against your account and count as usage. Make a key.

List your tenants

GET /v1/tenants

With your role in each (a key sees its own tenant).

Status codes

200OK
401No key, or an unknown or revoked one.
curl -s https://api.skimmerdb.com/v1/tenants \
  -H "Authorization: Bearer $KEY"
from skimmerdb import SkimmerDB
from skimmerdb._api.api.tenants import list_tenants

db = SkimmerDB()  # SKIMMERDB_KEY
answer = list_tenants.sync(client=db.api)
import { SkimmerDB } from "skimmerdb";
import { listTenants } from "skimmerdb/api";

const db = new SkimmerDB(); // SKIMMERDB_KEY
const { data } = await listTenants({ client: db.client });

Create a tenant

POST /v1/tenants

A new tenant you own (a login only: keys belong to one tenant). Act for it with X-Tenant: .

Body application/json

namestringrequired

Answer

idinteger
namestring
planstring
statusstring
rolestring
created_atstring

Status codes

201Created
401No key, or an unknown or revoked one.
403The key's scope or namespaces don't allow it, or the tenant is suspended.
422Invalid: the message says why (code invalid with fields: which input fields; query_timeout: past the plan's time limit; scan_refused: send scan: true).
curl -s https://api.skimmerdb.com/v1/tenants \
  -H "Authorization: Bearer $KEY" \
  -d '{"name":"Acme staging"}'
from skimmerdb import SkimmerDB
from skimmerdb._api.api.tenants import create_tenant
from skimmerdb._api.models import TenantRequest

db = SkimmerDB()  # SKIMMERDB_KEY
answer = create_tenant.sync(client=db.api, body=TenantRequest.from_dict({"name":"Acme staging"}))
import { SkimmerDB } from "skimmerdb";
import { createTenant } from "skimmerdb/api";

const db = new SkimmerDB(); // SKIMMERDB_KEY
const { data } = await createTenant({ client: db.client, body: {"name":"Acme staging"} });
201 answer
{
  "id": 43,
  "name": "Acme staging",
  "plan": "free",
  "status": "active",
  "role": "owner",
  "created_at": "2026-10-06T09:00:00Z"
}

Delete a tenant

DELETE /v1/tenants/{id}

The tenant, its namespaces, keys and usage, for good (its owner; not your account's own tenant).

Parameters

idstring · pathrequired

Status codes

204Done (no body)
401No key, or an unknown or revoked one.
404No such namespace, document, key or tenant (or one this key may not see: the same answer).
409Exists already, or not possible in this state.
curl -s -X DELETE https://api.skimmerdb.com/v1/tenants/t-1 \
  -H "Authorization: Bearer $KEY"
from skimmerdb import SkimmerDB
from skimmerdb._api.api.tenants import delete_tenant

db = SkimmerDB()  # SKIMMERDB_KEY
answer = delete_tenant.sync("t-1", client=db.api)
import { SkimmerDB } from "skimmerdb";
import { deleteTenant } from "skimmerdb/api";

const db = new SkimmerDB(); // SKIMMERDB_KEY
const { data } = await deleteTenant({ client: db.client, path: { id: "t-1" } });