Rekalldocs
API Reference

API overview

The Rekall REST API — base URLs, auth, versioning, and the endpoint map. Generated faithfully from the OpenAPI 3.1 spec.

The Rekall REST API is JSON over HTTP, latency-first. The same API is served by the managed cloud and by an enterprise self-hosted binary (rekall serve) — only the base URL changes.

Source of truth

Every schema, example, and error on these pages is transcribed from the OpenAPI 3.1 spec (openapi.yaml), published at /v1/openapi.json. Both SDKs are generated from it plus a handwritten ergonomic layer, so drift is impossible.

Base URL

EnvironmentBase URL
Managed cloudhttps://api.rekall.sh/v1
Enterprise self-hosted (rekall serve)e.g. https://rekall.internal.acme.com/v1

The path is version-prefixed (/v1); additive changes never break clients.

Authentication

All endpoints except GET /health require a per-project API key as a bearer token:

Authorization: Bearer rk_live_8c2hd0…

Create keys in the dashboard (managed cloud), or with rekall keys create on an enterprise self-hosted deployment. Enterprise deployments may run with auth disabled (rekall serve --no-auth) for local development only.

Authenticated request
curl https://api.rekall.sh/v1/stores \
  -H "Authorization: Bearer $REKALL_API_KEY"

Endpoint map

MethodPathDescription
POST/storesCreate a store
GET/storesList stores
GET/stores/{store}Get a store
DELETE/stores/{store}Delete a store
POST/stores/{store}/documentsIngest documents
GET/stores/{store}/documentsList documents
GET/stores/{store}/documents/{id}Get document info
DELETE/stores/{store}/documents/{id}Delete a document
POST/stores/{store}/searchSearch
GET/healthHealth check

Stores are addressable by name or id

The {store} path parameter accepts a store name or id everywhere — e.g. /v1/stores/contracts/search. Nobody should have to look up an id to run a query.

Conventions

  • latency_ms on every search response — engine-only, measured server-side.
  • Idempotency: the Idempotency-Key header is supported on ingest; replays of the same key return the original response without re-ingesting.
  • Pagination: list endpoints take limit + cursor and return an opaque next_cursor (null when exhausted).
  • Errors are structured and prescriptive — every error body carries a type, a message, and a fix. See the Errors page.

Next

On this page