Appearance
Key–value store Beta
A durable, workspace-scoped key–value store: small pieces of named data your platform functions and integrations can read and write. Think of it as a simple, always-available notepad tied to your workspace: for a last-seen timestamp, a cursor, a cached token, a feature flag.
Beta
The KV storage engine and its access rules are built and in use internally. The public /v1/kv HTTP endpoint is not yet exposed; the shape documented here is the contract it will ship with. Track progress in the changelog.
- Base path (planned):
https://ws.latency.app/v1/kv - Auth: account (API key)
- Isolation: every key is scoped to your workspace; you can never read or write another workspace's keys.
- Durability: values persist until you delete them (no expiry by default).
Model
A key–value entry is just a string key mapped to a string value, plus a revision number that increments on every write, useful for detecting concurrent updates.
json
{
"key": "last-run",
"value": "2026-07-24T18:00:00Z",
"revision": 7,
"createdAt": "2026-07-24T18:00:00Z"
}Operations
| Operation | Description |
|---|---|
get(key) | Return the entry, or nothing if the key is unset or was deleted. |
put(key, value) | Create or overwrite a key; returns the new revision. |
delete(key) | Remove a key. A subsequent get returns nothing. |
keys() | List every key in your workspace. |
Limits
| Limit | Value |
|---|---|
| Maximum key length | 512 characters |
| Maximum value size | 64 KB (65,536 bytes) |
| Scope | Per workspace |
Exceeding a limit returns an error rather than truncating your data.
Semantics worth knowing
- A deleted key reads as absent, not as an empty string.
geton a deleted or never-set key returns nothing at all, so your code can reliably tell "no value" from "the value is""". - Writes are last-writer-wins. The returned
revisionlets you detect when something changed underneath you. - Keys are workspace-relative. You use short keys like
last-run; the workspace scoping is applied for you and is not part of the key you pass.
Intended uses
- Persist state between scheduled runs of a platform function.
- Cache a small upstream response so you don't refetch it every check.
- Hold a lightweight, operator-editable flag your automation reads.
For platform-wide operational toggles managed by administrators, KV is not the right tool; those live in the internal run-control plane, not tenant storage.
Related
- Platform overview: how the primitives fit together
- Authentication: getting an API key