Skip to content
Hoody.com

The KV Store batch endpoints let you read, write, or delete up to 100 keys in a single request. Use them when you need to load or persist many values at once to reduce round trips and overhead. All three endpoints are scoped to a specific SQLite database via the db query parameter and accept an optional table parameter to select a custom table name (default kv_store).

Retrieve values for multiple keys in a single request (max 100 keys).

NameInTypeRequiredDescription
dbquerystringYesDatabase file path
tablequerystringNoCustom table name. Default: "kv_store"
FieldTypeRequiredDescription
keysarray of stringYesKeys to retrieve. 1-100 entries; no entry may be empty or whitespace-only.
{
"keys": ["user:1", "user:2", "user:3"]
}

Values retrieved successfully.

{
"values": {
"user:1": "{\"name\":\"Alice\",\"role\":\"admin\"}",
"user:2": "{\"name\":\"Bob\",\"role\":\"member\"}",
"user:3": null
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-sqlite-1.{server}.containers.hoody.com/api/v1/sqlite/kv/batch/get?db=app.db" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"keys":["user:1","user:2","user:3"]}'

Store values for multiple keys in a single transaction (max 100 items).

NameInTypeRequiredDescription
dbquerystringYesDatabase file path
tablequerystringNoCustom table name. Default: "kv_store"
FieldTypeRequiredDescription
itemsarray of objectYesItems to write in a single transaction. 1-100 entries.

Each item in items has the following fields:

FieldTypeRequiredDescription
keystringYesKey to write. Must not be empty or whitespace-only.
valuestringNoValue to store.
content_typestringNoContent type recorded alongside the value. Defaults to application/octet-stream.
ttlintegerNoLifetime in seconds from now. 0 or omitted stores without expiry; negative is rejected.
{
"items": [
{
"key": "user:1",
"value": "{\"name\":\"Alice\",\"role\":\"admin\"}",
"content_type": "application/json",
"ttl": 3600
},
{
"key": "user:2",
"value": "{\"name\":\"Bob\",\"role\":\"member\"}",
"content_type": "application/json",
"ttl": 3600
},
{
"key": "session:abc123",
"value": "eyJ1c2VyIjogIjEifQ==",
"ttl": 86400
}
]
}

Values stored successfully.

{
"written": 3
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-sqlite-1.{server}.containers.hoody.com/api/v1/sqlite/kv/batch/set?db=app.db" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "key": "user:1", "value": "{\"name\":\"Alice\"}", "content_type": "application/json", "ttl": 3600 },
{ "key": "user:2", "value": "{\"name\":\"Bob\"}", "content_type": "application/json", "ttl": 3600 }
]
}'

Delete multiple keys in a single transaction (max 100 keys).

NameInTypeRequiredDescription
dbquerystringYesDatabase file path
tablequerystringNoCustom table name. Default: "kv_store"
FieldTypeRequiredDescription
keysarray of stringYesKeys to delete. 1-100 entries; no entry may be empty or whitespace-only.
{
"keys": ["user:1", "user:2", "session:abc123"]
}

Keys deleted successfully.

{
"deleted": 3
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-sqlite-1.{server}.containers.hoody.com/api/v1/sqlite/kv/batch/delete?db=app.db" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"keys":["user:1","user:2","session:abc123"]}'