Docs / Platform

KV store

A small per-project key/value store. Reach it with a normal API key (scope-checked as kv:*), or from inside an edge function via the auto-injected token — no credential to manage.

per-projectedge-nativevalues ≤ 256 KB

Endpoints

PUT /v1/kv/{key} kv:write

Write a value (raw request body). Limits: key ≤ 512 chars, value ≤ 256 KB.

curl
curl -X PUT https://api.ollanode.com/v1/kv/feature-flags/beta \
  -H "Authorization: Bearer $OLLANODE_API_KEY" --data 'on'
GET /v1/kv/{key} kv:read

Read a value (raw string body; 404 if missing).

curl
curl https://api.ollanode.com/v1/kv/feature-flags/beta \
  -H "Authorization: Bearer $OLLANODE_API_KEY"
GET /v1/kv?prefix=… kv:read

List keys under a prefix (up to 1000).

curl
curl "https://api.ollanode.com/v1/kv?prefix=feature-flags/" \
  -H "Authorization: Bearer $OLLANODE_API_KEY"
DELETE /v1/kv/{key} kv:write

Delete a key.

From an edge function

Functions get a scoped KV binding automatically — read and write with the injected OLLANODE_KV_URL + OLLANODE_KV_TOKEN and the x-kv-token header.

edge function
// Inside an edge function — OLLANODE_KV_URL + OLLANODE_KV_TOKEN are auto-injected,
// scoped to this function's project. No key management.
const base = Deno.env.get("OLLANODE_KV_URL");
const tok  = Deno.env.get("OLLANODE_KV_TOKEN");
await fetch(base + "/visits", { method:"PUT", headers:{ "x-kv-token": tok }, body:"42" });
const n = await (await fetch(base + "/visits", { headers:{ "x-kv-token": tok } })).text();
Use cases: per-project feature flags read at the edge; small config a function and the dashboard both touch; per-key counters and rate-limit state. Limits: keys ≤ 512 chars, values ≤ 256 KB, list returns up to 1000 keys.