Rekalldocs
API Reference

Stores

Named, updatable collections of document encodings. Create, list, get, and delete stores.

Stores are named, updatable collections of document encodings. Cheap to create — use one per corpus or tenant. All endpoints require Authorization: Bearer <key>.

Create a store

POST /v1/stores

Creates a named store. Names are unique per project, 1–64 chars, [a-z0-9-_].

Request body

Prop

Type

Response 201

Returns the Store object.

curl -X POST https://api.rekall.sh/v1/stores \
  -H "Authorization: Bearer $REKALL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "contracts" }'
const store = await rekall.stores.create("contracts");
// or simply: const store = await rekall.store("contracts"); // get-or-create
store = rekall.stores.create("contracts")
# or simply: store = rekall.store("contracts")  # get-or-create
201 Created
{
  "id": "st_8c2hd0",
  "name": "contracts",
  "n_docs": 0,
  "size_bytes": 0,
  "created_at": "2026-07-04T12:00:00Z"
}

409 — store already exists

{ "error": {
  "type": "store_already_exists",
  "message": "A store named 'contracts' already exists.",
  "fix": "Use it directly — stores are addressable by name: POST /v1/stores/contracts/search — or pick a new name."
}}

The SDK helper rekall.store(name) is get-or-create and never raises this.

Other errors: 400 invalid_request, 401 unauthorized. See Errors.


List stores

GET /v1/stores

Returns stores newest first.

Query parameters

Prop

Type

curl https://api.rekall.sh/v1/stores?limit=20 \
  -H "Authorization: Bearer $REKALL_API_KEY"
const { stores, nextCursor } = await rekall.stores.list({ limit: 20 });
page = rekall.stores.list(limit=20)
for s in page.stores:
    print(s.name, s.n_docs)
200 OK
{
  "stores": [
    { "id": "st_8c2hd0", "name": "contracts", "n_docs": 287, "size_bytes": 5242880, "created_at": "2026-07-04T12:00:00Z" }
  ],
  "next_cursor": null
}

Get a store

GET /v1/stores/{store}

Returns the store's details and live stats. {store} is a name or id.

curl https://api.rekall.sh/v1/stores/contracts \
  -H "Authorization: Bearer $REKALL_API_KEY"
const info = await rekall.stores.get("contracts");
console.log(info.nDocs, info.sizeBytes);
info = rekall.stores.get("contracts")
print(info.n_docs, info.size_bytes)
200 OK
{
  "id": "st_8c2hd0",
  "name": "contracts",
  "n_docs": 287,
  "size_bytes": 5242880,
  "created_at": "2026-07-04T12:00:00Z"
}

Errors: 404 store_not_found, 401 unauthorized.


Delete a store

DELETE /v1/stores/{store}

Deletes the store and all documents in it. Irreversible.

curl -X DELETE https://api.rekall.sh/v1/stores/contracts \
  -H "Authorization: Bearer $REKALL_API_KEY"
await rekall.stores.delete("contracts");
rekall.stores.delete("contracts")

Returns 204 No Content on success. Errors: 404 store_not_found, 401 unauthorized.

On this page