Start with install notes or jump straight into the API.

API

Namespace metadata

Request

GET /v2/namespaces/products/metadata
{
  // Proxied from Turbopuffer verbatim
  "schema": { },
  "approx_row_count": 12500,
  "approx_logical_bytes": 48800000,
  "created_at": "2026-03-15T10:30:45Z",
  "updated_at": "2026-05-12T18:49:00Z",
  "last_write_at": "2026-05-12T18:48:30Z",
  "index": { "status": "up-to-date" },

  // Layer enhancement
  "layer": {
    "stable_as_of": 1715600400000,
    "is_stable": true
  }
}

The layer block

FieldMeaning
stable_as_ofEpoch-ms watermark from the most recent stable poll. Null on cold start before the watcher has observed a stable namespace.
is_stableWhether the most recent poll observed index.status == "up-to-date". False on cold start, true once the watcher catches up.

is_stable is the current signal — it drives the per-query filter-skip decision on the query path. stable_as_of is the historical watermark — the cut a filtered query would apply.

For snapshot history derived from these freshness signals, see Snapshots.

List namespaces

GET /v2/namespaces is a Layer-only augmented listing. It pages the upstream namespace list and enriches each row with the same freshness and cache signals surfaced above. It is the surface the dashboard’s inventory view reads.

GET /v2/namespaces?prefix=prod&page_size=100
{
  "namespaces": [
    {
      "name": "products",
      "row_count": 12500,
      "size_bytes": 48800000,
      "stable_as_of_ms": 1715600400000,
      "is_stable": true,
      "cache_state": {"state": "warm", "warm_inflight": false},
      "last_write_ms": 1715600399000,
      "shadow": false,
      "labels": {}
    }
  ],
  "next_cursor": "..."
}
Query paramPurpose
prefixRestrict to namespaces whose name starts with this string.
cursorPagination cursor from a prior next_cursor.
page_sizePage size; the upstream list page is capped at 1000.

A per-row metadata failure degrades to a row with metadata_error set rather than dropping the namespace, so the list stays complete even when a single namespace’s metadata call fails. Responses are served from a short-TTL cache (NAMESPACE_LIST_CACHE_TTL_MS, default 10000) so dashboard polling does not fan out a metadata call per namespace per refresh.

esc